Estaba leyendo la man
página de chown
. No entiendo por qué S_ISUID
el S_ISGID
modo debe borrarse cuando la función regresa correctamente.
Respuesta1
Creo que estás señalando esto desde la página de manual:
Cuando un usuario sin privilegios cambia el propietario o grupo de un archivo ejecutable, los bits de modo S_ISUID y S_ISGID se borran.
Entonces, ¿por qué están absueltos ahora? Verá, solo se borran en caso de unaejecutablearchivo. Porque cuando se establece uno de los bits (SUID/SGID), el usuario sin privilegios puede ejecutar el archivo como el nuevo propietario del archivo. Sería una enorme brecha de seguridad.
Respuesta2
Creo que has leído mal man 2 chown
:túno es necesario borrar S_ISUID
y S_ISGID
, se borrarán automáticamente cuando utilice esa función como usuario sin privilegios. Si su programa se está ejecutando, root
el comportamiento (en Linux) depende de la versión del kernel.
Si necesita configurar los bits, simplemente vuelva a aplicarlos (asumiendo que la cuenta que intenta configurarlos tiene los privilegios para hacerlo).
Desde la página de manual:
When the owner or group of an executable file are changed by an
unprivileged user the S_ISUID and S_ISGID mode bits are cleared.
POSIX does not specify whether this also should happen when root does
the chown(); the Linux behavior depends on the kernel version. In
case of a non-group-executable file (i.e., one for which the S_IXGRP
bit is not set) the S_ISGID bit indicates mandatory locking, and is
not cleared by a chown().