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

18

Quando monto uma unidade USB externa no Linux (CentOs4), as permissões são definidas por padrão como somente leitura. Como existem vários usuários no computador que precisam usar a unidade externa, desejo que todos tenham rwpermissão para toda a unidade. Também quero que eles possam montar a unidade se o computador tiver sido desligado acidentalmente. Eles podem usar sudo mountpara 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 rwpermissões automaticamente ?

Jonas
fonte

Respostas:

17

Para habilitar o acesso de todos os rw, 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 uma questão de clareza, para que você não veja mais proprietários 'root' do que necessariamente.


@ A resposta de Tom (entrada / etc / fstab) permitirá que você pule sudoe, se você escrever umask = 0 como opção adicional, obterá 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 mountdiz, 'umask = 0' garantirá que nenhuma regra adicional se aplique ao modo de acesso a arquivos. Para sistemas de arquivos FAT (que são mais amplamente usados ​​em discos USB), não há modo de acesso armazenado. Mas seu processo atual tem algum valor umask definido, você pode vê-lo se executar apenas umaskno terminal. mountusa isso como padrão e remove o modo de acesso do seu valor umask de todos os arquivos no disco montado. Os valores umask mais usados ​​são (octal) 022 - nenhum grupo e outra gravação e 027 - nenhum grupo de gravação, nenhum outro acesso.

temoto
fonte
Eu recebo um erro com 'opção ruim' se eu adicionar umask=0 0 0como uma entrada no fstab. A umaskentrada-precisa ser a última entrada? O que a managed=0 0 0entrada faz atualmente é a última?
Jonas
1
FWIW, a opção umask é apenas uma opção VFAT, ou seja, a solução ajuda desde que a memória USB use o sistema de arquivos VFAT (que não era o meu caso).
Tomislav Nakic-Alfirevic 17/03/12
2
Obrigado. Mas eu tive que alterá-lo para fazê-lo funcionar: sudo mount -o umask=0,uid=nobody /dev/something /mnt/somewhereele só funciona sem definir o parâmetro gid.
Nippey 19/10
2

Adicione uma entrada ao / etc / fstab. Aqui está uma entrada que eu adicionei algumas horas atrás para a minha unidade USB da Seagate:

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

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

Editar: isso funciona para unidades específicas - não sei se ele pode ser ativado para todas as unidades com uma entrada.

Tom
fonte
Se um usuário monta a unidade, todos os outros usuários também recebem rwpermissão?
Jonas
1

Digite mount. Isso fornecerá o local atual em que está. Aqui está a minha saída.

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)

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

Agora digite

sudo umount /dev/sdf1

isso desmontará a unidade

agora remonte corretamente.

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