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
- posiadanie tego samego identyfikatora UID dla konta na każdej maszynie, z której korzystasz z zewnętrznego dysku (w rzeczywistości nie jest to możliwe, ponieważ najprawdopodobniej nie wszystkie maszyny są pod twoją kontrolą)
- za pomocą systemu plików nieświadomy pojęcia właściciela / grupy (przychodzi mi na myśl FAT lub NTFS, ale… aaah, nie)
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 GID 100
na większości dystrybucji Linuksa. Jeśli możesz mieć swoje konto użytkownika w tej grupie, możesz
- utwórz wszystkie pliki i katalogi na dysku należące do tej grupy
- jakoś udało się mieć odpowiednie uprawnienia grupowe do tych plików i katalogów
- jakoś udało się stworzyć nowe pliki z odpowiednimi odpowiednikami własności grupy. uprawnienia.
Pierwszy 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. Na umask
przykład wspólną wartością jest to 022
, że bity zapisu dla „grupy” i „innych” zwykle nie powinny być ustawione. Możesz zmienić umask
na 002
, 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
oraz default
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łoby
- upewniając się, że jesteś członkiem wspólnej grupy we wszystkich systemach, na których chcesz używać dysku zewnętrznego
- utwórz wszystkie pliki i katalogi na dysku należące do tej grupy i ustaw bit SGID we wszystkich katalogach
- zmień listę ACL wszystkich katalogów, aby uwzględnić maskę i domyślne uprawnienia, które każą jądru tworzyć każdy nowy plik / katalog z ustawionymi uprawnieniami do zapisu dla grupy.
Zobacz setfacl(1)
i acl(5)
po więcej szczegółów.