Ada dua cara untuk melakukannya:atur direktori agar "dunia" dapat ditulisi atau buat grup baru untuk dua pengguna dan buat direktori dapat ditulisi ke grup itu.
Jelas membuatnya dapat ditulisi dunia adalah Hal Buruk, jadi opsi kedua lebih disukai.
Pengguna di Linux dapat menjadi anggota lebih dari satu grup. Dalam hal ini Anda ingin membuat grup baru, sebut saja tomandruser
:
sudo groupadd tomandruser
Sekarang grup sudah ada, tambahkan dua pengguna ke dalamnya:
sudo usermod -a -G tomandruser tomcat6
sudo usermod -a -G tomandruser ruser
Sekarang yang tersisa hanyalah menyetel izin pada direktori:
sudo chgrp -R tomandruser /path/to/the/directory
sudo chmod -R 770 /path/to/the/directory
Sekarang hanya anggota grup tomandruser yang dapat membaca, menulis, atau mengeksekusi apa pun di dalam direktori. Catat argumen -R pada perintah chmod dan chgrp:ini memberitahu mereka untuk kembali ke setiap sub direktori dari direktori target dan memodifikasi setiap file dan direktori yang ditemukannya.
Anda mungkin juga ingin mengubah 770 menjadi sesuatu seperti 774
jika Anda ingin orang lain dapat membaca file, 775
jika Anda ingin orang lain membaca dan menjalankan file, dll. Perubahan penetapan grup tidak akan berlaku hingga pengguna keluar dan masuk kembali.
Jika Anda juga ingin (Anda mungkin ingin) agar file baru yang dibuat di dalam direktori oleh salah satu pengguna dapat ditulis secara otomatis oleh orang lain dalam grup, lihat di sini.
Skrip berikut menunjukkan contoh untuk memberikan r (read) / w (write) / x (execute)
izin ke jalur folder yang diberikan /path/to/the/directory
untuk USER1
dan USER2
. Jika Anda hanya ingin memberikan akses tulis, harap ganti rwx
dengan w
.
#!/bin/bash
# Block others and people in the same group to do `r/w/x` on the give folder:
sudo chmod 700 /path/to/the/directory
# Give read/write/execute access to USER1 on give folder:
sudo setfacl -R -m user:USER1:rwx /path/to/the/directory
# Give read/write/execute access to USER2 on give folder:
sudo setfacl -R -m user:USER2:rwx /path/to/the/directory
Jawaban opini:
- Saya suka meletakkan folder bersama saya di tempat sentral. Bukan di homefolder orang lain, melainkan
/srv/common
atau bahkan (untuk jalur pendek tanpa ampun...)/repo
atau serupa. - tentukan grup baru (biasanya untuk semua pengguna lokal, yang ingin Anda ikuti. Namun, bukan beberapa pengguna teknis seperti
wwwuser
, kecuali ada alasan yang sah) root
bagus untuk dimiliki sebagai anggota, juga memiliki pemilik netral dari folder bersama itu- setGid sangat penting, sehingga file baru menjadi keanggotaan grup umum, jadi
frank:common
, bukanfrank:frank
sudo groupadd -f common
usermod -aG common root
usermod -aG common frank
usermod -aG common mike
# sort of hack for instant group refresh w/o logout
# superuser.com/a/345051
su - frank
# sanity test1:
cat etc/group | grep common
common:x:1008:root,frank,mike
# sanity test2:
groups
frank adm cdrom ... common
sudo chown root:common /repo
# (if you have shareable stuff setting somewhere else,
# copy it to here now)
# no right to the world, the right rights to user and group
chmod -R ug+rwXs,o-rwx $dest
# why uppercase X ? → unix.stackexchange.com/a/416885
# why s ? → superuser.com/a/277785
# as there is no such thing as an uppercase S (directories only)
# settings the s attribute on preexisting content would have to happen
# like so:
# find /repo -type d -exec chmod g+s {} \\\;