2 votos

¿Cómo montar un recurso compartido SMB desde la línea de comandos y acceder a él sin Root?

Si uso el acceso directo K del Finder, puedo montar recursos compartidos SMB como mi usuario normal de MacOS. Se crea un punto de montaje en /Volumes, y el punto de montaje será propiedad del usuario con el que he iniciado la sesión.

Pero este enfoque tiene sus limitaciones. Una de ellas es que Finder sólo le permitirá utilizar una cuenta en el sistema remoto. En otras palabras, si tengo acceso a dos directorios personales bajo diferentes cuentas en el mismo servidor SMB, no puedo montar ambos con Finder.

Pero puedo montar ambos desde la línea de comandos. El comando es:

mount -t smbfs //user@host/target mount-point

Aparentemente, en las versiones más antiguas de MacOS simplemente se ejecutaba este comando como usuario normal y el montaje resultante era propiedad de ese usuario. Alguien dice haber tenido éxito haciendo esto aquí .

Otra persona tuvo el mismo problema que yo, pero con un error diferente, aquí . Las soluciones aportadas entonces no funcionan ahora.

En mi sistema MacOS 10.15.7, no se puede ejecutar el mount a menos que seas Root. El error que se obtiene si se ejecuta sin Root depende de si el punto de montaje existe o no.

Si lo hace:

macbook:~ user$ mount -t smbfs //user@host/remote-path local-path
Password for host: 
mount_smbfs: mount error: /Users/user/local-path: File exists
mount: /Users/user/local-path failed with 64

Si no lo hace:

macbook:~ user$ rmdir local-path
macbook:~ user$ mount -t smbfs //user@host/remote-path local-path
mount: realpath /Users/user/local-path: No such file or directory

El File exists no se debe a que el recurso compartido SMB ya esté montado.

Si ejecuto el comando como Root, entonces tiene éxito si el punto de montaje existe, pero el punto de montaje es propiedad de Root y sólo es accesible por Root.

El comando equivalente en Linux acepta un -o uid=<uid> que controla qué usuario será el propietario de los archivos. La página de manual de mount_smbfs no documenta ninguna opción de este tipo, y no acepta el -o uid opción.

¿Hay alguna manera de hacer lo que hace Finder (hacer que el punto de montaje sea propiedad de user ) pero desde la línea de comandos?

0voto

MongoTheGeek Puntos 101

El punto de montaje debe ser un directorio en la máquina local. Dependiendo de lo que esté haciendo, me gusta usar una carpeta en el directorio local del usuario.

cd ~/Desktop
mkdir user1mp
mkdir user2mp
mount -t smbfs -o nobrowse smb://user1:pass1@host/user1 user1mp
mount -t smbfs -o nobrowse smb://user2:pass2@host/user2 user2mp

0 votos

Estoy utilizando un directorio en la máquina local. Sólo funciona para root y no para usuarios normales.

-1voto

skitheo Puntos 1

Parece que hay 2 caminos, ninguno idealmente lo que usted desea. Información tomada en gran medida de este puesto :

  1. Utilice el comando

    $ open 'smb://user@hostname/shared_drive/directory'

    Esto utilizará el Finder para hacer lo mismo que utilizando el menú del Finder Ir->Conectar con el servidor. Esto preservará los permisos correctos y la propiedad de los nodos compartidos.

  2. Crea un directorio de montaje, establece la propiedad a ti mismo, monta el recurso compartido:

    $ sudo mkdir -p /Volumes/Local_mount_folder
    $ sudo chown your_local_user /Volumes/Local_mount_folder
    $ mount -t smbfs //WORKGROUP\;user@hostname/shared_drive/directory /Volumes/Local_mount_folder

    Observe que la última línea NO contiene 'sudo'. No es necesario para el comando de montaje en Mac OS 12.1 si usted es dueño del punto de montaje. Se le pedirá su grupo de trabajo \user contraseña del dominio. El grupo de trabajo será necesario si se conecta a un dominio.

    También tenga en cuenta que esta opción hará que todos los nodos (archivos y directorios) en root (y posiblemente más) del recurso compartido montado aparezcan como de su propiedad. Eso no juega bien en el ecosistema SMB, IMO.

Si recibe un mensaje de error que dice que 'El archivo existe', lo más probable es que tenga un directorio de montaje con ese nombre, propiedad de Root, y sólo visible para Root. Para verlo debes hacer 'sudo ls -alF /Volumes'. Una vez confirmado puede 'sudo rmdir <ruta_de_carpeta>' para detener el mensaje de error.

Para desmontar y eliminar el punto de montaje, simplemente:

    $ sudo umount /Volumes/Local_mount_folder

Recibirás un mensaje de error si haces esto con cualquier archivo/directorio abierto en ese recurso compartido, incluyendo el Terminal Windows.

Por lo tanto, sigo buscando un refinamiento de la opción 2 anterior.

0 votos

La opción 1 tiene graves limitaciones (no se puede conectar al servidor SMB como dos usuarios diferentes), y la opción 2 no funciona (me sale el mensaje File exists error que encontré originalmente). El comando mount sólo tiene éxito con sudo .

0 votos

Probablemente no sea relevante, pero no hay grupo de trabajo en mi red, así que lo dejo fuera. El servidor es Samba en Linux.

0 votos

No puede montar en un punto de montaje propiedad de Root a menos que lo monte como Root. Sin embargo, con MacOS 12.1, ciertamente PUEDES montar en un punto de montaje de tu propiedad. sin sudo.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X