Quais são as configurações padrão de montagem para mount / fstab?

18

Quais são as opções de montagem padrão para uma partição não raiz?

A entrada do homem para a montagem diz ...

defaults - use default options: rw, suid, dev, exec, auto, nouser, and async.

... então isso pode ser o que esperamos ver. Mas, a menos que eu esteja perdendo alguma coisa, não é isso que acontece.

Eu tenho uma partição ext3 chamada "NewHome20G" que é vista como / dev / sdc6 pelo sistema. Isso podemos ver a partir de ...

root@john-pc1204:~# blkid | grep NewHome20G
/dev/sdc6: LABEL="NewHome20G" UUID="d024bad5-906c-46c0-b7d4-812daf2c9628" TYPE="ext3" 

Eu tenho uma entrada no fstab da seguinte forma ...

root@john-pc1204:~# cat /etc/fstab | grep NewHome
LABEL=NewHome20G        /media/NewHome20G        ext3         rw,nosuid,nodev,exec,users     0  2

Observe as configurações de opção especificadas nessa linha fstab.

Agora eu vejo como a partição é realmente montada após a inicialização ...

root@john-pc1204:~# mount -l | grep sdc6
/dev/sdc6 on /media/NewHome20G type ext3 (rw,noexec,nosuid,nodev) [NewHome20G]

... então, quando o sistema de arquivos é montado, as opções exec & users que eu especifiquei parecem ter sido ignoradas.

Só para ter certeza, desmontei o sdc6, remonte-o e analise as opções de montagem novamente ...

root@john-pc1204:~# umount /dev/sdc6
root@john-pc1204:~# mount /dev/sdc6
root@john-pc1204:~# mount -l | grep sdc6
/dev/sdc6 on /media/NewHome20G type ext3 (rw,noexec,nosuid,nodev) [NewHome20G]

.... mesmo resultado

Agora, desmontei a partição novamente, remonte-a especificando a opção exec e observe o resultado ...

root@john-pc1204:~# umount /dev/sdc6
root@john-pc1204:~# mount /dev/sdc6 -o exec
root@john-pc1204:~# mount -l | grep sdc6
/dev/sdc6 on /media/NewHome20G type ext3 (rw,nosuid,nodev) [NewHome20G]

... e aqui a opção exec finalmente entrou em vigor e a configuração noexec desapareceu.

Apenas por interesse, reinstalei a partição com a opção de padrões

root@john-pc1204:~# umount /dev/sdc6
root@john-pc1204:~# mount /dev/sdc6 -o defaults
root@john-pc1204:~# mount -l | grep sdc6
/dev/sdc6 on /media/NewHome20G type ext3 (rw,noexec,nosuid,nodev) [NewHome20G]

O noexec está de volta, então parece muito com rw, noexec, nosuid, nodev são as opções padrão, que NÃO é o que o homem diz.

Por que isso importa?

Eu tenho uma pasta cheia de scripts úteis armazenados em um disco de dados. Como esse disco está montado noexec, esses scripts não serão executados, mesmo que todos tenham sido configurados com o chmod 777. Eu posso contornar isso de várias maneiras, mas é decepcionante que a entrada man pareça estar errada.

Perdi alguma coisa óbvia aqui ou as opções padrão no Ubuntu mudaram do que eram algumas versões atrás?

John Craick
fonte

Respostas:

18

O manual está correto . Seu problema é que talvez você não tenha explicado três detalhes importantes:

  • users(e user) implica as opções noexec, nosuide nodev

  • A menos que seja substituído por opções subsequentes

  • A ordem das opções é importante;)

Portanto, quando você usa rw,nosuid,nodev,exec,usersno seu fstab , a última opção users, define noexec,nosuid,nodev, desabilitando assim o seu exec(e também tornando o seu nosuid,nodevredundante).

O resultado, como esperado, é rw,noexec,nosuid,nodev.

E não, usersnão foi ignorado, mas geralmente não aparece na mountsaída da lista. Mas qualquer usuário pode desmontá-lo e montá-lo novamente. Tente!

rodrigo@desktop ~ $ mount /dev/sda6                     # ordinary user
rodrigo@desktop ~ $ mount | grep /dev/sda6
/dev/sda6 on /mnt/mint10 type ext4 (rw,noexec,nosuid,nodev)
rodrigo@desktop ~ $ /mnt/mint10/bin/echo it works       # noexec will deny this
bash: /mnt/mint10/bin/echo: Permission denied

mountmostrará apenas algo relacionado ao usuário se user( não users ) for usado e um usuário comum não raiz o monta, assim:

rodrigo@desktop ~ $ mount /dev/sda6         # ordinary user
rodrigo@desktop ~ $ mount | grep /dev/sda6  # it will list current "owner"
/dev/sda6 on /mnt/mint10 type ext4 (rw,noexec,nosuid,nodev,user=rodrigo)
rodrigo@desktop ~ $ umount /dev/sda6
rodrigo@desktop ~ $ sudo mount /dev/sda6
rodrigo@desktop ~ $ mount | grep /dev/sda6  # since owner=root, it won't show
/dev/sda6 on /mnt/mint10 type ext4 (rw,noexec,nosuid,nodev)
rodrigo@desktop ~ $ umount /dev/sda6        # only mounter can unmount
umount: only root can unmount LABEL=MINT10 from /mnt/mint10

Observe também que, ao usar usersem noauto, a partição será montada automaticamente (pelo root) na inicialização. Portanto, até que o root desmonte, ninguém será capaz de desmontar ou (re) montar.

Dito isto, acho que você já descobriu sua solução: basta alterar a ordem das suas opções e tudo funcionará bem:

LABEL=NewHome20G  /media/NewHome20G  ext3  users,exec  0  2

Observe como execé depois users . E também rw,nosuid,nodevnão é necessário. rwjá é um padrão e os outros são automaticamente ativados porusers

E o resultado é:

rodrigo@desktop ~ $ mount /dev/sda6                  # user mount
rodrigo@desktop ~ $ mount | grep /dev/sda6
/dev/sda6 on /mnt/mint10 type ext4 (rw,nosuid,nodev)
rodrigo@desktop ~ $ /mnt/mint10/bin/echo it works    # exec works
it works
rodrigo@desktop ~ $ sudo umount /dev/sda6            # root unmount
rodrigo@desktop ~ $ sudo mount /dev/sda6             # root mount
rodrigo@desktop ~ $ mount | grep /dev/sda6
/dev/sda6 on /mnt/mint10 type ext4 (rw,nosuid,nodev)
rodrigo@desktop ~ $ umount /dev/sda6                 # user unmount
rodrigo@desktop ~ $

Significa que qualquer usuário, raiz ou não-raiz, pode montá-lo e desmontá-lo, independentemente de quem o montou ou desmontou anteriormente. E executáveis ​​também funcionam :)

MestreLion
fonte
Você quis dizer "... ao usar usersem auto, a partição será montada automaticamente ..."?
Andreas J.
@AndreasJ. Não, eu quis dizer noauto. autojá é o comportamento padrão, portanto, sem noautoé o mesmo que com auto: a partição será montada automaticamente.
MestreLion
Desculpe, eu li errado sua frase. Faz todo o sentido!
Andreas J.