Saya percaya (tidak yakin) bahwa pemilik file / direktori dan pengguna root adalah satu-satunya pengguna yang diizinkan untuk mengubah izin file / direktori. Apakah saya benar atau ada pengguna lain yang juga diizinkan mengubah izin?
Saya percaya (tidak yakin) bahwa pemilik file / direktori dan pengguna root adalah satu-satunya pengguna yang diizinkan untuk mengubah izin file / direktori. Apakah saya benar atau ada pengguna lain yang juga diizinkan mengubah izin?
Jawaban:
Hanya pemilik dan root(pengguna super) yang diizinkan untuk mengubah izin file atau direktori. Ini berarti bahwa pemilik dan pengguna super dapat mengatur izin baca ( r), tulis ( w) dan jalankan ( x). Tetapi mengubah kepemilikan (pengguna / grup) file dan direktori dengan perintah chown/ chgrphanya diperbolehkan root.
Untuk tujuan operasi normal, hanya root dan pemilik yang bisa chmod. Selain itu, root dapat chowndan chgrp, dan selanjutnya pemilik dapat chgrpselama pemiliknya adalah anggota kelompok target.
Untuk tujuan keamanan, ada kasus lain: setiap pengguna dengan izin menulis ke direktori yang berisi file dapat mengganti file dengan salinan, dan dengan demikian menjadi pemilik, mendapatkan kemampuan untuk memodifikasi izin dan konten.
Seperti itu:
14:14 mybox:~ mkdir mydir
14:14 mybox:~ cd mydir/
14:14 mybox:mydir echo foo | sudo tee yourfile
foo
14:14 mybox:mydir ls -ld . yourfile
drwxr-xr-x 3 me staff 102 Apr 11 14:14 .
-rw-r--r-- 1 root staff 4 Apr 11 14:14 yourfile
Kami membuat direktori, dan menulis file sebagai root. Karena root memiliki file tersebut, kami tidak dapat menulisnya, kami juga tidak dapat chmod:
14:15 mybox:mydir echo bar > yourfile
-bash: yourfile: Permission denied
14:15 mybox:mydir chmod a+x yourfile
chmod: Unable to change file mode on yourfile: Operation not permitted
Namun, kami memiliki izin menulis ke direktori, sehingga kami dapat mengganti file untuk mendapatkan kepemilikan:
14:15 mybox:mydir mv yourfile yourfile2
14:15 mybox:mydir cp yourfile2 yourfile
14:15 mybox:mydir ls -ld . yourfile
drwxr-xr-x 4 me staff 136 Apr 11 14:15 .
-rw-r--r-- 1 me staff 4 Apr 11 14:15 yourfile
Dan sekarang kita adalah pemiliknya, tentu saja kita dapat melakukan apa yang kita inginkan dengan file itu:
14:15 mybox:mydir echo bar > yourfile
14:15 mybox:mydir chmod a+x yourfile
14:16 mybox:mydir cat yourfile
bar
Demikian pula, setiap pengguna dengan izin menulis ke direktori mana pun di jalur lengkap yang mengarah ke file dapat menggantikan struktur direktori sejak saat itu, sehingga mendapatkan kepemilikan file dengan nama yang diberikan. Kepemilikan atau izin dari file asli yang sebenarnya (yang kami namai dengan "yourfile2") tentu saja tidak berubah.
14:17 mybox:mydir ls -l yourfile2
-rw-r--r-- 1 root staff 4 Apr 11 14:14 yourfile2
getfacl / setfacl) yang memberikan lebih banyak fleksibilitas daripada izin file gaya "klasik". Penghapusan file di * nix berfungsi dengan menghapus tautan ke file dari direktori, jadi penghapusan file selalu dikontrol oleh izin direktori; file permissions sendiri tidak berperan di sana.
The chmodperintah cukup langsung memanggil system call dengan nama yang sama; halaman manual untuk chmod(2)panggilan sistem (di Linux 4.10) mengatakan:
UID efektif dari proses panggilan harus sesuai dengan pemilik file, atau proses tersebut harus istimewa (Linux: itu harus memiliki
CAP_FOWNERkemampuan).Jika proses panggilan tidak istimewa (Linux: tidak memiliki
CAP_FSETIDkemampuan), dan grup file tidak cocok dengan ID grup efektif dari proses atau salah satu ID grup tambahan,S_ISGIDbit akan dimatikan, tetapi ini tidak akan menyebabkan kesalahan dikembalikan.
Jadi ya, proses yang berjalan sebagai root dapat mengubah izin file apa pun jika tidak menghilangkan CAP_FOWNERkemampuannya.
Yang juga menarik adalah chown; halaman manual untuk chown(2)mengatakan:
Hanya proses istimewa (Linux: satu dengan
CAP_CHOWNkemampuan) yang dapat mengubah pemilik file. Pemilik file dapat mengubah grup file ke grup mana pun yang pemiliknya adalah anggota. Proses istimewa (Linux: withCAP_CHOWN) dapat mengubah grup secara sewenang-wenang.