
Estamos utilizando autenticación LDAP y probablemente otras cosas que no entendí bien en nuestra empresa, por lo que tal vez las siguientes preguntas sean resultado de esto. He encontrado un comportamiento extraño del chown
mando, y no sé si es normal. Aquí está mi escenario:
El GID de la marca de usuario es SK001936 y el grupo propietario del directorio de inicio de la marca es SK001778, como puede ver, no son iguales. El grupo SK001778 tiene permitidas todas las operaciones (rwx) con el directorio de inicio de la marca del usuario, ya que el propietario (marca) tiene:
[mark@machine ~]$ id
uid=48447(mark) gid=41795(SK001936) groups=40119(SUB_SK001936_PPS),41795(SK001936)
[mark@machine ~]$ ls -lad .
drwxrwxr-x 6 mark SK001778 4096 Oct 10 13:30 .
El GID del usuario michael y mark son ambos SK001936:
[michael@machine mark]$ id
uid=40570(michael) gid=41795(SK001936) groups=40119(SUB_SK001936_PPS),41795(SK001936)
[mark@machine ~]$ id
uid=48447(mark) gid=41795(SK001936) groups=40119(SUB_SK001936_PPS),41795(SK001936)
El usuario Michael no puede crear un archivo en el directorio de inicio del usuario Mark. La cuestión es que Michael no pertenece al grupo (SK001778) que tiene acceso completo (rwx) al directorio de inicio de Mark:
[michael@machine mark]$ touch michael
touch: cannot touch `michael': Permission denied
En circunstancias normales, el usuario no puede emitir el chown incluso si es el propietario del archivo. Sin embargo, en este ejemplo, el propietario del directorio de inicio (marca) puede cambiar el grupo de propietarios de su propio directorio de inicio (y así permite a los usuarios que pertenecen a este grupo acceder a su directorio de inicio):
[mark@machine ~]$ chown mark:SK001936 .
El grupo que ahora tiene acceso al directorio de inicio de Mark es, por lo tanto, el mismo grupo que el GID de Michael, por lo que Michael ahora puede crear/eliminar archivos/carpetas en el directorio de inicio de Mark:
[michael@machine mark]$ touch michael
Mark no puede volver a cambiar la propiedad del grupo de su directorio de inicio (recuerde que solo el root puede emitir chown de acuerdo con esto:por qué-un-usuario-normal-no-puede-chown-un-archivo):
[mark@machine ~]$ chown mark:SK001778 .
chown: changing ownership of `.': Operation not permitted
Mi pregunta es: ¿cómo es posible que Mark haya podido cambiar la propiedad del grupo de su directorio local incluso cuando sí?declaradoese chown sólo puede ser emitido por root. La caja es RedHat 5.6.
Respuesta1
Cuando lo usas chown
de una manera que cambia solo el grupo, actúa igual que chgrp
. El propietario de un archivo o directorio puede cambiar el grupo a cualquier grupo del que sea miembro.
Funciona así porque tanto los comandos chown
como chgrp
usan la misma chown
llamada al sistema subyacente, lo que permite cambiar tanto el propietario como el grupo. La llamada al sistema es lo que aplica la verificación de permisos. La única diferencia entre los comandos chown
y chgrp
es la sintaxis que utiliza para especificar el cambio que desea realizar.
Mark no puede volver a cambiar el grupo a SK001778 porque no es miembro del grupo SK001778 (y no es root, lo cual no está restringido por la membresía del grupo).
Respuesta2
Los usuarios pueden usarlo para cambiar de grupo, suponiendo que estén en uno de estos grupos.
Ejemplo
Digamos que estoy en los siguientes grupos:
$ groups
saml vboxusers jupiter newgrp
Y tengo un archivo:
$ ls -l | grep afile
-rw-rw-r-- 1 saml saml 0 Oct 10 11:29 afile
así que cambio el grupo de este archivo así:L
$ chown saml.newgrp afile
$ ls -l | grep afile
-rw-rw-r-- 1 saml newgrp 0 Oct 10 11:29 afile
También puedes usar chown
así:
$ chown .saml afile
$ ls -l|grep afile
-rw-rw-r-- 1 saml saml 0 Oct 10 11:29 afile