Desde un script de shell bash, estoy creando una carpeta y almacenando mysqldump allí. Estoy seguro de que no hay ningún comando relacionado con los permisos en mi script. Para permitir que otro usuario acceda a estos archivos, utilicé ACL, pero cuando intentó acceder al archivo, se le negó el permiso y el problema es con effective
los permisos de ACL.
El propietario del directorio es ola
un nuevo usuario que intenta acceder a la carpeta uber
y la carpeta esgettaxi
Permisos del directorio principal
[/omega/olabooktmp]# getfacl .
# file: .
# owner: ola
# group: ola
user::rwx
user:uber:rwx
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:user:uber:rwx
default:group::r-x
default:mask::rwx
default:other::r-x
Permisos del directorio infantil
[/omega/olabooktemp]# getfacl gettaxi/
# file: gettaxi/
# owner: ola
# group: ola
user::rwx
user:uber:rwx #effective:---
group::r-x #effective:---
mask::---
other::---
default:user::rwx
default:user:uber:rwx
default:group::r-x
default:mask::rwx
default:other::r-x
Veo que gettaxi
los permisos de la máscara de directorio nuevo son mask::---
, así que creo que esto está causando un problema, pero no puedo entender completamente cómo resolver este problema.
Cualquier sugerencia será muy apreciada.
Gracias.
Respuesta1
Puedes cambiar la máscara con el siguiente comando:
setfacl -m m:rwx filename/directory
Respuesta2
Si entiendo bien su pregunta, el usuario ola
está creando archivos en el directorio:/omega/olabooktmp/gettaxi
y desea restringir el acceso a esos archivos, pero otorgando acceso al usuario uber
.
Nota: /omega/olabooktmp/gettaxi
es propiedad deola
Comencemos sin ACL todavía:
ls -ld /omega/olabooktmp/gettaxi
drwxr-x--- 2 ola ola 4096 mars 21 08:16 /omega/olabooktmp/gettaxi
Para otorgar rwx
permiso para uber
usar ACL, puede usar:
setfacl -m u:uber:rwx,d:u:uber:rwX,o:--- /omega/olabooktmp/gettaxi
Lo que permitirá uber
derechos de usuario rwx
en la carpeta /omega/olabooktmp/gettaxi
y también otorgará rwx
como default
y d:
. X
Otorga permiso sobre archivos previamente presentes en la carpeta y otorga permisos heredados para archivar. Y también elimine otros permisos other
para restringir, por supuesto. El propietario todavía tiene su propio permiso.
El resultado:
getfacl /omega/olabooktmp/gettaxi
getfacl: Removing leading '/' from absolute path names
# file: omega/olabooktmp/gettaxi
# owner: ola
# group: ola
user::rwx
user:uber:rwx
group::r-x
mask::rwx
other::---
default:user::rwx
default:user:uber:rwx
default:group::r-x
default:mask::rwx
default:other::---
Pruebas:
ola
crea algunos archivos (ejecutarlos como root):
su - ola -c "for i in {1..3}; do date > /omega/olabooktmp/gettaxi/$RANDOM; done"
Resultado:
ls -l /omega/olabooktmp/gettaxi/
total 32
-rw-r----- 1 ola users 32 mars 21 08:43 17606
-rw-r----- 1 ola users 32 mars 21 08:43 22286
-rw-r----- 1 ola users 32 mars 21 08:42 31484
-rw-r----- 1 ola users 32 mars 21 08:43 31848
-rw-r----- 1 ola users 32 mars 21 08:42 667
-rw-r----- 1 ola users 4 mars 21 08:16 one
-rw-r----- 1 ola users 6 mars 21 08:16 three
-rw-r----- 1 ola users 4 mars 21 08:16 two
No puede ser accedido por un usuario normal (ejecutar como root):
su - debian -c "ls -l /omega/olabooktmp/gettaxi"
ls: cannot open directory '/omega/olabooktmp/gettaxi': Permission denied
Pero uber puede (ejecutarlo como root):
su - uber -c "ls -l /omega/olabooktmp/gettaxi"
total 32
-rw-r----- 1 ola users 32 Mar 21 08:43 17606
-rw-r----- 1 ola users 32 Mar 21 08:43 22286
-rw-r----- 1 ola users 32 Mar 21 08:42 31484
-rw-r----- 1 ola users 32 Mar 21 08:43 31848
-rw-r----- 1 ola users 32 Mar 21 08:42 667
-rw-r----- 1 ola users 4 Mar 21 08:16 one
-rw-r----- 1 ola users 6 Mar 21 08:16 three
-rw-r----- 1 ola users 4 Mar 21 08:16 two
Si destruye su ACL con algunas pruebas, puede eliminar todas las ACL con:
setfacl -R -b /omega/olabooktmp/gettaxi
Y empezar de nuevo.
Respuesta3
Sí, la máscara está reduciendo los permisos. El permiso efectivo es el y de un permiso y la máscara. ( user::
(el usuario propietario), y other
no se ven afectados por la máscara).
Puedes cambiar la máscara con: por ejemplo setfacl -m m:r-x file-name
.
Cuando haces an ls -l
, si el modo termina con a +
, entonces los bits del modo medio (tradicionalmente los bits de grupo) son la máscara.
A veces, los bits de modo se configuran de acuerdo con los bits de grupo en umask
. Todavía no he elaborado las reglas sobre cuándo sucede esto y cuándo se usa la máscara predeterminada. Al usar cp
para copiar un archivo, parece usar el archivo umask
.
Una solución
Asegúrese de que los usuarios tengan su propio grupo y que esté configurado como el grupo predeterminado. Luego establezca el umask
en 007
.
Respuesta4
Sospecho que el comportamiento es un error. Publiqué sobre esto el mes pasado (consulte unix.stackexchange.com/questions/570795). Lo que sucede es que los permisos del archivo fuente se copian en la máscara acl mediante el comando cp. Esto es lo que hubiera esperado para cp -p, no para cp. Descubrí que puedo hacer copias usando cat.
cat afile > bfile
o mediante tuberías a través de alquitrán
(cd A; tar -cf -)|(cd B; tar-xf -)
Y las ACL se respetan como se esperaba.
También ofrecí una recompensa para que me explicaran este comportamiento de CP. Nadie lo explicó. Estoy pensando en presentar un informe de error. Es decir, este debería ser el comportamiento ´cp -p´, no el comportamiento básico de cp. (Y el sistema dedujo los puntos de recompensa a pesar de que nadie pudo dar una respuesta. Eso también me sorprendió).