Jak mogę automatycznie ustawić uprawnienia do zapisu podczas montowania napędu USB w systemie Linux?


18

Kiedy podłączam zewnętrzny dysk USB na Linuksie (CentOs4), uprawnienia są domyślnie ustawione na tylko do odczytu. Ponieważ na komputerze jest wielu użytkowników, którzy muszą korzystać z dysku zewnętrznego, chcę, aby wszyscy mieli rwuprawnienia do całego dysku. Chcę też, aby mogli zamontować dysk, jeśli komputer został przypadkowo zamknięty. Mogą użyć sudo mountdo zamontowania dysku, ale to da im tylko uprawnienia do odczytu, a ja oczywiście nie chcę pozwolić sudo chmod.

Czy istnieje ustawienie domyślne, które mogę zmienić, aby każdy nowy zewnętrzny dysk USB automatycznie otrzymał rwuprawnienia?

Odpowiedzi:


17

Aby umożliwić wszystkim dostęp rw, kluczem jest umask = 0 opcja zamontowania polecenia.

sudo mount -o umask=0,uid=nobody,gid=nobody /dev/something /mnt/somewhere

umask = 0 wystarczy, uid i gid tylko ze względu na przejrzystość, więc nie widzisz więcej właścicieli root niż koniecznie.


Odpowiedź @ Toma (wpisanie / etc / fstab) pozwoli ci pominąć, sudoa jeśli napiszesz umask = 0 jako dodatkową opcję, uzyskasz to, co najlepsze z obu światów:

Posiadanie tego w / etc / fstab:

/dev/something /mnt/somewhere auto users,noatime,umask=0 0 0

pozwala po prostu biegać

mount /dev/something

i każdy ma dostęp do wszystkich plików.


Oto uwaga techniczna, jeśli chcesz poznać szczegóły:

Jak man mountmówi „umask = 0” zapewni, że żadne dodatkowe reguły nie będą miały zastosowania do trybu dostępu do plików. W systemach plików FAT (najczęściej używanych na dyskach USB) nie ma zapisanego trybu dostępu. Ale twój obecny proces ma ustawioną pewną wartość umask, możesz to zobaczyć, jeśli uruchomisz tylko umaskw terminalu. mountużywa tego jako domyślnego i usuwa tryb dostępu do wartości umask ze wszystkich plików na zamontowanym dysku. Najczęściej używane wartości umask to (ósemkowe) 022 - brak zapisu grupowego i innego oraz 027 - brak zapisu grupowego, brak dostępu.


Jeśli dodam umask=0 0 0jako wpis w fstab, pojawia się błąd związany z „złą opcją” . Czy umaskwpis musi być ostatnim wpisem? Co robi managed=0 0 0wpis, który jest obecnie ostatni?
Jonas,

1
FWIW, opcja umask jest opcją tylko VFAT, tzn. Rozwiązanie pomaga, dopóki pamięć USB korzysta z systemu plików VFAT (co nie było moim przypadkiem).
Tomislav Nakic-Alfirevic

2
Dziękuję Ci. Ale musiałem to zmienić, aby działało: sudo mount -o umask=0,uid=nobody /dev/something /mnt/somewhereDziała tylko bez ustawienia parametru gid.
Nippey,

2

Dodaj wpis do / etc / fstab. Oto wpis, który dodałem kilka godzin temu dla mojego dysku USB Seagate:

UUID = 4ACC734ECC733375 / media / Linux ext3 error = remount-ro, defaults, users, noatime, nodiratime 0 0

Kluczem jest tutaj wpis „users”, który pozwala użytkownikom na zamontowanie i odmontowanie dysku.

Edycja: działa dla określonych dysków - nie wiem, czy można włączyć dla wszystkich dysków z jednym wpisem.


Jeśli użytkownik zamontuje dysk, czy wszyscy inni użytkownicy również uzyskają rwpozwolenie?
Jonas,

1

Wpisz mount. To da bieżące miejsce, w którym się znajduje. Oto mój wynik.

rick@rick-Main ~ $ mount
/dev/sda4 on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/cgroup type tmpfs (rw)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
none on /run/user type tmpfs (rw,noexec,nosuid,nodev,size=104857600,mode=0755)
none on /sys/fs/pstore type pstore (rw)
/dev/sda6 on /media/DATA1 type vfat (rw,uid=1000,utf8,umask=077)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)
systemd on /sys/fs/cgroup/systemd type cgroup (rw,noexec,nosuid,nodev,none,name=systemd)
gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,user=rick)
/dev/sdf1 on /media/usb0 type vfat (rw,noexec,nodev,sync,noatime,nodiratime)

Ostatnim jest mój dysk USB zautomatyzowany przez Linux Mint.

Teraz wpisz

sudo umount /dev/sdf1

spowoduje to odmontowanie dysku

teraz podłącz ponownie poprawnie.

sudo mount -t vfat /dev/sdf1 /media/usb0 -o rw,users,umask=0
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.