
Configuré un samba shire básico para compartir archivos multimedia a través de SMB en mi red local sin credenciales (es decir, como invitado SMB)
/etc/samba/smb.conf
[media]
Comment = Media directory
Path = /mnt/media
Browseable = yes
Writeable = Yes
create mask = 0666
directory mask = 0777
Public = yes
Cuando creo un directorio llamado example
usando SMB en Windows, la estructura del directorio se ve así
ls -alh
total 28K
drwxrwxrwt 4 root root 4.0K Oct 21 13:44 ./
drwxr-xr-x 3 root root 4.0K Oct 20 13:33 ../
drwxrwxrwx 2 nobody nogroup 4.0K Oct 21 13:44 example/
drwx------ 2 root root 16K Oct 20 13:36 lost+found/
lsattr
--------------e----- ./example
Cuando intento eliminar el directorio del sistema usando una cuenta de usuario estándar, aparece un mensaje de error.
rmdir: no se pudo eliminar 'ejemplo': operación no permitida
Sin embargo, puedo eliminar la carpeta usando SMB en Windows. ¿Qué está sucediendo aquí y cómo puedo permitir que cualquier usuario local de Unix elimine o modifique archivos creados por un invitado a través de SMB?
Respuesta1
La t
bandera en los permisos del directorio principal declara que solo el propietario de un directorio (o raíz) puede eliminar un archivo o directorio del mismo.
Samba parece estar configurado para proporcionar acceso de usuario como cuenta nobody
. No es nobody
así, por lo que no tiene derechos para eliminar el directorio.
No te recomiendo que crees archivos y directorios en el nivel superior. Deje eso para lost+found
un directorio de datos y comparta ese directorio de datos en lugar del punto de montaje.
# Remove global write permission from the mountpoint
chmod go-w,-t /mnt/media
# Create your files and directories in here
mkdir -m777 /mnt/media/data
Ahora arregla la ruta de datos de Samba.
[media]
comment = Media directory
path = /mnt/media/data
browseable = yes
read only = no
guest ok = yes
force directory mode = 0777
force create mode = 0666