Mam zewnętrzny dysk USB 3 (pojemność 2 TB), który najprawdopodobniej zostanie przeniesiony z maszyny na maszynę. Dysk ma tablicę partycji GUID i partycję ext4. Nie mogę zapisać na dysku, chyba że podniesię poziom procesu ( sudo
).
Obecnie myślę o wypróbowaniu jednego lub obu poniższych rozwiązań i chciałbym poznać ich zalety -
chmod 777 /mnt/externalDrive
chown nobody:nogroup /mnt/externalDrive
Jeśli dam 777 uprawnienia, a użytkownik1 (UID: 1005) zapisze go, a później przeniosę dysk na inny komputer, na którym użytkownik 7 ma UID: 1005, co się stanie? Czy użytkownik7 staje się właścicielem pliku na tym komputerze? Wydaje mi się, że będę okresowo musiał uruchamiać chown -R nobody:nogroup /mnt/externalDrive
się na dysku.
Czy coś, co uważam za oczywistą złą praktykę? Dysk najprawdopodobniej będzie zawierał filmy, muzykę i zdjęcia, ale żaden z nich nie musi być chroniony jak niektóre dane finansowe.
źródło
Odpowiedzi:
Taki jest problem z systemami wieloużytkownikowymi, szczególnie jeśli masz więcej niż jeden z nich. ;) Nie ma naprawdę fajnego sposobu na robienie tego, co chcesz. Przychodzą mi na myśl podejścia
Najbardziej skutecznym podejściem byłoby powrót do powszechnych praktyk. W większości (przynajmniej) systemów Linux istnieją grupy, które mają zwykle wspólne identyfikatory GID. Na przykład byłoby
users
, który ma GID100
na większości dystrybucji Linuksa. Jeśli możesz mieć swoje konto użytkownika w tej grupie, możeszPierwszy i drugi punkt są łatwe do osiągnięcia (
chown
,chmod
). Trzeci punkt jest nieco trudniejszy.Część „własności grupowej” jest stosunkowo łatwa: możesz ustawić bit SGID we wszystkich katalogach na dysku. Bit SGID zastosowany do katalogów informuje jądro, aby zachowywało się w sposób BSDish: BSD sprawia, że każdy plik / katalog utworzony w określonej grupie katalogów nie należy do podstawowej grupy procesu tworzącego plik / katalog (jak Linux), ale przez właściciela katalogu nadrzędnego.
Bit zgody jest trochę trudny. Na uprawnienia do nowo utworzonych plików / katalogów wpływa (między innymi)
umask
maska bitowa, która określa, których bitów nie należy ustawiać, jeśli nie jest to wyraźnie określone. Naumask
przykład wspólną wartością jest to022
, że bity zapisu dla „grupy” i „innych” zwykle nie powinny być ustawione. Możesz zmienićumask
na002
, mówiąc, że nie chcesz, aby uprawnienia do zapisu były usuwane dla grupy, ale wadą jest to, że nie możesz ustawić tej wartości w oparciu o katalog i zwykle nie chcesz mieć uprawnień do zapisu dla Twój podstawowy zestaw grup dla każdego tworzonego pliku.To może być rozwiązany przy użyciu listy ACL: W ACL można ustawić
mask
orazdefault
zestaw uprawnień, które odnosi się do wszystkich plików i katalogów tworzonych wewnątrz katalogu z tego zestawu ACL. Jednym z możliwych rozwiązań Twojego problemu byłobyZobacz
setfacl(1)
iacl(5)
po więcej szczegółów.źródło
Istnieje inne podobne pytanie i sugerowane są tam bindfs:
Użytkownicy OSX sugerują
noowners
opcję montowania opisaną w następujący sposób:źródło
Właściciel i grupa pliku są przechowywane jako liczby. Plik będzie więc własnością uid = 1005, niezależnie od tego, z którym użytkownikiem (lub w ogóle nie ma) w systemie, do którego jest podłączony.
Zmiana użytkownika / grupy na nikogo nie rozwiąże problemu. Wtedy tylko użytkownik nobody (lub członkowie grupy nobody) mieliby dostęp do plików.
Niestety nie sądzę, że istnieje sposób na wyłączenie sprawdzania uprawnień na ext4. Zobacz na przykład: Czy można wyłączyć uprawnienia do plików w systemie plików ext3 lub ext4?
źródło
Andreas Wiese mówi, że jeśli masz wspólny identyfikator grupy na wszystkich hostach, możesz rozwiązać problem z
setgid
bitem i listą ACLZadaję pytanie Predefiniowane identyfikatory grup w różnych dystrybucjach systemu Linux?
Po przeprowadzeniu własnych badań stwierdzono, że taka grupa istnieje we wszystkich dotkniętych dystrybucjach:
sys
identyfikator udziału grupy3
na Debian, Ubuntu, RedHat, Fedora, CentOS, Suse, FreeBSD, OpenBSD, NetBSD, MacOSX, Solaris.Z tym:
i smak tego:
możesz
user
czytać / zapisywać dowolny plik/dir
.Większość zadań może
setgid
trochę zaszkodzić, ale niestety zazwyczaj masz niewielką kontrolęumask
. Tak więc ACL służy do zapewnienia kompletnego rozwiązania.Zobacz też:
źródło