Mount cifs Network Drive: autorisations d'écriture et chown

99

J'ai accès à un lecteur réseau cifs. Lorsque je le monte sous ma machine OSX, je peux lire et écrire dessus.

Quand je monte le disque dans Ubuntu, en utilisant:

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

Je ne parviens pas à écrire sur le lecteur réseau, mais je peux en lire un extrait. J'ai vérifié les autorisations et le propriétaire du dossier de montage, ils ressemblent à:

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

Je ne peux pas changer le propriétaire, car j'ai l'erreur:

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

Lorsque je descends plus profondément dans le lecteur réseau et que je change de propriétaire, j'obtiens l'erreur de ne pas être autorisé à changer le propriétaire du dossier.

Que dois-je faire pour activer mon autorisation en écriture?

Vincent
la source
Le système de fichiers est-il listé dans / etc / fstab? Si oui, quelles sont les options de l'entrée?
Jenny D
3
Vous pouvez également utiliser l' nopermoption de montage indiquée de la même manière dans ma réponse à cette question: unix.stackexchange.com/a/375523/16287 . Cela donnera à tous les utilisateurs un accès en lecture et en écriture au montage CIFS.
Daniel

Réponses:

137

Vous montez le partage CIFS en tant que root (parce que vous avez utilisé sudo), vous ne pouvez donc pas écrire en tant qu'utilisateur normal. Si votre distribution Linux et son noyau sont suffisamment récents pour que vous puissiez monter le partage réseau en tant qu'utilisateur normal (mais dans un dossier que l'utilisateur possède), vous disposerez des informations d'identification appropriées pour écrire le fichier (par exemple, montez le dossier partagé quelque part sous votre dossier). répertoire de base, comme par exemple $HOME/netshare/. Évidemment, vous devrez créer le dossier avant de le monter).

Une autre solution consiste à spécifier l'identifiant de l'utilisateur et du groupe que le partage réseau monté doit utiliser, afin de permettre à cet utilisateur particulier et potentiellement à un groupe d'écrire sur le partage. Ajoutez les options suivantes à votre montage : uid=<user>,gid=<group>et remplacez <user>et <group>respectivement par votre propre utilisateur et votre groupe par défaut, que vous pouvez trouver automatiquement avec la idcommande.

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

Si le serveur envoie des informations sur la propriété, vous devrez peut-être ajouter les options forceuidet 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
Huygens
la source
cela a fonctionné pour moi! Mais nous devrions ajouter que si le dossier partagé est dans un PC avec un domaine de connexion, vous devez ajouter l'option domain. Quelque chose comme ceci: sudo mount -t cifs -o username=${USER},password=${PASSWORD},dom=${DOMAIN}, uid=<user>,gid=<group> //server-address/folder /mount/path/on/ubuntuEn fait, le domaine peut aller dans l'option "nom d'utilisateur", mais n'oubliez pas que vous devez utiliser à la /place du `, like nom d' utilisateur = DOMAIN / user.name`.
João Portela
Oui c'est correct. :-) Il peut être nécessaire de spécifier le domaine ou le groupe de travail (pour les anciennes versions de Windows) via l'option "domain =" ou via le nom d'utilisateur, c'est un bon point. Et parfois, il est même nécessaire de spécifier le schéma de chiffrement ou la version de CIFS à utiliser. Mais tout cela ne faisait pas partie de cette question, alors je l'ai laissée de côté. :-)
Huygens
2
C'est juste ce dont j'avais besoin. J'avais une entrée dans / etc / fstab pour monter automatiquement le lecteur réseau au démarrage. Je ne pouvais pas écrire sur la monture, j'ai donc ajouté, uid = <myUserID>, pour une ligne qui ressemble à ceci://192.168.1.7/public /colmustang cifs username=<uname>,password=<upassword>,uid=<myUserID> 0 0
James
5
@ 71GA usernameest le login distant à utiliser pour l'authentification. Le uidest l'ID utilisateur local que vous voulez faire une sieste tous les fichiers / dossiers. Ainsi, le nom d'utilisateur est découplé de l'uid, le nom d'utilisateur est l'identifiant de l'utilisateur distant, tandis que l'uid est votre identifiant d'utilisateur local. Notez que cela pourrait être la même chose si votre serveur est Samba et que vous utilisez un compte LDAP ou un autre compte centralisé sur le client et le serveur :-).
Huygens
1
@Tak Bonne question. Voir la réponse modifiée.
Gilles
20

J'ai testé la commande suivante avec succès:

sudo mount -t cifs -o username=[username],password=[password],uid=1001,gid=1001 //172.16.148.2/dfsgob01 /home/ususario/Documentos/benz-win
ricardo leon
la source
20
Utilisez "id -u <utilisateur>" et "id -g <utilisateur> pour obtenir l'uid et le gid respectivement.
nvd
3
Notez que vous pouvez utiliser le nom d'utilisateur directement comme man mount.cifs
indiqué
2
Pour éviter d'écrire le mot de passe à côté de la commande, omettez simplement l'option mot de passe pendant l'appel. Une invite vous le demandera afin qu'il puisse être saisi de manière invisible.
conceptdeluxe