¿Cómo establecer permisos de archivo predeterminados para todas las carpetas / archivos en un directorio?

254

Quiero establecer una carpeta para que todo lo creado dentro de él (directorios, archivos) herede los permisos y el grupo predeterminados.

Llamemos al grupo "medios". Y también, las carpetas / archivos creados dentro del directorio deberían tener g + rw automáticamente.

Chris
fuente
1
¿No lo controla el usuario que crea el nuevo archivo / carpeta y su umask?
Wadih M.
umask se relaciona con los permisos, pero no creo que haga nada al establecer un grupo predeterminado que no sea el usuario mismo.
Chris
1
Que sistema operativo Etiquetas necesarias setfacly las ACL predeterminadas no existen en AIX.
Amit Naidu

Respuestas:

269

Lo encontré: aplicando permisos predeterminados

Del artículo:

chmod g+s <directory>  //set gid 
setfacl -d -m g::rwx /<directory>  //set group to rwx default 
setfacl -d -m o::rx /<directory>   //set other

A continuación podemos verificar:

getfacl /<directory>

Salida:

# file: ../<directory>/
# owner: <user>
# group: media
# flags: -s-
user::rwx
group::rwx
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x
Chris
fuente
55
Yay por la parte pegajosa!
Gabe.
22
No confundamos gid con un poco pegajoso.
Amit Naidu
10
g + s asegurará que el nuevo contenido en el directorio herede la propiedad del grupo. setfacl solo cambia el chmod, en su caso establece el permiso para o = rx
Steen Schütt
10
Tenga en cuenta que ACL debe estar habilitado (incluido como una de las opciones de montaje para el sistema de archivos montado) para que se hereden los permisos de archivo.
sg23
11
Es posible que desee considerar el uso de 'X' en su lugar, por lo que solo establecerá el permiso de ejecución en directorios, no en archivossetfacl -d -m g::rwX /<directory>
Adrian Gunawan,
27

Esta es una adición a la respuesta de Chris, se basa en mi experiencia en mi plataforma Arch Linux.

El uso del modificador predeterminado (-d) y el modificador de modificación (-m) solo modificarán los permisos predeterminados, pero dejarán intactos los existentes:

setfacl -d -m g::rwx /<directory>

Si desea cambiar la estructura de permisos completa de la carpeta, incluidas las existentes (tendrá que hacer una línea adicional y hacerla recursiva -R:

setfacl -R -m g::rwx /<directory>

p.ej.

setfacl -R -m g::rwx /home/limited.users/<directory> // gives group read,write,exec permissions for currently existing files and folders, recursively
setfacl -R -m o::x /home/limited.users/<directory> //revokes read and write permission for everyone else in existing folder and subfolders 
setfacl -R -d -m g::rwx /home/limited.users/<directory> // gives group rwx permissions by default, recursively
setfacl -R -d -m o::--- /home/limited.users/<directory> //revokes read, write and execute permissions for everyone else. 

( CRÉDITO a markdwite en los comentarios para la sintaxis de la línea revocar todos los privilegios)

thebunnyrules
fuente
2
Para revocar los privilegios de grupo (como ejemplo): sudo setfacl -d -mg :: --- / path
markdwhite
1
¿es solo un error tipográfico que especifica setfacl -R -m g::rwx /<directory>dos veces en su respuesta?
Shane Rowatt
0

Agregue usted mismo / usuario registrado al grupo www-data, para que podamos trabajar con archivos creados por el servidor www-data

sudo usermod -a -G www-data $USER

Necesita reiniciar / volver a iniciar sesión para que el grupo recién agregado surta efecto

cd /var/www

Agregue www-data como miembro del grupo de la carpeta html, y su usuario como propietario, para que sea nuestro propietario y miembro del grupo

sudo chown -R $USER:www-data html

Pon tu nombre de usuario en lugar de USUARIO

Establezca los permisos de lectura, escritura y ejecución según sea necesario, (ugo) u = usuario, g = grupo, o = otros

sudo chmod 750 html

Establezca el GID de html, ahora, los archivos recién creados en html heredarán los permisos de propiedad:

sudo chmod g+s html

Esto crea las reglas predeterminadas para archivos / directorios recién creados dentro del directorio html y subdirectorios.

sudo setfacl -R -d -m u::rwX -m g::rX -m o::000 html

Haga SELinux si está instalado, ignore el requisito de contexto de www-data para que permita permisos de escritura

sudo setsebool -P httpd_unified 1

directorio de la lista para ver los nuevos permisos aplicados

ls -ld html

Devuelve esto

drwxrwsr-x+   3 html www-data

El + al final significa que ACL, Lista de control de acceso, está establecida en el directorio.

Referencia : Enlace al foro

Bsienn
fuente
-2

Con el siguiente comando puede establecer el permiso predeterminado para un archivo:

chacl -R filename
usuario240513
fuente
3
¿Cómo difiere esto de otras respuestas? Y dar algunos ejemplos
Romeo Ninov
3
¿Estás seguro de que eso es lo que hace? linux.die.net/man/1/chacl indica que eliminará una ACL.
Jeff Schaller