Montare cifs Network Drive: permessi di scrittura e chown


99

Ho accesso a un'unità di rete cifs. Quando lo monto sotto la mia macchina OSX, posso leggere e scrivere da e verso di esso.

Quando monto l'unità in Ubuntu, usando:

sudo mount -t cifs -o username=${USER},password=${PASSWORD} //server-address/folder /mount/path/on/ubuntu

Non riesco a scrivere sull'unità di rete, ma posso leggere da esso. Ho controllato i permessi e il proprietario della cartella mount, sembrano:

4.0K drwxr-xr-x  4 root root    0 Nov 12  2010 Mounted_folder

Non riesco a cambiare il proprietario, perché viene visualizzato l'errore:

chown: changing ownership of `/Volumes/Mounted_folder': Not a directory

Quando scendo più a fondo nell'unità di rete e cambio la proprietà lì, ricevo l'errore di non avere il permesso di cambiare il proprietario della cartella.

Cosa devo fare per attivare il mio permesso di scrittura?


Il file system è elencato in / etc / fstab? In tal caso, quali opzioni ha la voce?
Jenny D,

3
Puoi anche utilizzare l' nopermopzione di montaggio indicata in modo simile nella mia risposta a questa domanda: unix.stackexchange.com/a/375523/16287 . Questo darà a tutti gli utenti l'accesso in lettura e scrittura al mount CIFS.
Daniel,

Risposte:


137

Stai montando la condivisione CIFS come root (perché hai usato sudo), quindi non puoi scrivere come utente normale. Se la tua distribuzione Linux e il suo kernel sono abbastanza recenti da poter montare la condivisione di rete come un normale utente (ma in una cartella di proprietà dell'utente), avrai le credenziali appropriate per scrivere il file (ad esempio montare la cartella condivisa da qualche parte sotto il tuo home directory, come ad esempio $HOME/netshare/. Ovviamente, è necessario creare la cartella prima di montarla).

Un'alternativa è specificare l'ID utente e di gruppo che deve essere usato dalla condivisione di rete montata, ciò consentirebbe a quel particolare utente e potenzialmente gruppo di scrivere nella condivisione. Aggiungi le seguenti opzioni alla tua montatura : uid=<user>,gid=<group>e sostituisci <user>e <group>rispettivamente con il tuo utente e gruppo predefinito, che puoi trovare automaticamente con il idcomando.

sudo mount -t cifs -o username=${USER},password=${PASSWORD},uid=$(id -u),gid=$(id -g) //server-address/folder /mount/path/on/ubuntu

Se il server sta inviando informazioni sulla proprietà, potrebbe essere necessario aggiungere le opzioni forceuide forcegid.

sudo mount -t cifs -o username=${USER},password=${PASSWORD},uid=$(id -u),gid=$(id -g),forceuid,forcegid, //server-address/folder /mount/path/on/ubuntu

ha funzionato per me! Ma dovremmo aggiungere che se la cartella condivisa si trova in un PC con un dominio di accesso è necessario aggiungere l'opzione domain. Qualcosa del genere: sudo mount -t cifs -o username=${USER},password=${PASSWORD},dom=${DOMAIN}, uid=<user>,gid=<group> //server-address/folder /mount/path/on/ubuntuin effetti il ​​dominio può andare nell'opzione "nome utente", ma ricorda che devi usare al /posto di `, like username = DOMAIN / user.name`.
João Portela,

Sì, è corretto. :-) Potrebbe essere necessario specificare il dominio o il gruppo di lavoro (per la versione precedente di Windows) tramite l'opzione "domain =" o tramite il nome utente, questo è un buon punto. E a volte è anche necessario specificare lo schema di crittografia o la versione CIFS da utilizzare. Ma tutto ciò non faceva parte di questa domanda, quindi l'ho lasciato da parte. :-)
Huygens,

2
Questo è proprio quello di cui avevo bisogno. Ho avuto una voce in / etc / fstab per montare automaticamente l'unità di rete all'avvio. Non sono riuscito a scrivere sul mount, quindi ho aggiunto uid = <myUserID> per una riga simile a questa://192.168.1.7/public /colmustang cifs username=<uname>,password=<upassword>,uid=<myUserID> 0 0
James,

5
@ 71GA usernameè il login remoto da utilizzare per l'autenticazione. L' uidID utente locale che si desidera intercettare tutti i file / cartelle. Quindi il nome utente viene disaccoppiato dall'UID, il nome utente è l'accesso dell'utente remoto mentre l'UID è l'ID utente locale. Nota che potrebbe essere la stessa cosa se il tuo server è Samba e usi un LDAP o un altro account centralizzato sia sul client che sul server :-).
Huygens,

1
@Tak Buona domanda. Vedi la risposta modificata.
Gilles,

20

Ho testato con successo il seguente comando:

sudo mount -t cifs -o username=[username],password=[password],uid=1001,gid=1001 //172.16.148.2/dfsgob01 /home/ususario/Documentos/benz-win

20
Usa "id -u <utente>" e "id -g <utente> per ottenere rispettivamente uid e gid.
nvd

3
Si noti che è possibile utilizzare il nome utente direttamente come documentato inman mount.cifs
jstricker

2
Per evitare di scrivere la password insieme al comando, ometti l'opzione password durante la chiamata: verrà quindi richiesto da un prompt in modo che possa essere digitato in modo invisibile.
conceptdeluxe,
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.