Linux - Podłącz urządzenie z określonymi uprawnieniami użytkownika

86

Jak mogę zamontować urządzenie z określonymi uprawnieniami użytkownika podczas uruchamiania? Nadal mam problemy z rozgryzieniem tego. Chciałbym zamontować podział za pomocą uid=1000i gid=1000. Mój aktualny wpis do /etc/fstab/pliku wygląda następująco:

dev /var/www vboxsf rw, suid, dev, exec, auto, nouser, async, uid=1000
wowpatrick
źródło
Nie zapomnij o gui = 1000. Ponadto, jaka jest własność / prawa do / var / www. Powinien być własnością root.
skub
1
@skub: Właścicielem /var/www/jest root. dev /var/www vboxsf rw, suid, dev, exec, auto, nouser, async, uid=1000 gui=1000nie działało tak dobrze (Ubuntu usunął wpis po nieudanym ponownym uruchomieniu).
wowpatrick
2
Twoje źródło montowania to „dev” ??
James T Snell,
@wowpatrick - twoje urządzenie do montowania powinno być jak / dev / sda1, nie powinno być „dev”.
skub
1
@skub: To folder współdzielony VirtualBox, więc / dev ma rację. Już to rozgryzłem, sudo mount -t vboxsf -o umask=0022,gid=33,uid=33 dev /var/wwwdziała dobrze.
wowpatrick

Odpowiedzi:

119

Aby zamontować urządzenie z pewnymi prawami, możesz użyć -o Optiondyrektywy podczas montażu urządzenia. Aby zamontować opisane urządzenie, uruchom:

 mount -t deviceFileFormat -o umask=filePermissions,gid=ownerGroupID,uid=ownerID /device /mountpoint

Na przykład zamontowanie VirtualBox wspólny folder /var/wwwz www-datajak właściciel będzie wyglądać następująco:

mount -t vboxsf -o umask=0022,gid=33,uid=33 dev /var/www

Jeśli chcesz zamontować urządzenie podczas uruchamiania, możesz dodać następujący wpis do /etc/fstabpliku:

 /device /mountpoint deviceFileFormat umask=filePermissions,gid=ownerGroupID,uid=ownerUserID

Ponownie, w tym samym przykładzie, wpis do /etc/fstabpliku wyglądałby tak:

dev /var/www vboxsf umask=0022,gid=33,uid=33

W przypadku systemów plików, które nie obsługują montowania jako określony użytkownik (np. Ext4), powyższy komunikat spowoduje błąd

Unrecognized mount option "uid=33" or missing value

aby zmienić właściciela montowania ext4, po prostu uruchom

chown username /mountpoint

po zamontowaniu.

wowpatrick
źródło
Byłem w stanie użyć opcji uid / gid na ext4.
CMCDragonkai,
Wydaje się, że to nie działa z mount -bind, używam systemu plików btrfs
meffect
Czy umask nie powinien umask=0077zamiast umask=0022dawać pozwolenia tylko właścicielowi na czytanie lub pisanie? Wygląda na to, że umask=0022udzielę uprawnień do odczytu innym osobom, jeśli czytam go poprawnie. Chcę, aby tylko użytkownik, który zamontował dysk, powinien mieć uprawnienia do odczytu lub zapisu.
Mian Asbat Ahmad
3

Dla systemu plików takiego jak ext3 lub ext4, po zrobieniu

    chown -R username:group /mountpoint

aby zmienić właściciela obecnie istniejących plików, możesz ustawić bit identyfikatora grupy, aby nowe pliki były tworzone z określoną grupą (nie działa dla identyfikatora użytkownika w systemie Linux):

    find /mountpoint -type d -exec chmod g+ws {} \;

Wpis w Wikipedii dotyczący setuid i setgid jest dość pouczający, patrz sekcja na temat katalogów .

js.
źródło
17
Zmiana własności wszystkich plików na urządzeniu jest bardzo inwazyjna. Ponieważ istnieje -oopcja montażu, jest to lepszy sposób.
Ograniczone Zadośćuczynienie
6
-oniestety nie działa dla ext4, jak wyjaśniono w odpowiedzi @wowpatrick.
js.
14
chownniedorzeczne jest przekazywanie zawartości zamontowanego dysku innemu użytkownikowi. Nie masz pojęcia, co może się zepsuć dla aplikacji na tym dysku. Może być w porządku, jeśli cała zawartość należy do użytkownika, ale jest to bardzo duże nie-nie ...
Carlspring
Urządzenie to / dev / www, łatwo jest kontrolować, które aplikacje mają do niego dostęp (prawdopodobnie tylko serwer WWW, który można wyłączyć podczas operacji). Nawet jeśli aplikacja, która go używa, nadal działa, będzie działać, ponieważ to jest punkt operacji.
js.