Menetapkan pemilik default "secara otomatis" akan memerlukan direktori setuid
berperilaku seperti setgid
. Namun, sementara ini dapat dikonfigurasi pada FreeBSD, sistem UNIX & Linux lainnya mengabaikannya u+s
. Namun dalam kasus Anda, mungkin ada solusi lain.
Yang saya inginkan adalah memiliki direktori yang dapat dibagikan dengan menambahkan grup ke pengguna. Apa pun yang dibuat dalam direktori ini mewarisi skema izin dari induknya. Jika ada cara yang lebih baik daripada apa yang saya coba, saya semua telinga.
Jadi, pada dasarnya, dari apa yang saya lihat, Anda ingin mengontrol akses ke direktori menggunakan mekanisme grup. Namun, ini tidak mengharuskan Anda untuk membatasi izin di seluruh struktur direktori. Sebenarnya, --x
bit eksekusi direktori bisa menjadi apa yang Anda butuhkan. Biarkan saya memberi Anda sebuah contoh. Berasumsi bahwa...
- Grup yang mengendalikan akses ke
group_dir
direktori adalah ourgroup
.
- Hanya orang-orang dalam
ourgroup
grup yang dapat mengakses group_dir
.
user1
dan user2
milik ourgroup
.
- Umask default adalah 0022.
... pertimbangkan pengaturan berikut:
drwxrws--- root:ourgroup |- group_dir/
drwxr-sr-x user1:ourgroup |---- group_dir/user1_submission/
drwxr-sr-x user2:ourgroup |---- group_dir/user2_submission/
-rw-r--r-- user2:ourgroup |-------- group_dir/user2_submission/README
Di sini, mari kita asumsikan setiap item diciptakan oleh pemiliknya.
Sekarang, dalam pengaturan ini:
- Semua direktori dapat diakses secara bebas oleh semua orang di
ourgroup
. Siapa pun dari grup dapat membuat, memindahkan, menghapus file di mana saja di dalam group_dir
(tetapi tidak lebih dalam).
- Siapa pun yang tidak masuk
ourgroup
akan diblokir group_dir
, dan karenanya tidak dapat memanipulasi apa pun di bawahnya. Misalnya, user3
(yang bukan anggota ourgroup
), tidak dapat membaca group_dir/user2_submission/README
(meskipun ia memiliki r--
izin pada file itu sendiri).
Namun, ada sedikit masalah dalam kasus ini: karena umask yang khas, item yang dibuat oleh pengguna tidak dapat dimanipulasi oleh anggota grup lainnya. Di sinilah ACL masuk. Dengan mengatur izin default, Anda akan memastikan semuanya baik-baik saja meskipun nilai umask:
$ setfacl -dRm u::rwX,g::rwX,o::0 group_dir/
Panggilan ini menetapkan:
rw(x)
Izin default untuk pemilik.
rw(x)
Izin default untuk grup.
- Tidak ada izin secara default untuk yang lain. Perhatikan bahwa karena yang lain tidak dapat mengakses
group_dir
, tidak masalah apa pun izin mereka di bawahnya.
Sekarang, jika saya membuat item sebagai user2
:
$ touch group_dir/user2_submission/AUTHORS
$ ls -l group_dir/user2_submission/AUTHORS
rw-rw---- user2:ourgroup group_dir/user2_submission/AUTHORS
Dengan ACL ini, kami dapat mencoba membangun kembali struktur kami sebelumnya:
drwxrws---+ root:ourgroup |- group_dir/
drwxrws---+ user1:ourgroup |---- group_dir/user1_submission/
drwxrws---+ user2:ourgroup |---- group_dir/user2_submission/
-rw-rw----+ user2:ourgroup |-------- group_dir/user2_submission/README
Di sini lagi, setiap item dibuat oleh pemiliknya.
Selain itu, jika Anda ingin memberikan sedikit lebih banyak kekuatan / keamanan kepada mereka yang menggunakan direktori, Anda mungkin ingin mempertimbangkan sedikit lengket. Misalnya, ini akan mencegah user1
penghapusan user2_submission
(karena ia memiliki -w-
izin group_dir
):
$ chmod +t group_dir/
Sekarang, jika user1
mencoba untuk menghapus user2
direktori, dia akan mendapatkan yang indah Operation not permitted
. Perhatikan bahwa sementara ini mencegah modifikasi struktur direktori group_dir
, file dan direktori di bawahnya masih dapat diakses:
user1@host $ rm -r user2_submission
Operation not permitted
user1@host $ cat /dev/null > user2_submission/README
user1@host $ file user2_submission/README
user2_submission/README: empty (uh-oh)
Satu hal yang perlu dipertimbangkan adalah bahwa ACL yang kami gunakan mengatur izin default . Oleh karena itu, pemilik barang dapat mengubah izin yang terkait dengannya. Misalnya, user2
dapat berjalan dengan sempurna ...
$ chown g= user2_submission/ -R
or
$ chgrp nobody user2_submission -R
... karenanya menjadikan direktori pengiriman lengkapnya tidak tersedia bagi siapa pun dalam grup.
Namun, karena Anda semula bersedia memberikan rws
akses penuh kepada siapa pun di grup, saya berasumsi Anda mempercayai pengguna ini, dan bahwa Anda tidak akan mengharapkan terlalu banyak operasi jahat dari mereka.