Mount cifs Network Drive: permisos de escritura y chown

99

Tengo acceso a una unidad de red cifs. Cuando lo monte debajo de mi máquina OSX, puedo leer y escribir desde y hacia él.

Cuando monte la unidad en ubuntu, usando:

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

No puedo escribir en la unidad de red, pero puedo leerlo. He comprobado los permisos y el propietario de la carpeta de montaje, se ven así:

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

No puedo cambiar el propietario, porque aparece el error:

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

Cuando desciendo más profundo en la unidad de red y cambio la propiedad allí, aparece el error de que no tengo permiso para cambiar el propietario de la carpeta.

¿Qué debo hacer para activar mi permiso de escritura?

Vincent
fuente
¿El sistema de archivos aparece en / etc / fstab? Si es así, ¿qué opciones tiene la entrada?
Jenny D
3
También puede usar la nopermopción de montaje que se indica de manera similar en mi respuesta a esta pregunta: unix.stackexchange.com/a/375523/16287 . Esto dará a todos los usuarios acceso de lectura y escritura al montaje CIFS.
Daniel

Respuestas:

137

Está montando el recurso compartido CIFS como root (porque lo usó sudo), por lo que no puede escribir como usuario normal. Si su distribución de Linux y su núcleo son lo suficientemente recientes como para poder montar el recurso compartido de red como un usuario normal (pero bajo una carpeta que posee el usuario), tendrá las credenciales adecuadas para escribir el archivo (por ejemplo, monte la carpeta compartida en algún lugar debajo de su directorio de inicio, como por ejemplo $HOME/netshare/. Obviamente, necesitaría crear la carpeta antes de montarla).

Una alternativa es especificar el ID de usuario y grupo que debe usar el recurso compartido de red montado, esto permitiría que ese usuario en particular y potencialmente el grupo escriban en el recurso compartido. Agregue las siguientes opciones a su montaje : uid=<user>,gid=<group>y reemplace <user>y, <group>respectivamente, por su propio usuario y grupo predeterminado, que puede encontrar automáticamente con el idcomando.

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

Si el servidor envía información de propiedad, es posible que deba agregar las opciones forceuidy 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
fuente
¡funcionó para mí! Pero deberíamos agregar que si la carpeta compartida está en una PC con un dominio de inicio de sesión, debe agregar la opción domain. Algo como esto: de sudo mount -t cifs -o username=${USER},password=${PASSWORD},dom=${DOMAIN}, uid=<user>,gid=<group> //server-address/folder /mount/path/on/ubuntuhecho, el dominio puede ir en la opción "nombre de usuario", pero recuerde que debe usar en /lugar de `, like username = DOMAIN / user.name`.
João Portela
Si eso es correcto. :-) Es posible que sea necesario especificar el dominio o grupo de trabajo (para versiones anteriores de Windows) mediante la opción "dominio =" o mediante el nombre de usuario, ese es un buen punto. Y a veces incluso es necesario especificar el esquema de cifrado o la versión CIFS que se utilizará. Pero todo esto no era parte de esta pregunta, así que lo dejé a un lado. :-)
Huygens
2
Esto es justo lo que necesitaba. Tenía una entrada en / etc / fstab para montar automáticamente la unidad de red en el inicio. No pude escribir en el montaje, así que agregué, uid = <myUserID> para una línea que se ve así://192.168.1.7/public /colmustang cifs username=<uname>,password=<upassword>,uid=<myUserID> 0 0
James
55
@ 71GA usernamees el inicio de sesión remoto que se utilizará para la autenticación. El uides el ID de usuario local que desea tomar una siesta de todos los archivos / carpetas. Entonces, el nombre de usuario está desacoplado del uid, el nombre de usuario es el inicio de sesión de usuario remoto mientras que el uid es su identificación de usuario local. Tenga en cuenta que podría ser lo mismo si su servidor es Samba y utiliza un LDAP u otra cuenta centralizada tanto en el cliente como en el servidor :-).
Huygens
1
@Tak Buena pregunta. Ver la respuesta editada.
Gilles
20

Probé el siguiente comando con éxito:

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
fuente
20
Use "id -u <usuario>" y "id -g <usuario> para obtener el uid y el gid respectivamente.
nvd
3
Tenga en cuenta que puede usar el nombre de usuario directamente como se documenta enman mount.cifs
jstricker
2
Para evitar escribir la contraseña junto con el comando, simplemente omita la opción de contraseña durante la llamada; luego, un mensaje lo solicitará para que pueda escribirse de forma invisible.
conceptdeluxe