Berikan izin menulis kepada banyak pengguna di folder di Ubuntu

80

Ada folder yang dimiliki oleh pengguna tomcat6:

drwxr-xr-x 2 tomcat6 tomcat6 69632 2011-05-06 03:43 document

Saya ingin mengizinkan pengguna lain (ruser) menulis izin pada folder dokumen. Dua pengguna (tomcat6 dan ruser) bukan milik grup yang sama. Saya sudah mencoba menggunakan setfacl:

sudo setfacl -m  u:ruser:rwx document

tapi ini memberi saya setfacl: document: Operation not supportedkesalahan. Mohon bantu saya.

TheVillageIdiot
sumber

Jawaban:

144

Ada dua cara untuk melakukan ini: mengatur direktori ke "dunia" dapat ditulis atau membuat grup baru untuk dua pengguna dan membuat direktori dapat ditulisi ke grup itu.

Jelas menjadikannya dunia yang bisa ditulisi adalah hal yang buruk, jadi pilihan 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 adalah mengatur 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 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 774jika Anda ingin orang lain dapat membaca file, 775jika Anda ingin orang lain membaca dan menjalankan file, dll. Perubahan penugasan grup tidak akan berlaku hingga pengguna keluar dan kembali di.

Jika Anda juga ingin (Anda mungkin melakukannya) bahwa file baru yang dibuat di dalam direktori oleh salah satu pengguna secara otomatis dapat ditulis oleh orang lain dalam grup, maka lihat di sini .

Andrew Lambert
sumber
2
Anda mungkin ingin juga mengatur flag set-group-ID untuk direktori, untuk membuat file dan sub-direktori baru yang secara otomatis dimiliki oleh grup yang tepat:sudo find /path/to/the/directory -type d -exec chmod 2770 '{}' \;
Marcello Nuccio
8
Saya akan menghindari penggunaan chmod 770, 775 atau apa pun. Itu mengacaukan izin semua file. Alih-alih menggunakan sesuatu seperti chmod -R g+wmenambahkan izin menulis tanpa menghapus semua yang lain.
Christian Varga
2
Jika pengguna membuat file baru di sana (katakanlah, mysql pada SELECT INTO OUTFILE), ia menetapkan izin untuk grup utamanya ( mysqldalam hal ini), dan file tersebut tidak dapat diakses oleh pengguna lain. Bagaimana cara mengatasinya?
Olexa
2
Bagaimana jika Anda ingin memberi pengguna akses tulis ke folder tanpa mengubah kepemilikan folder, misalnya Anda tidak ingin mengacaukan izin apache pada folder public_html?
codecowboy
2
Catatan: "Perubahan penugasan grup tidak akan berlaku hingga pengguna keluar dan kembali." Saya telah melewatkan itu :)
Vladimir Vukanac
3

Contoh skrip menunjukkan contoh untuk memberikan w (write)/ r (read) / x (execute)izin ke jalur folder yang diberikan /path/to/the/directoryuntuk USER1dan USER2. Jika Anda ingin memberikan akses tulis saja, silakan ganti rwxdengan w.


#!/bin/bash

# Block others and people in the same group to do read/write/execute on 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 
Alper
sumber