¿Cómo monto un recurso compartido CIFS a través de FSTAB y le doy RW completo al invitado?

33

Quiero crear una carpeta pública que tenga acceso completo a RW. El problema con mi configuración es que los usuarios de Windows no tienen problemas como invitados (pueden RW y Eliminar), mi cliente Ubuntu no puede hacer lo mismo. Solo podemos escribir y leer, pero no crear o eliminar.

Aquí está mi smb.conf de mi servidor:

[global]
    workgroup = WORKGROUP
    netbios name = FILESERVER
    server string = TurnKey FileServer

    os level = 20
    security = user
    map to guest = Bad Password
    passdb backend = tdbsam
    null passwords = yes

    admin users = root
    encrypt passwords = true
    obey pam restrictions = yes
    pam password change = yes
    unix password sync = yes
    passwd program = /usr/bin/passwd %u
    passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .

    add user script = /usr/sbin/useradd -m '%u' -g users -G users
    delete user script = /usr/sbin/userdel -r '%u'
    add group script = /usr/sbin/groupadd '%g'
    delete group script = /usr/sbin/groupdel '%g'
    add user to group script = /usr/sbin/usermod -G '%g' '%u'

    guest account = nobody

    syslog = 0
    log file = /var/log/samba/samba.log
    max log size = 1000

    wins support = yes
    dns proxy = no

    socket options = TCP_NODELAY
    panic action = /usr/share/samba/panic-action %d


[homes]
    comment = Home Directory
    browseable = no
    read only = no
    valid users = %S

[storage]
    create mask = 0777
    directory mask = 0777
    browseable = yes
    comment = Public Share
    writeable = yes
    public = yes
    path = /srv/storage

La siguiente entrada de FSTAB no proporciona acceso completo R / W al recurso compartido.

//192.168.0.5/storage /media/myname/TK-Public/ cifs rw 0 0

Esto tampoco funciona

//192.168.0.5/storage /media/myname/TK-Public/ cifs rw,guest,iocharset=utf8,file_mode=0777,dir_mode=0777,noperm 0 0

El uso de la siguiente ubicación en Nemo / Nautilus sin el recurso compartido que se está montando funciona:

smb://192.168.0.5/storage/

Información extra. Acabo de notar que si copio un archivo al recurso compartido después del montaje, mi cliente Ubuntu inmediatamente hace que "nadie" sea el propietario, y el grupo "no group" ha leído y escrito, con todos los demás como de solo lectura.

ingrese la descripción de la imagen aquí

¿Qué estoy haciendo mal?

Kendor
fuente
Entonces, déjame ver: puedes montar el recurso compartido desde tu cliente Ubuntu (como root supongo dadas tus entradas fstab), luego puedes leer y escribir, pero no puedes eliminar o crear. ¿Cómo es que puedes copiar (para copiar, crear un archivo es imprescindible)?
Enero

Respuestas:

56

Resulta que necesito agregar un UID local (cliente) a la línea de montaje en FSTAB para que esto funcione. Llegué a esto por pura fuerza bruta:

//192.168.0.5/storage /media/myname/TK-Public/ cifs guest,uid=myuser,iocharset=utf8,file_mode=0777,dir_mode=0777,noperm 0 0
Kendor
fuente
3
Un problema común, y no hay respuesta en absoluto ... ¡Increíble!
dan3
Ohhh, justo lo que necesitaba ... muchas gracias, ¡buscando esto por horas!
pkdkk
1
Otro problema: asegúrese de que cifs-utilsesté instalado (para mí no se instaló en 16.04 después de instalar "main" samba pkg). Si no lo tiene instalado, obtendrá el error 'mala fs / mala opción'.
bshea
Después de instalar eso, utilicé permisos en otra respuesta y agregué: //10.20.30.40/share/mysharedir /mnt/mymountpoint cifs guest,uid=nobody,iocharset=utf8,noperm 0 0 a /etc/fstabentonces sudo mount -a. Parece montar / escribir bien ahora.
bshea
Para mí, una versión un poco más simple (sin uid) funcionó para montar correctamente R / W para todos los usuarios de un recurso compartido público desde otra máquina Linux://server_name/share_name /media/local_mountpoint cifs guest,iocharset=utf8,file_mode=0777,dir_mode=0777,noperm 0 0
woohoo
6

CIFS generalmente no tiene ningún concepto de usuario y grupo, por lo que montar un recurso compartido cifs mostrará por defecto al usuario y al grupo como 'nadie':

drwxdrwxdrwx. 3 nobody nobody 0 Sep 29 09:00 .
drwxdrwxdrwx. 9 nobody nobody 0 Sep 29 09:00 ..

Como no eres 'nadie', Linux no te permitirá escribir en nada que no tenga permiso 0777 a menos que uses sudo. Para solucionar esto, agregue uid = mylogin, gid = mygroup a fstab y hará que el recurso compartido aparezca como si fuera su propio directorio:

drwxdrwxdrwx. 3 mylogin mygroup 0 Sep 29 09:00 .
drwxdrwxdrwx. 9 mylogin mygroup 0 Sep 29 09:00 ..

Ahora tiene control total sin la necesidad de sudo.

En realidad, esto no cambia nada en el servidor, ya que el servidor no aplica nada. Le está diciendo a Linux que finja que usted es el propietario y que le otorgue acceso sin restricciones.

maharvey67
fuente
1
Sí, si usa invitado / nadie / etc. Asegúrese de que las carpetas principales tengan lectura / escritura / ejecución completas. Utilizo esta permanente en algunos recursos compartidos de red interna, por lo que no es un problema de seguridad. Upvoted
bshea
Pero, contrario a su publicación, pude usar userid 'nobody' (para el montaje) cuando tenía las opciones correctas para el montaje. Vea mis otros comentarios ..
bshea
Esta es una solución mucho mejor que establecer permisos extensos para todos en los archivos montados. Y funciona.
j08lue
5

Ya casi has llegado. Abra FSTAB usando:

sudo nano /etc/fstab

En la última línea (o una de las últimas líneas) coloque:

//192.168.0.5/storage /media/myname/TK-Public/ cifs username=YOURUSERNAME,password=YOURPASSWORD,iocharset=utf8,file_mode=0777,dir_mode=0777

*** (esto es todo una larga línea)

Ctrl- Xpara cerrar, Yguardar y Entrar para sellar el trato.

Ahora reiniciar por:

sudo reboot

¡Y debe tener el control total de la red compartida en su dispositivo Linux!

AndyShap
fuente
1
Es posible que desee reemplazar esa contraseña con una contraseña de ejemplo.
Spotlight
9
No es necesario reiniciar para montar fstabentradas. Solo mount <DEVICE>o mount <MOUNTPOINT>incluso mount -ahacer el trabajo bien.
David Foerster
1

Tuve este problema y fue porque el usuario del recurso compartido no era el propietario. Lo arreglé con "sudo chown {nombre de usuario}: {nombre de usuario} / {compartir} / {ruta}" después de eso pude mover y eliminar archivos.

Andrew Cleveland
fuente