Apa yang dilakukan izin "eksekusi"?

31

Saya terkejut bahwa saya masih tidak mengerti izin "Jalankan" di Linux.

Ada tiga izin - baca, tulis, dan eksekusi. Saya mengerti bahwa membaca dan menulis secara literal, tetapi apa yang dieksekusi sebenarnya lakukan?

Katakanlah saya miliki example.phpdengan izin menjalankan. Apa yang bisa saya lakukan example.php?

pengguna45326
sumber

Jawaban:

32

Pada dasarnya itu berarti Anda dapat memberi tahu sistem operasi untuk menjalankan kode dalam file. Misalnya, jika file tersebut adalah biner yang dapat dieksekusi, akses tulis akan memungkinkan Anda untuk memodifikasinya, akses baca akan memungkinkan Anda untuk melihatnya, tetapi tanpa menjalankan izin Anda tidak akan dapat menjalankan program. Dalam kasus skrip, ini sedikit lebih rumit, karena Anda tidak perlu 'menjalankan' program, Anda bisa membaca isinya menjadi penerjemah, yang memiliki hak eksekusi, tetapi Anda tidak perlu menjalankan izin pada skrip itu sendiri.

Beberapa skrip di Linux sendiri dapat dieksekusi, Anda akan sering melihat garis seperti di atas

#! / bin / bash atau

#! / bin / python

Baris itu memberi tahu kernel bahwa file tersebut dapat dieksekusi dengan memanggil program yang relevan (dan bukan hanya teks). Maka Anda bisa menjalankan skrip seperti

./naskah

bukannya harus melakukan

python ./script

bdk
sumber
Apa artinya ini untuk tipe file non-berbasis teks misalnya. .pngatau .avi?
iono
1
Pada dasarnya sama, ekstensi file tidak masalah. Jika Anda memiliki #!/bin/bashdi awal .avifile Anda , itu akan dieksekusi sebagai bash. Jika format avi nyata, Anda mungkin tidak akan dapat menjalankannya karena menafsirkannya sebagai perintah tidak akan masuk akal dan gagal.
Mifeet
Apakah yang #!benar - benar ditafsirkan oleh kernel?
masterxilo
17

"execute" memungkinkan pengguna untuk mengeksekusi executable. Untuk direktori itu adalah tunjangan untuk memasuki direktori menggunakan perintah cd.

Phil Rykoff
sumber
1
Akses ke bagian direktori sangat besar. Anda tidak akan pernah menebaknya hanya dari nama mode itu sendiri.
PrimitiveNom
2

Untuk tujuan praktis, izin untuk membaca menyiratkan kemampuan untuk mengeksekusi.

Namun yang sebaliknya tidak benar; ada beberapa nilai dalam kemampuan memberikan izin untuk mengeksekusi kode tanpa memberikan izin untuk membacanya.

Adam Lee
sumber
Ini sebenarnya sangat masuk akal.
masterxilo
Saya bingung dengan READ / EXECUTE, dan mengharapkan jawaban seperti itu. terima kasih
T.Todua
2

Ini untuk menjalankan aplikasi dari GUI atau baris perintah. Untuk penggunaan php "normal" (melalui server web), itu tidak mengubah apa pun. Sebenarnya, itu tergantung pada konfigurasi, tetapi dalam kebanyakan kasus Anda tidak perlu + x izin untuk memungkinkan memuat halaman web php Anda melalui browser.

Untuk menjalankan dari baris perintah, Anda perlu:

  • tambahkan #!/usr/bin/phpdi awal skrip
  • tambahkan + x izin
  • skrip Anda harus berada di jalur pencarian yang dapat dieksekusi (variabel lingkungan $ PATH) atau Anda harus menentukan direktori yang ada di dalamnya sebelum nama skrip Anda. Ini bisa berupa pathname absolut, seperti /etc/xdg/fooatau /home/fred/bar, atau direktori relatif, seperti dir1/prog1atau ./prog2.
Maciek Sawicki
sumber