Perché i file in una condivisione montata su smbfs vengono creati con bit eseguibile impostato?


14

Ho montato una condivisione samba usando il comando smbmount:

$ sudo smbmount \\\\foo\\bar /mnt/bar -o user=tom

Quando creo nuovi file, vengono creati con il bit eseguibile impostato per proprietario, gruppo e mondo. Per es

$ touch hello.txt 
$ ls -la hello.txt
-rwxr-xr-x 1 root root 0 Dec  2 12:28 hello.txt

Lo stesso file quando viene creato su una condivisione montata NFS imposta le autorizzazioni corrette senza alcun set di bit eseguibile.

Perché sta succedendo? Come può essere aggiustato?

Risposte:


11

NFS è stato inventato nel mondo Unix e comprende immediatamente le autorizzazioni Unix tradizionali. (L'ACL dei moderni sistemi unix è un'altra questione, ma le recenti implementazioni di NFS dovrebbero farcela.)

Samba è stato inventato nel mondo dei PC IBM / Microsoft, per scambiare file con sistemi che non avevano autorizzazioni oltre alla sola lettura / lettura-scrittura. Ora è nativo di Windows. Per impostazione predefinita, Samba non trasmette autorizzazioni Unix. A seconda della configurazione, tutti i file sono contrassegnati come eseguibili (il che è fastidioso) o tutti i file (tranne le directory) sono contrassegnati come non eseguibili (il che è fastidioso).

Esistono varie estensioni al protocollo Samba / CIFS che lo rendono più adatto all'uso di Unix. Prova ad abilitare le estensioni Unix nella configurazione del server:

[global]
unix extensions = yes

Purtroppo nella mia intranet aziendale, non ho accesso per configurare il server. Forse, sarebbe meglio montare solo usando NFS su un client Linux. Il problema più grande è su un client Windows, in cui la configurazione di NFS è un dolore al collo.
vivekian2

@ vivekian2 In effetti, se hai la scelta, consiglio vivamente di usare NFS su un client Linux e SMB su un client Windows.
Gilles 'SO- smetti di essere malvagio' il

10

Questo suona come il tuo problema, intitolato: I file copiati ottengono bit di esecuzione su Samba / CIFS .

estratto

Dopo aver copiato un file con rw-r ----- su un volume montato su CIFS, la copia ottiene rwxr -----. Quindi sta guadagnando il bit di esecuzione:

Più in basso nella pagina, impostando map archive = noin /etc/samba/smb.conf:

estratto

  [Global]
  <snip>
  map archive = no
  <snip>

Questo risolve certamente il problema dei file salvati da Windows che ottengono il flag di esecuzione. Grazie! Un altro pazzo default, qualcuno ha usato le bandiere degli archivi negli ultimi 2 decenni? :)
Rennex,

4

Potresti provare: mount -t cifs

Google "mount cifs" per l'uso, non è difficile da capire, ma ti consigliamo di impostare le opzioni usando il flag -o:

uid =, gid =, RW, noperm, dir_mask = 0775, file_mask = 0664

Utente e gruppo sono ID, come in numerico non l'alias di testo. Queste opzioni assicureranno che tu abbia accesso r / w, le autorizzazioni siano controllate dal mount no il server e in particolare file_mask=0664assicureranno che i tuoi file non siano eseguibili. Inoltre, sarai in grado di lavorare con le tue condivisioni di samba come directory locali.


Nella versione recente di samba potrebbe essere necessario utilizzarefile_mode=0644,dir_mode=0755
Jokester il

ATTENZIONE: l'opzione di montaggio CIFS 'dmask' è obsoleta. Utilizzare invece 'dir_mode'. ATTENZIONE: l'opzione di montaggio CIFS 'fmask' è obsoleta. Utilizzare invece 'file_mode'.
Hubbitus,

4

Puoi scoprire perché questo sta accadendo dalla seguente spiegazione sul sito Web Samba nella sezione Autorizzazioni file e attributi su MS-DOS e Unix :

https://www.samba.org/samba/docs/using_samba/ch08.html

Ha a che fare con la mappatura dei bit System, Hidden e Archive per un filesystem MS-DOS.

Un filesystem MS-DOS non utilizza bit eseguibili, quindi i tre bit eseguibili sul filesystem Unix vengono riutilizzati per rappresentare i bit System, Hidden e Archive per il filesystem MS-DOS.

Quindi, quando si visualizzano i permessi dei file usando ls -lin Unix, si visualizzano i permessi dei file adatti per MS-DOS (o Windows) tenendo presente che i tre bit eseguibili in Unix rappresentano i bit System, Hidden e Archive per MS-DOS.

In smb.conf, tuttavia, puoi disattivare questa mappatura per una condivisione con:

map archive = no
map system = no
map hidden = no

e imporre la modalità alla creazione di file con:

force create mode = 0660

Si è rivelato così semplice ... Grazie per le spiegazioni!
anton_rh

1

Uso un QNAP TS439 e ho riscontrato questo problema con i file eseguibili.

Anche se ho dovuto usare quanto segue nel mio /etc/fstabfile

//192.168.0.1/audio /media/audio cifs credentials=/home/cheese/.smbcredentials,uid=1000,file_mode=0664,iocharset=utf8  0  0 
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.