Quali sono le impostazioni di montaggio predefinite per mount / fstab?

16

Quali sono le opzioni di montaggio predefinite per una partizione non di root?

La voce man per mount dice ...

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

... così potrebbe essere quello che ci aspettiamo di vedere. Ma, a meno che mi manchi qualcosa, non è quello che succede.

Ho una partizione ext3 con l'etichetta "NewHome20G" che è vista come / dev / sdc6 dal sistema. Questo possiamo vedere da ...

[email protected]:~# blkid | grep NewHome20G
/dev/sdc6: LABEL="NewHome20G" UUID="d024bad5-906c-46c0-b7d4-812daf2c9628" TYPE="ext3" 

Ho una voce in fstab come segue ...

[email protected]:~# cat /etc/fstab | grep NewHome
LABEL=NewHome20G        /media/NewHome20G        ext3         rw,nosuid,nodev,exec,users     0  2

Notare le impostazioni delle opzioni che sono specificate in quella riga fstab.

Ora guardo come viene effettivamente montata la partizione dopo l'avvio ...

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

... così, quando il filesystem viene montato, exec & amp; le opzioni degli utenti che ho specificato sembrano essere state ignorate.

Per sicurezza, smonta sdc6, rimontalo e guarda di nuovo le opzioni di mount ...

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

.... stesso risultato

Ora smonta di nuovo la partizione, rimontala specificando l'opzione exec e guarda il risultato ...

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

... e qui l'opzione exec è finalmente entrata in vigore e l'impostazione noexec è scomparsa.

Solo per interesse, rimetto la partizione con l'opzione di default

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

Il noexec è tornato, quindi sembra molto simile a rw, noexec, nosuid, nodev sono le opzioni predefinite che NON è quello che dice l'uomo.

Perché questo è importante?

Ho una cartella piena di utili script memorizzati su un disco di dati. Perché quel disco è montato noexec quegli script non funzioneranno, anche se sono stati tutti impostati con chmod 777. Posso lavorare su questo in molti modi ma è deludente che la voce man sia sbagliata.

Ho perso qualcosa di ovvio qui o le opzioni predefinite in Ubuntu sono cambiate da quelle che erano alcune versioni fa?

    
posta John Craick 31.08.2012 - 17:38

1 risposta

16

Il manuale è corretto . Il tuo problema è che forse non hai tenuto conto di 3 dettagli importanti:

  • users (e user ) implica le opzioni noexec , nosuid e nodev

  • Salvo sovrascrizione da successive opzioni

  • Opzioni ordine questioni;)

Quindi, quando utilizzi rw,nosuid,nodev,exec,users nel tuo fstab , l'ultima opzione, users , imposta noexec,nosuid,nodev , disabilitando così exec (e rendendo anche il nosuid,nodev ridondante) .

Il risultato, come previsto, è rw,noexec,nosuid,nodev .

E no, users non è stato ignorato, ma di solito non viene visualizzato in mount nell'output dell'elenco. Ma ogni utente può smontarlo e montarlo di nuovo. Provalo!

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

mount mostrerà solo qualcosa correlato all'utente se viene utilizzato user ( non users ) e un utente normale non root lo monta , in questo modo:

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

Si noti inoltre che, quando si utilizza user senza noauto , la partizione verrà autoportata (dalla root) all'avvio. Quindi finché non viene smontato da root, nessuno sarà in grado di smontare o (ri) montare.

Detto questo, immagino che tu abbia già capito la tua soluzione: cambia semplicemente l'ordine delle tue opzioni e tutto funzionerà bene:

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

Nota come exec è dopo users . E anche rw,nosuid,nodev non è necessario. rw è già un valore predefinito e gli altri sono automaticamente attivati ​​da users

E il risultato è:

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

Significato di qualsiasi utente, root o non root, può montarlo e smontarlo, indipendentemente da chi è stato precedentemente montato o smontato. Anche gli eseguibili funzionano:)

    
risposta data MestreLion 19.09.2012 - 23:21

Leggi altre domande sui tag