¿Quién puede cambiar los permisos de un archivo/directorio?

¿Quién puede cambiar los permisos de un archivo/directorio?

Creo (no estoy seguro) que el propietario de un archivo/directorio y el usuario root son los únicos usuarios que pueden cambiar los permisos de un archivo/directorio. ¿Estoy en lo cierto o hay otros usuarios a los que también se les permite cambiar los permisos?

Respuesta1

Sólo el propietario y root(superusuario) pueden cambiar el permiso de un archivo o directorio. Esto significa que el propietario y el superusuario pueden configurar los permisos de lectura ( r), escritura ( w) y ejecución ( x). Pero cambiar la propiedad del usuario de archivos y directorios con el comando chownsolo está permitido root. chgrpSe permite cambiar la propiedad del grupo con rootel propietario del archivo, si el usuario es miembro del nuevo grupo.

Respuesta2

Para el funcionamiento normal, sólo el root y el propietario pueden hacerlo chmod. Además, root puede chowny chgrp, además, el propietario puede hacerlo chgrpsiempre que sea miembro del grupo objetivo.

Sin embargo, por motivos de seguridad, existe otro caso: cualquier usuario con permiso de escritura en el directorio que contiene el archivo puede reemplazar el archivo con una copia y así convertirse en propietario, obteniendo la capacidad de modificar los permisos y el contenido.

Al igual que:

14:14 mybox:~ mkdir mydir
14:14 mybox:~ cd mydir/
14:14 mybox:mydir echo foo | sudo tee yourfile
foo
14:14 mybox:mydir ls -ld . yourfile 
drwxr-xr-x  3 me    staff  102 Apr 11 14:14 .
-rw-r--r--  1 root  staff    4 Apr 11 14:14 yourfile

Creamos un directorio y escribimos un archivo como raíz. Dado que root es propietario del archivo, no podemos escribir en él ni podemos hacer chmod:

14:15 mybox:mydir echo bar > yourfile 
-bash: yourfile: Permission denied
14:15 mybox:mydir chmod a+x yourfile
chmod: Unable to change file mode on yourfile: Operation not permitted

Sin embargo, tenemos permiso de escritura en el directorio, por lo que podemos reemplazar el archivo para obtener la propiedad:

14:15 mybox:mydir mv yourfile yourfile2
14:15 mybox:mydir cp yourfile2 yourfile
14:15 mybox:mydir ls -ld . yourfile 
drwxr-xr-x  4 me   staff  136 Apr 11 14:15 .
-rw-r--r--  1 me   staff    4 Apr 11 14:15 yourfile

Y ahora que somos los propietarios, por supuesto podemos hacer lo que queramos con ese archivo:

14:15 mybox:mydir echo bar > yourfile 
14:15 mybox:mydir chmod a+x yourfile
14:16 mybox:mydir cat yourfile
bar

De manera similar, cualquier usuario con permiso de escritura paracualquierEl directorio en la ruta completa que conduce al archivo puede reemplazar la estructura del directorio a partir de ese momento, obteniendo así la propiedad del archivo con el nombre dado. Por supuesto, la propiedad o los permisos del archivo original real (que cambiamos de nombre a "yourfile2") no cambian.

14:17 mybox:mydir ls -l yourfile2
-rw-r--r--  1 root  staff  4 Apr 11 14:14 yourfile2

Respuesta3

El chmodcomando invoca de manera bastante directa la llamada al sistema del mismo nombre; la página de manual para la chmod(2)llamada al sistema (en Linux 4.10) dice:

El UID efectivo del proceso que llama debe coincidir con el propietario del archivo, o el proceso debe tener privilegios (Linux: debe tener la CAP_FOWNERcapacidad).

Si el proceso que llama no tiene privilegios (Linux: no tiene la CAP_FSETIDcapacidad) y el grupo del archivo no coincide con el ID de grupo efectivo del proceso o uno de sus ID de grupo suplementarios, el S_ISGIDbit se desactivará, pero esto no provocará que se devuelva un error.

Entonces sí, un proceso que se ejecuta como root puede cambiar los permisos de cualquier archivo si no ha perdido la CAP_FOWNERcapacidad.


También es de interés chown; la página de manual chown(2)dice:

Sólo un proceso privilegiado (Linux: uno con la CAP_CHOWNcapacidad) puede cambiar el propietario de un archivo. El propietario de un archivo puede cambiar el grupo del archivo a cualquier grupo del que sea miembro. Un proceso privilegiado (Linux: con CAP_CHOWN) puede cambiar el grupo arbitrariamente.

información relacionada