Bisakah file diedit dengan izin 'tulis' di atasnya tetapi tidak pada direktori induknya?


5

Misalkan pemilik / pengguna tidak memiliki izin tulis pada direktori tetapi ia memilikinya pada file di bawahnya. Bisakah file di sini diedit atau tidak? Jika ya, apakah ada situasi di mana file tidak dapat diedit?


Saya harus meminta Anda untuk mengklarifikasi apa yang Anda coba lakukan. Untuk pertanyaan Anda Tidak memiliki bit yang dapat ditulis pada direktori hanya berarti Anda tidak dapat membuat file baru. Anda hanya perlu bit yang dapat ditulis pada file yang ingin Anda edit.
Bratchley

Juga, jika mereka adalah pengguna yang memiliki, maka kekurangan bit tulis lebih tidak nyaman daripada yang lainnya. Pengguna yang memiliki dapat mengubah izin file / direktori sesuai keinginan mereka.
Bratchley

Jawaban:


4

Ya, file dapat diedit.

Sejauh menyangkut direktori, file tidak dapat diedit jika Anda menghapus izin eksekusi pada direktori untuk target (pemilik / grup / orang lain).

EDIT: Jika Anda ingin pemilik tidak dapat mengedit file dengan mengubah izin direktori (dengan asumsi pengguna yang sama memiliki direktori dan file), maka Anda dapat menghapus izin eksekusi pada direktori untuk pemilik. Misalnya Anda dapat membuat izin untuk pemilik sebagai rw-yaitu 6.


Apakah tidak ada situasi lain di mana kita tidak dapat mengedit file?
h8pathak

@ h8pathak: Periksa hasil edit saya
heemayl

3

Seperti jawaban lain telah menyatakan: Ya, file dapat diedit / dimodifikasi. Dan, dengan risiko rambut rontok, izinkan saya menunjukkan bahwa pertanyaannya mengatakan

... dia memiliki [menulis izin] pada file di bawah [direktori].

dan untuk membuat komentar semi-jelas bahwa, untuk mengedit file dalam arti tradisional kata tersebut, pengguna juga harus memiliki izin baca untuk file tersebut, untuk mendapatkan konten saat ini. Tanpa izin baca, pengguna dapat menimpa data yang ada, dan / atau menambahkan (menambahkan) data di akhir, tetapi dia tidak dapat melakukan pengeditan yang bermanfaat seperti memperbaiki kesalahan ketik atau memasukkan teks.

Dan saya katakan "dimodifikasi" untuk menekankan bahwa kita sedang berbicara tentang berbagai skenario, termasuk yang saya sebutkan di atas (menimpa atau menambahkan) serta

  • menyalin data file keluar (misalnya, ke file di direktori lain), memanipulasi itu entah bagaimana, dan kemudian menyalinnya kembali (menimpa file), atau
  • menggunakan editor teks tradisional , seperti vi, (atau bahkan hex editor , jika ada),

dan vi, khususnya, tidak memiliki masalah dengan pengeditan file dalam situasi ini. Saya belum menguji banyak editor lain. Saya berharap bahwa sebagian besar dari mereka (misalnya, emacs, pico, ...) akan baik-baik saja, juga.

Tapi,

sed -i   sed_command (s)   nama file

tidak akan bekerja, karena sed -ibekerja oleh

  • membuat file sementara di direktori yang sama,
  • menyalin teks dari file asli ke file baru (sementara), melakukan yang ditentukan sed_command(s)di dalamnya dalam proses,
  • menghapus file asli, lalu
  • mengganti nama file sementara ke nama asli (dan chmoding agar sesuai dengan mode asli dari file asli).

dan operasi ini gagal ketika direktori dilindungi dari penulisan. (Saya percaya / curiga bahwa beberapa editor lain mungkin berperilaku dengan cara yang sama, tetapi saya tidak dapat menyebutkan contoh.)

Jadi, sed -imemerlukan akses tulis ke direktori. Dan, tentu saja, itu juga memerlukan izin baca ke file. Tetapi, ending kejutan double-twist adalah: ia tidak memerlukan akses tulis ke file . Lagi pula, Anda tidak perlu akses tulis ke file untuk menghapusnya; cukup tulis akses ke direktori.


0

Anda tidak perlu memiliki izin menulis ke direktori, tetapi xbit yang dapat dieksekusi harus ditetapkan.

Jadi, pertimbangkan direktori foodengan file bar. Jika izin diatur sebagai

 drwx--x--x   foo
 -rw-rw-rw-   foo/bar

misalnya, akses tulis tersedia untuk siapa saja selama xbit diberikan. Bahkan rtidak diperlukan akses baca ke direktori.

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.