Saya mengalami masalah dengan izin di server Linux. Saya sudah terbiasa dengan BSD. Ketika direktori dimiliki oleh grup, pengguna yang tidak memilikinya seperti www-data, file yang dibuat di dalamnya akan dimiliki oleh grup itu. Ini penting karena saya ingin file dapat dibaca oleh server web (yang tidak akan saya jalankan sebagai root) tetapi agar pengguna tetap dapat meletakkan file baru di direktori. Saya tidak dapat menempatkan pengguna di www-data karena mereka dapat membaca setiap situs web pengguna lain.
Saya ingin server web membaca semua situs web, saya ingin pengguna dapat mengubah situs mereka sendiri.
Izin diatur seperti ini pada folder saat ini….
drwxr-x--- 3 john www-data 4096 Feb 17 21:27 john
Ini adalah perilaku standar pada BSD untuk izin untuk bekerja dengan cara ini. Bagaimana saya membuat Linux melakukan ini?
Jawaban yang Diterima:
Sepertinya Anda menggambarkan fungsionalitas bit setgid di mana ketika direktori yang telah disetel, akan memaksa file baru yang dibuat di dalamnya agar grupnya disetel ke grup yang sama yang disetel di direktori induk.
Contoh
$ whoami
saml
$ groups
saml wheel wireshark
mengatur direktori dengan izin + kepemilikan
$ sudo mkdir --mode=u+rwx,g+rs,g-w,o-rwx somedir
$ sudo chown saml.apache somedir
$ ll -d somedir/
drwxr-s---. 2 saml apache 4096 Feb 17 20:10 somedir/
sentuh file sebagai saml di direktori ini
$ whoami
saml
$ touch somedir/afile
$ ll somedir/afile
-rw-rw-r--. 1 saml apache 0 Feb 17 20:11 somedir/afile
Ini akan memberi Anda kira-kira seperti apa yang Anda inginkan. Jika Anda benar-benar menginginkan apa yang telah Anda jelaskan, saya pikir Anda harus menggunakan fungsionalitas Access Control Lists untuk mendapatkan itu (ACL).
ACL
Jika Anda ingin mendapatkan sedikit lebih banyak kontrol atas izin pada file yang dibuat di bawah direktori, somedir
, Anda dapat menambahkan aturan ACL berikut untuk mengatur izin default seperti itu.
sebelum
$ ll -d somedir
drwxr-s---. 2 saml apache 4096 Feb 17 20:46 somedir
setel izin
$ sudo setfacl -Rdm g:apache:rx somedir
$ ll -d somedir/
drwxr-s---+ 2 saml apache 4096 Feb 17 20:46 somedir/
Perhatikan +
di akhir, itu berarti direktori ini memiliki ACL yang diterapkan padanya.
$ getfacl somedir
# file: somedir
# owner: saml
# group: apache
# flags: -s-
user::rwx
group::r-x
other::---
default:user::rwx
default:group::r-x
default:group:apache:r-x
default:mask::r-x
default:other::---
setelah
$ touch somedir/afile
$ ll somedir/afile
-rw-r-----+ 1 saml apache 0 Feb 17 21:27 somedir/afile
$
$ getfacl somedir/afile
# file: somedir/afile
# owner: saml
# group: apache
user::rw-
group::r-x #effective:r--
group:apache:r-x #effective:r--
mask::r--
other::---
Perhatikan dengan izin default (setfacl -Rdm
) diatur sehingga izinnya adalah (r-x
) secara default (g:apache:rx
). Ini memaksa file baru untuk hanya memiliki r
sedikit diaktifkan.