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

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 ).


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 ).


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.