Saya baru saja menemukan sesuatu yang tidak terduga (untuk saya) mengenai izin file di Linux (Arch Linux). Pada dasarnya saya punya:
userX
digroupX
fileX userX:groupX ---rwx----
Apa yang membingungkan saya: Saya tidak dapat melakukan tindakan apa pun ( rwx
) pada fileX
. Apakah ini benar? Bisakah seseorang mengonfirmasi ini memang perilaku yang diharapkan?
Satu-satunya tindakan yang dapat saya lakukan adalah mv
dan rm
karena saya memiliki izin menulis di direktori induk.
Masalahnya adalah, saya selalu berpikir izin ini runtuh satu sama lain, dimulai dengan yang paling umum (lainnya -> grup -> pengguna). Dengan kata lain, jika o=rwx
siapa yang peduli apa penganiayaan untuk grup dan pengguna? Tampaknya ini bukan masalahnya tetapi itu tidak masuk akal bagi saya; tampaknya berlawanan dengan intuisi. Satu-satunya hal yang tampaknya berguna dalam pendekatan ini, adalah dengan mudah mengecualikan orang / kelompok yang sangat spesifik, yang sepertinya bukan cara yang cerdas untuk melakukannya (imho). Selain itu, pemilik (dan grup?) Harus tetap bisa chmod
, kan? Adakah pemikiran tentang hal ini?
id
Jawaban:
Jika itu masalahnya maka izin "lain" akan berlaku untuk semua orang.
Itu berbeda dari kalimat Anda sebelumnya. Di sini Anda menyiratkan bahwa izin diurutkan bersama, mis. Bahwa userX memiliki izin baca jika userX memiliki file dan file tersebut dapat dibaca pengguna, atau jika grup yang dimiliki penggunaX memiliki file dan file tersebut grup -baca, atau jika file tersebut dapat dibaca orang lain. Tapi itu bukan cara kerjanya. Sebenarnya, ini
o=rwx
berarti bahwarwx
izin berlaku untuk orang lain, tetapi tidak mengatakan apa pun tentang entitas yang bukan milik orang lain.Pertama, tidak masalah secara langsung grup mana yang dimiliki pengguna. Kernel tidak memiliki gagasan tentang pengguna milik grup. Apa yang dipertahankan oleh kernel adalah, untuk setiap proses, ID pengguna ( UID efektif ) dan daftar ID grup (GID efektif dan GID pelengkap). Grup ditentukan pada waktu login, oleh proses login - ini adalah proses login yang membaca database grup (mis
/etc/group
.). ID pengguna dan grup diwarisi oleh proses anak¹.Ketika suatu proses mencoba membuka file, dengan izin Unix tradisional:
Hanya satu set bit rwx yang pernah digunakan. Pengguna lebih diutamakan daripada grup yang lebih diutamakan daripada yang lain. Ketika ada daftar kontrol akses , algoritma yang dijelaskan di atas digeneralisasi:
Lihat juga Precedence ACLS ketika pengguna menjadi bagian dari beberapa grup untuk detail lebih lanjut tentang bagaimana entri ACL digunakan, termasuk efek dari mask.
Dengan demikian
-rw----r-- alice interns
menunjukkan file yang dapat dibaca dan ditulis oleh Alice, dan yang dapat dibaca oleh semua pengguna lain kecuali magang. File dengan izin dan kepemilikan----rwx--- alice interns
hanya dapat diakses oleh peserta magang kecuali Alice (apakah ia magang atau tidak). Karena Alice dapat meneleponchmod
untuk mengubah izin, ini tidak memberikan keamanan apa pun; ini kasus tepi. Pada sistem dengan ACL, mekanisme umum memungkinkan penghapusan izin dari pengguna tertentu atau kelompok tertentu, yang kadang-kadang berguna.Menggunakan satu set bit, alih-alih semua bit untuk setiap tindakan (baca, tulis, jalankan), memiliki beberapa keuntungan:
¹ Mereka dapat berubah saat proses setuid atau setgid dijalankan. Ini tidak terkait dengan masalah yang dihadapi.
sumber
Izin yang lebih spesifik didahulukan dari kurang spesifik.
Karena Anda adalah pemilik file, Anda hanya akan diberikan izin pemilik. Pemilik tidak memiliki izin. Dengan demikian, Anda tidak dapat melakukan apa pun. Jika Anda bukan pemilik file dan anggota grup, maka izin grup akan berlaku.
Silakan baca bagian halaman wiki ini
https://en.wikipedia.org/wiki/File_system_permissions#Classes
sumber
-rwxrw----
berarti pemilik telah membaca, menulis, dan mengeksekusi izin, grup telah membaca dan menulis, dan yang lain tidak memiliki izin.Izin yang Anda berikan memberi izin grup 'groupX' untuk membaca, menulis, dan mengeksekusi file. Jika Anda adalah anggota grup "groupX" tetapi bukan pemilik file, izin ini akan berlaku untuk Anda.
Dalam hal ini saya berasumsi Anda memang pemilik file. Hanya izin yang ditetapkan untuk pemilik yang akan berlaku untuk Anda. Tentu saja pemilik dapat mengganti atau mengubah izin pada file. Namun, grup tidak dapat melakukan ini. Misalnya vim akan meminta Anda untuk mengkonfirmasi jika Anda menulis ke file yang Anda tidak memiliki izin untuk menulis tetapi adalah pemiliknya.
Saya biasanya membaca izin dari kiri ke kanan. Apakah saya pemiliknya? Jika ya, izin pemilik berlaku. Jika tidak; Apakah saya anggota grup? Jika ya, izin grup berlaku. Jika tidak, maka izin untuk "Lainnya" berlaku untuk saya.
Dalam beberapa kasus, berguna untuk menjadi pemilik file tetapi tidak memiliki izin menulis. Ini melindungi Anda dari menghapus atau memodifikasi file secara tidak sengaja. Secara pribadi saya telah menetapkan izin 400 pada semua file template saya, hanya untuk memastikan saya tidak memodifikasinya secara tidak sengaja. Hal yang sama berlaku untuk mengeksekusi izin.
sumber
Saya dapat menambahkan pengguna ke grup, memberikan izin grup ke direktori (070), dan kemudian SETELAH MEMULAI kembali dapat mengakses folder.
Buat grup: sudo groupadd nama grup
Tambahkan pengguna ke grup: sudo gpasswd -nama nama grup
Pastikan seluruh direktori berada di bawah kepemilikan grup yang benar (harus menjadi anggota groupname saat ini untuk melakukan): sudo chgrp -R groupname directory_path /
Berikan hanya grup rwx untuk folder (bisa saja rw, sesuaikan seperlunya): sudo chmod -R 070 directory_path
Setelah melakukan hal di atas, pastikan untuk keluar dan kembali. Jika itu tidak berhasil, hidupkan ulang mesin. Melakukan ini berhasil bagi saya.
sumber