Hak atas eksekusi file baca tulis

0

Saya masuk sebagai "pengguna saya" yang juga merupakan administrator komputer. Saya memiliki file di mana saya memiliki hak-hak berikut:

-r--r--r--   1 myuser  staff  167 17 Feb 14:26 my_python.py

Namun, saat saya mengetik python my_python.py pada baris perintah, saya masih bisa menjalankan file. Apakah saya tidak perlu mengeksekusi (x) hak untuk melakukan itu ?!

Satu-satunya cara saya tidak dapat menjalankan file adalah ketika saya mengubah hak untuk:

----------   1 myuser  staff  167 17 Feb 14:26 my_python.py
Stophface
sumber

Jawaban:

1

Python hanya membutuhkan konten file untuk dibaca.

Ingat bahwa Python adalah bahasa yang ditafsirkan dan hanya memproses konten file itu, daripada mengeksekusi itu; python adalah executable di sini! Karenanya, memanggil penerjemah dengan file sebagai input / argumen tidak memerlukan selain izin baca (mis., python example.py ).

Mattia
sumber
1

Tidak harus dapat dieksekusi, karena Anda menjalankan python dapat dieksekusi dan meneruskan file ini ke sana.

Namun jika Anda ingin mengeksekusi file ini dengan ./my_python.py file ini harus dapat dieksekusi dan telah #!/usr/bin/python di baris pertama (atau bahkan lebih baik #!/usr/bin/env python ).

Mateusz Szlosek
sumber
mengapa itu perlu dieksekusi jika saya mencoba ./my_python.py? ./ hanya berarti saya di folder lain untuk menjalankan file ini ..
Stophface
Anda bisa berubah ./ ke jalur ke file py Anda. Ketika Anda membuatnya dieksekusi chmod +x Anda tidak perlu mengeksekusi python karena itu akan dijalankan secara otomatis dari #!/usr/bin/python garis ( en.wikipedia.org/wiki/Shebang_(Unix) )
Mateusz Szlosek
Hm, itu masih belum jelas. Ketika saya punya rw hak atas a .py file dan saya jalankan seperti python whatever.py Saya bisa. Tapi, ketika saya mencoba lari ./python whaterever.py itu tidak? Mengapa saya membutuhkannya? x hak untuk menjalankan itu ?!
Stophface
Karena python tidak terletak di direktori saat ini (mungkin dalam /usr/bin/python ). Jika Anda mengatur x pada file itu dapat dijalankan tanpa meluncurkan python pertama (tidak harus diteruskan ke python executable). Jadi saat file sudah x Anda cukup menjalankannya dengan /path/to/file.py atau jika dalam direktori saat ini dengan ./file.py (ingat tentang shebang).
Mateusz Szlosek
1
@ Stophface- ./ berarti current working directory. Begitu, ./python whatever.py memberitahu shell untuk mencari python adalah current working directory. Saya sarankan Anda membaca man execve untuk memahami apa yang dibicarakan Mateusz Szolsek.
fd0