Este comando:
sudo chown -R root:root directory
removerá o bit SUID e redefinirá todos os recursos dos arquivos . Eu me pergunto por que isso é feito silenciosamente e não é mencionado na página de manual. Estranhamente, o bit GUID não foi removido. E não importa a quem pertencia o arquivo ou diretório antes de executar este comando.
Além disso, os bits SUID/GUID não são removidos dos diretórios (embora sejam inúteis neste caso).
Presumivelmente, isso é feito em nome da segurança, mas para mim não deve ser feito silenciosamente.
Isso fica ainda pior:
$ setcap cap_sys_rawio,cap_sys_nice=+ep test
$ getcap -v test
test cap_sys_rawio,cap_sys_nice=ep
$ chown -c -v -R 0:0 .
ownership of './test' retained as root:root
ownership of '.' retained as root:root
$ getcap -v test
test
O bit SUID do test
arquivo é removido de forma totalmente silenciosa. É como se o comando estivesse fazendo muito mais do que o solicitado.
As permissões e conjuntos de recursos não são limpos pelo
chown
utilitário, mas sim pela chamada dochown
sistema (no Linux):Conforme mencionado acima, isso é parcialmente especificado pelo POSIX :
Se fosse para informar o usuário sobre isso, o
chown
utilitário teria que verificar explicitamente outras alterações feitas nos metadados dos arquivos ao invocar achown
função.No que diz respeito à lógica, suspeito que seja para reduzir o potencial de pegadinhas para o administrador do sistema -
chown root:root
no Linux pode ser considerado seguro, mesmo que um usuário tenha preparado um binário setuid com antecedência.A
chown
página de manual do GNU não menciona esse comportamento, mas como costuma acontecer com o software GNU, a página de manual documenta o utilitário apenas parcialmente; sua seção “VEJA TAMBÉM” aponta para a documentação da chamada do sistema (que é reconhecidamente um exagero para a maioria dos usuários) e a página de informações , que descreve esse comportamento:(Estou limitando isso ao Linux com base em suas tags na questão; como o Linux restringe alterações de proprietário a processos privilegiados, há menos implicações de segurança do que em alguns outros sistemas estilo Unix. Consulte a explicação em chown(1) especificação POSIX para obter detalhes .)