Montowanie systemu plików ze specjalnym zestawem identyfikatora użytkownika

19

Chcę zamontować urządzenie /dev/sda3w katalogu /foo/bar/baz. Po zamontowaniu katalog powinien mieć identyfikator użytkownika johndoe. Więc zrobiłem:

sudo -u johndoe mkdir /foo/bar/baz
stat -c %U /foo/bar/baz
johndoe

i dodałem następujący wiersz do mojego /etc/fstab:

/dev/sda3 /foo/bar/baz ext4 noexec,noatime,auto,owner,nodev,nosuid,user 0 1

Kiedy to zrobię, sudo -u johndoe mount /dev/sda3polecenie stat -c %U /foo/bar/bazpowoduje rootraczej niż johndoe. Jaki jest najlepszy sposób na zamontowanie tego systemu plików ext4 z johndoezestawem UID ?

qbi
źródło

Odpowiedzi:

20

Nie można zmusić właściciela na dysku z systemem plików ext4. Tylko systemy plików, które nie obsługują uprawnień Linuksa, takie jak fat, mają atrybut własności / groupship: uid=valuei gid=value. Zobacz stronę podręcznika na temat montażu .

Powinieneś zmienić właściciela podłączonego systemu plików jak w:

sudo chown johndoe /foo/bar/baz

Jeśli chcesz rekursywnie zmienić uprawnienia:

sudo chown -R johndoe /foo/bar/baz

... a jeśli grupa również musi zostać zmieniona na johndoe:

sudo chown -R johndoe: /foo/bar/baz
Lekensteyn
źródło
2
Rekurencyjnie zmieniająca się własność jest generalnie złym pomysłem, jeśli możesz temu pomóc. Po usunięciu „właściwej” własności praktycznie nie ma łatwego sposobu na odzyskanie jej. Powiązania IMO to właściwy sposób na poradzenie sobie z tym (zobacz moją odpowiedź).
Catskul
3
bindfs brzmi jak kolejna warstwa złożoności. Moja odpowiedź najlepiej nadaje się na zewnętrzny dysk twardy (do tworzenia kopii zapasowych), który był używany w poprzedniej instalacji z innym identyfikatorem użytkownika. Nie należy go używać w sytuacjach, w których należy przechowywać wiele identyfikatorów użytkowników (główny system plików), ale w takim przypadku nie -unależy również używać powiązań z, ponieważ omija to ograniczenia dostępu z różnych identyfikatorów użytkowników. --mapnależy stosować, jeśli chcesz zachować ograniczenia dostępu.
Lekensteyn,
1
+1 za „jest to możliwe tylko na FS bez uprawnień” - próbowałem użyć uidi gid, co nie działałoby.
mgarciaisaia,
19

bindfsjest odpowiedzią. Zajmie już zamontowany system plików i wyświetli go z dowolnym identyfikatorem użytkownika:

sudo apt-get install bindfs
mkdir ~/myUIDdiskFoo
sudo bindfs -u $(id -u) -g $(id -g) /media/diskFoo ~/myUIDdiskFoo
Catskul
źródło
1
bindfs ma inne tryby działania, patrz: bindfs.org/docs/bindfs.1.html
Lekensteyn
2
Ugh, używa BEZPIECZNIKA.
Navin
Chciałem zamontować wirtualny system plików 9p z innymi uprawnieniami użytkownika niż system operacyjny hosta. Uderzałem głową o ścianę, próbując go uruchomić. Bindfs naprawdę wyciągnęły mnie z kłopotów. Świetne małe narzędzie!
Boann
6

Zakładając, że zestaw grup plików ma odpowiednie uprawnienia, powinieneś być w stanie po prostu znaleźć jego identyfikator grupy (GID) i dodać się do niego.


Aby znaleźć identyfikator grupy pliku, użyj ls -n. Przykładowe dane wyjściowe:

drwxr-xr-x 1 1000 1000  550 Jul  9 11:08 Desktop/

Chcesz czwarte pole dla GID, które w moim przypadku jest drugie 1000.

sudo addgroup --gid GID foobar; sudo usermod `whoami` -aG foobar

Po uruchomieniu powinieneś mieć pełną kontrolę gdziekolwiek pozwalają na to atrybuty pliku dla grupy.

Jak zauważono w drugiej odpowiedzi dotyczącej uprawnień użytkownika, jeśli chcesz naprawić grupę w niektórych plikach, uruchom jeden z tych:

sudo chown -R :foobar ./
sudo chgrp -R  foobar ./
Chinoto
źródło
1
Uwaga: jeśli chcesz zmienić użytkownika lub grupę z A na B bez zmiany własności plików, które nie są A; możesz używać sudo chown --from A B -R ./dla użytkowników i sudo chown --from :A :B ./grup
LateralFractal