¿Por qué el chown
comando es solo de raíz? ¿Por qué los usuarios no root pueden usar chown para regalar los archivos que poseen?
permissions
not-root-user
chown
flema
fuente
fuente
chown
para regalar archivos que poseen? (He visto sistemas en los que, dependiendo de la configuración del sistema de archivos, se puede.)Respuestas:
La mayoría de los sistemas Unix evitan que los usuarios "regalen" archivos, es decir, los usuarios solo pueden ejecutarse
chown
si tienen los privilegios de usuario y grupo objetivo. Dado que el usochown
requiere ser propietario del archivo o ser root (los usuarios nunca pueden apropiarse de los archivos de otros usuarios), solo el root puede ejecutarsechown
para cambiar el propietario de un archivo a otro usuario.La razón de esta restricción es que regalar un archivo a otro usuario puede permitir que sucedan cosas malas en situaciones poco comunes pero importantes. Por ejemplo:
chown
para que ese archivo sea propiedad de otro usuario Bill. El archivo entonces contaría bajo la cuota de disco de Bill, aunque solo Alice puede usar el archivo.fuente
/bin/bash
, configurarlo y luegochown
enviarlo a quien quiera. Ahora tienen acceso de shell como esa persona.chown
siempre borra los bits setuid y setgid.drwxr-xr-x ring0 ring0 .
) en el que la raíz tiene un archivo normal (-rw-r--r-- root root file
), ¿por qué no puedo hacerlochown ring0 file
ya que de todos modos está permitido hacerlo, comoring0
,cp file x ; rm file ; mv x file
(y algunos opcionalestouch sometime file
...)?En Linux, necesita la capacidad CAP_CHOWN para hacer chown. la raíz se le otorga tal. Consulte: http://vouters.dyndns.org/tima/Linux-OpenVMS-C-Implementing_chown.html para obtener explicaciones. Si tiene la intención de dar la capacidad CAP_CHOWN, cree su código con libcap-ng o libcap como lo demuestra: http://vouters.dyndns.org/tima/Linux-PAM-C-Pluggable_Authentication_Modules_programming_example.html donde tiene que reemplazar simplemente CAP_AUDIT_WRITE con CAP_CHOWN.
fuente
Puede iniciar el comando, pero no funcionará si no es root. Es fácil: imagine un usuario que pueda cambiar un software a usuario root. Puede agregar el bit setuid y, ¡voilà, el tipo es root! Entonces, el uso puede agregar el bit con chmod, pero no hay posibilidad de cambiar el propietario de los archivos.
fuente