Saya memiliki drive disk USB 3 eksternal (kapasitas 2TB) yang kemungkinan besar akan dipindahkan dari mesin ke mesin. Disk memiliki tabel partisi GUID dan partisi ext4. Saya tidak dapat menulis ke disk kecuali saya meninggikan proses ( sudo
).
Sampai sekarang saya berpikir untuk mencoba salah satu atau kedua hal berikut dan ingin mengetahui kekurangan masing-masing -
chmod 777 /mnt/externalDrive
chown nobody:nogroup /mnt/externalDrive
Jika saya memberikan 777 izin dan user1 (UID: 1005) menulis kepadanya dan saya kemudian memindahkan disk ke komputer lain di mana user7 adalah UID: 1005, apa yang terjadi? Apakah pengguna7 menjadi pemilik file di komputer itu? Sepertinya saya bahwa saya secara berkala harus berjalan chown -R nobody:nogroup /mnt/externalDrive
pada disk.
Apakah ada yang saya anggap praktik buruk yang jelas? Disk tersebut kemungkinan besar akan berisi video, musik, dan gambar yang tidak perlu dilindungi seperti data keuangan.
sumber
Jawaban:
Itulah masalah dengan sistem multi-pengguna, terutama jika Anda memiliki lebih dari satu. ;) Tidak ada cara yang benar-benar baik untuk melakukan apa yang Anda inginkan. Pendekatan yang muncul dalam pikiran adalah
Pendekatan yang paling efektif adalah kembali ke praktik umum. Pada sebagian besar (setidaknya) sistem Linux, terdapat beberapa kelompok yang biasanya memiliki GID umum. Sebagai contoh
users
, yang memiliki GID100
di sebagian besar distro Linux. Jika Anda dapat mengatur agar akun pengguna Anda masing-masing dalam grup ini, Anda bisaPoin pertama dan kedua mudah dicapai (
chown
,chmod
). Poin ketiga agak rumit.Bagian "kepemilikan grup" relatif mudah: Anda dapat mengatur bit SGID pada semua direktori pada drive. Bit SGID yang diterapkan ke direktori memberitahu kernel untuk berperilaku dengan cara BSDish: BSD membuat setiap file / direktori yang dibuat di bawah direktori tertentu yang dimiliki grup bukan oleh grup utama dari proses membuat file / direktori (seperti Linux), tetapi oleh pemilik direktori induk.
Bit izin agak sulit. Izin file / direktori yang baru dibuat (antara lain) dipengaruhi oleh
umask
, bit-mask yang memberitahu bit mana yang tidak diatur jika tidak secara eksplisit dinyatakan. Nilai umumumask
misalnya adalah022
, yang berarti bahwa bit-bit penulisan untuk »grup« dan »lainnya« biasanya tidak boleh disetel. Anda dapat mengubahumask
ke002
, memberi tahu Anda tidak ingin izin tulis dihapus untuk grup tetapi downside adalah bahwa Anda tidak dapat menetapkan nilai ini berdasarkan direktori dan Anda biasanya tidak ingin memiliki izin menulis untuk kelompok utama Anda disetel untuk setiap file yang Anda buat.Ini dapat diselesaikan dengan menggunakan ACL: Dalam ACL Anda dapat mengatur
mask
dandefault
mengatur izin, yang berlaku untuk semua file dan direktori yang dibuat di dalam direktori dengan set ACL ini. Jadi salah satu solusi yang mungkin untuk masalah Anda adalahLihat
setfacl(1)
, danacl(5)
untuk lebih jelasnya.sumber
Ada pertanyaan serupa lainnya dan bindf disarankan di sana:
Pengguna OSX menyarankan
noowners
opsi pemasangan yang dijelaskan seperti ini:sumber
Pemilik dan grup file disimpan sebagai angka. Jadi file tersebut akan dimiliki oleh uid = 1005, terlepas dari pengguna mana (atau tidak sama sekali) yang ada di sistem yang terhubung dengannya.
Mengubah pengguna / grup ke siapa pun tidak akan memperbaiki masalah Anda. Maka hanya pengguna yang tidak ada (atau anggota dari grup siapa pun) yang akan diizinkan untuk mengakses file.
Sayangnya, saya tidak berpikir ada cara untuk menonaktifkan pemeriksaan izin pada ext4. Lihat, misalnya, Apakah mungkin untuk menonaktifkan izin file pada sistem file ext3 atau ext4?
sumber
Andreas Wiese mengatakan bahwa jika Anda memiliki id grup umum di semua host, Anda dapat menyelesaikan masalah Anda dengan
setgid
bit dan ACLSaya mengajukan pertanyaan Id grup standar di distro Linux?
Setelah penelitian sendiri menemukan bahwa grup seperti itu ada di semua distro yang disentuh:
sys
id berbagi grup3
di Debian, Ubuntu, RedHat, Fedora, CentOS, Suse, FreeBSD, OpenBSD, NetBSD, NetBSD, MacOSX, Solaris.Dengan ini:
dan rasa ini:
Anda
user
dapat membaca / menulis file apa pun di/dir
.Sebagian besar pekerjaan mungkin
setgid
sedikit tetapi sayangnya Anda biasanya memiliki sedikit kontrolumask
. Jadi ACL digunakan untuk memberikan solusi lengkap.Lihat juga:
sumber