Daftar kontrol akses
Jawaban langsungnya adalah daftar kontrol akses (ACL) . Ya, Anda dapat menemukan contoh tandingan, tetapi dalam praktiknya cukup baik (tidak seperti kemampuan menulis grup yang mengharuskan pengguna memikirkannya setiap saat). Yang mereka perlukan adalah administrator sistem (root) mendefinisikan grup, jika Anda ingin file hanya dibagikan oleh grup yang bernama (root dapat memilih untuk mendelegasikan, misalnya dengan menerima grup dari LDAP, tapi itu cerita lain).
Anda perlu pengguna yang berpartisipasi untuk memiliki umask 022. Jika mereka membuat file yang tidak dapat dibaca dunia secara rutin, skema ini tidak akan berfungsi. Tetapi jika mereka memiliki batasan umask, itu mungkin karena mereka toh tidak ingin berbagi file.
Mengaktifkan ACL
Ubuntu tidak mengaktifkan ACL secara default, jadi ada persyaratan admin satu kali. Edit /etc/fstab
menggunakan editor favorit Anda, dan ubah setiap baris yang berkaitan dengan sistem file tempat Anda ingin berbagi file: tambahkan acl
ke opsi. (Pastikan untuk tidak mengubah baris lain, dan tidak menggunakan editor yang membungkus baris panjang.) Berikut ini contoh baris dengan acl
opsi yang ditambahkan:
UUID=5e1ec7ed-face-dead-beef-c011ec7ab1e5 / ext4 errors=remount-ro,acl 0 1
Agar opsi berlaku pertama kali, gunakan perintah seperti berikut (untuk setiap sistem file):
sudo mount -o remount,acl /
Instal alat ACL dari acl
paket.
Menyiapkan direktori bersama
Agar file dibagikan oleh grup mygroup
:
setfacl -m group:mygroup:rwx /path/to/shared/root
setfacl -d -m group:mygroup:rwx /path/to/shared/root
Jika orang membuat file dan menyalinnya ke direktori bersama, file tersebut akan dapat dibaca oleh dunia (karena umask) dan siapa pun dalam grup dapat menambah dan menghapus file (karena grup dapat ditulis kelompok). Orang tidak dapat mengedit file satu sama lain, tetapi itu adalah hal yang baik atau Anda akan langsung mengalami konflik pengeditan.
Jika Anda tidak memiliki grup unix, Anda dapat menambahkan pengguna satu per satu:
setfacl -m user:bob:rwx /path/to/shared/root
setfacl -d -m user:bob:rwx /path/to/shared/root
Kontrol versi
Jika Anda ingin orang dapat mengedit file di tempat, Anda juga perlu sesuatu untuk mencegah konflik pengeditan. Itu kontrol versi.
Anda tidak memerlukan semua ini untuk berbagi repositori git. Anda tahu ada solusi seperti gitosis, jadi gunakanlah.
Cukup lakukan ini:
Sekarang semua orang di
teamA
grup dapat membuat semuanya di dalam/src/teamA
Ajaibnya adalah bit sgid (set group id) pada direktori.
sumber
Jika Anda ingin pengguna dapat mengakses file dalam folder bersama (misalnya, orang yang berbeda masuk ke mesin yang sama pada waktu yang berbeda dan perlu akses ke file yang sama), Anda dapat menggunakan
bindfs
untuk membuat direktori bersama.Ini memungkinkan banyak pengguna lokal untuk membaca dan menulis (membuat, menghapus, mengganti nama, memodifikasi ...) semua file (termasuk yang baru dibuat) dari direktori bersama dan subdirektori. Setiap pengguna akan melihat file dan folder (termasuk yang baru dibuat) sebagai milik mereka.
Secara singkat, Anda berlari
untuk membuat / home / shared tersedia untuk user1, user2 dan user3.
Instruksi
Lihat Bindfs-SharedDirectoryLocalUsers (dokumentasi Ubuntu) untuk instruksi lengkap, termasuk mengaturnya secara permanen (setiap kali Anda menyalakan komputer). Saya menggunakan ini di komputer saya sendiri untuk sejumlah direktori, masing-masing dengan grup berbagi yang berbeda (satu folder tersedia untuk semua akun, yang lain hanya untuk akun kerja, yang lain hanya untuk akun pribadi).
Dari pos:
Daftar kontrol akses (ACL)
Catatan dokumentasi:
Lihat jawaban Gilles untuk detail lebih lanjut.
sumber
Anda dapat menggabungkan solusi shellholic dengan pekerjaan cron yang memperbarui gid untuk semua file di folder itu setiap 15 detik atau yang serupa.
sumber