web-dev-qa-db-pt.com

Como posso definir automaticamente permissões de gravação para montar uma unidade USB no Linux?

Quando monto uma unidade USB externa no Linux (CentOs4), as permissões são definidas por padrão como somente leitura. Como há vários usuários no computador que precisam usar a unidade externa, desejo que todos tenham permissão rw para toda a unidade. Também quero que eles possam montar a unidade se o computador tiver sido desligado acidentalmente. Eles podem usar Sudo mount para montar a unidade, mas isso só lhes dará permissão de leitura, e eu obviamente não quero permitir Sudo chmod.

Existe uma configuração padrão que eu possa alterar para que cada novo disco USB externo obtenha automaticamente permissões rw?

17
Jonas

Para habilitar o acesso de todos os usuários, a chave é uma opção umask = 0 para montar o comando.

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

umask = 0 é suficiente, uid e gid apenas por questão de clareza, para que você não veja mais donos de 'root' do que necessariamente.


@ Tom's answer (escrevendo/etc/fstab entry) permitirá pular Sudo e se você escrever umask = 0 como opção adicional, você terá o melhor dos dois mundos:

Tendo isso em/etc/fstab:

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

permite que você execute

mount /dev/something

e todo mundo tem acesso a todos os arquivos.


Aqui está a nota técnica, se você quiser saber detalhes:

Como man mount diz, 'umask = 0' garantirá que nenhuma regra adicional se aplique ao modo de acesso a arquivos. Para sistemas de arquivos FAT (que são mais usados ​​em discos USB), não há modo de acesso armazenado. Mas o seu processo atual tem algum valor de umask definido, você pode vê-lo se você executar apenas umask no terminal. mount usa isso como padrão e remove o modo de acesso do seu valor umask de todos os arquivos no disco montado. Os valores de umask mais usados ​​são (octal) 022 - nenhum grupo e outro tipo de gravação, e 027 - nenhum grupo escreve, nenhum outro acesso.

17
temoto

Adicione uma entrada ao/etc/fstab. Aqui está uma entrada que adicionei há apenas algumas horas para a minha unidade USB Seagate:

UUID = 4ACC734ECC733375/media/Linux ext3 errors = remount-ro, padrões, usuários, noatime, nodiratime 0 0

A chave aqui é a entrada "usuários" que permite aos usuários montar e desmontar a unidade.

Edit: isso funciona para drives específicos - não sei se pode ser habilitado para all drives com uma entrada.

2
Tom

Digite mount. Isso dará o lugar atual em que está. Aqui está minha saída.

[email protected] ~ $ 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)

O último é o meu drive USB, rodado automaticamente pelo Linux Mint.

Agora digite

Sudo umount /dev/sdf1

isso desmontará a unidade

agora remontar corretamente.

Sudo mount -t vfat /dev/sdf1 /media/usb0 -o rw,users,umask=0
1
Rick