Misalkan saya memiliki dua pengguna Alice dan Bob dan sebuah grup GROUPNAME dan sebuah folder foo
, kedua pengguna tersebut adalah anggota GROUPNAME (menggunakan Linux dan ext3).
Jika saya simpan sebagai pengguna Alice file di bawah foo
, hak akses adalah: -rw-r--r-- Alice Alice
. Namun, apakah mungkin untuk mencapai bahwa setiap file yang disimpan di bawah subdirektori foo
memiliki izin -rwxrwx--- Alice GROUPNAME
(yaitu pemilik Alice, grup GROUPNAME)?
permissions
group
acl
umask
siswa
sumber
sumber
Jawaban:
Anda dapat mengontrol bit izin yang ditetapkan dengan
umask
, dan grup dengan membuat direktori setgid keGROUPNAME
.Perhatikan bahwa Anda harus melakukan
chgrp
/chmod
untuk setiap subdirektori; itu tidak merambat secara otomatis (yaitu, tidak ada direktori yang ada atau yang kemudian dibuat di bawah direktori setgid akan menjadi setgid , meskipun yang terakhir akan berada dalam grupGROUPNAME
).Perhatikan juga bahwa itu
umask
adalah atribut proses dan berlaku untuk semua file yang dibuat oleh proses itu dan anak-anaknya (yang mewarisiumask
efek pada orang tua mereka saatfork()
itu). Pengguna mungkin perlu mengatur ini~/.profile
, dan mungkin perlu berhati-hati terhadap hal-hal yang tidak terkait dengan direktori Anda yang memerlukan izin berbeda. modul mungkin berguna jika Anda memerlukan pengaturan berbeda saat melakukan hal yang berbeda.Anda dapat mengontrol sesuatu dengan sedikit lebih baik jika Anda dapat menggunakan POSIX ACL; harus dimungkinkan untuk menentukan mask perizinan dan grup, dan membuatnya disebarluaskan dengan bijaksana. Namun, dukungan untuk POSIX ACL agak bervariasi.
sumber
-rwxrwx--- A G
)?Jika memungkinkan, gunakan daftar kontrol akses (ACL) .
Di Linux, pastikan sistem file yang Anda gunakan mendukung ACL (kebanyakan sistem file unix melakukannya). Anda mungkin perlu mengubah opsi mount untuk mengaktifkan ACL: dengan ext2 / ext3 / ext4, Anda perlu menentukan
acl
opsi mount secara eksplisit, sehingga entri di dalamnya/etc/fstab
akan terlihat seperti/dev/sda1 / ext4 errors=remount-ro,acl 0 1
. Jalankanmount -o remount,acl /
untuk mengaktifkan ACL tanpa me-reboot. Juga instal alatgetfacl
- alat baris perintah ACL dansetfacl
, biasanya disediakan dalam paket yang disebutacl
.Sekarang setelah pengaturan satu kali selesai, ubah ACL direktori untuk memberikan izin menulis grup dan membuat izin ini diwarisi oleh file yang baru dibuat. Di bawah Linux:
Jika ACL bukan pilihan, membuat direktori yang dimiliki oleh kelompok
GROUPNAME
, dan mengatur hak akses untuk 2775 atau 2770:chmod g+rwxs /path/to/directory
. Dis
sini berarti bit setgid; untuk direktori, itu berarti file yang dibuat dalam direktori ini akan menjadi milik grup yang memiliki direktori.Anda juga harus mengatur umask Alice dan Bob untuk membuat semua file mereka dapat ditulis grup secara default. Umask default pada sebagian besar sistem adalah 022, artinya file dapat memiliki semua izin kecuali tulis oleh grup dan lainnya. Ubah itu menjadi 002, artinya hanya melarang izin menulis-oleh-lainnya. Anda biasanya akan meletakkan pengaturan itu di
~/.profile
:sumber
mount
perintah denganremount
opsi, jadi tidak digunakanfstab
. Memilikiacl
dua kali berarti filesystem sudah di-mount denganacl
opsi, dan tidak berbahaya.acl
adalah default untuk ext4 di kernel baru-baru ini, by the way (tambalan itu masih baru kembali ketika saya menulis jawaban ini). T2: Anda dapat menjalankan perintah dalam urutan mana pun.GROUPNAME
alih-alihG
, untuk membuatnya lebih jelasPertanyaan ini sangat cocok untuk linux
acl
. Karena Anda tidak menyatakan OS Anda, saya akan menganggap Linux sebagai berikut. Berikut adalah contoh sesi.Saya tidak tahu
acl
tutorial yang sangat bagus , tetapi Anda bisa melakukan lebih buruk daripada http://www.vanemery.com/Linux/ACL/linux-acl.htmlPerhatikan bahwa default
acl
berperilaku seperti umask lokal. Karena setidaknya di Linux, umasks diterapkan secara global, ini adalah satu-satunya cara saya tahu untuk mendapatkan efek dari umask lokal. Untuk beberapa alasan fitur ini sedikit dikenal. Jaring penuh dengan orang-orang bertanya tentang menimpa umask lokal, tetapi hampir tidak ada yang berpikir untuk menggunakanacl
.Perhatikan juga bahwa Anda perlu memasang partisi tempat Anda bekerja dengan
acl
dukungan, mis.Sesi berikut:
Tetapkan grup
foo
menjadistaff
, dan setel acl grup dan penggunafoo
menjadirwx
.Tetapkan akun default pengguna dan grup
rwx
juga. Ini mendefinisikan izin yang diwarisi dari file dan direktorifoo
. Jadi semua file dan direktori yang dibuat di bawah foo akan memiliki izin gruprw
.Sekarang buat beberapa file
foo
sebagai penggunafaheem
danjohn
.Daftar file. Perhatikan bahwa kedua file yang dimiliki oleh
faheem
dan file yang dimiliki olehjohn
dibuat dengan izin gruprw
.sumber