Quando eu olho
usr/bin/
diretório, vi a linha de comando com passwd
-rwsr-xr-x. 1 root root 30768 2012-02-22 20:48 /usr/bin/passwd
e permite alterar para obter autoridade do root. com S.
Fiquei surpreso que apenas o root possa alterar a senha do outro usuário com
passwd user
Quero encontrar a localização deste comando e procurá-lo.
este comando também faz parte do diretório usr/bin/? ou é outra coisa
o que eu quero fazer é.
eu faço login
user1
e digite
[user1] passwd user2
é claro que está bloqueado de alguma forma. mas quero saber mais sobre isso.
Responder1
Unix (e Linux) tem o conceito derealusuário eeficazdo utilizador. Um programa setuid como /usr/bin/passwd
definirá o usuário efetivo como o proprietário do arquivo; neste caso, ele define o usuário efetivo como root
.
Agora, o que um programa faz com essas permissões elevadas depende do próprio programa.
No caso do passwd
programa, se você passar um nome de usuário ele verificará se orealo usuário é root; se for, então será bem-sucedido, caso contrário, retornará um erro.
Assim, o root
usuário pode executar /usr/bin/password user2
e isso funcionará, mas se user
executar o mesmo comando, ele falhará. Existe apenas um programa, mas a forma como ele funciona muda dependendo do usuário que o executa.
Responder2
O passwd
binário é suid porque precisa de permissão de root para modificar o /etc/shadow
arquivo. Não permitirá que um usuário sem privilégios modifique a senha de um usuário diferente. Permitirá root
modificar a senha de qualquer usuário, mas não é por isso que é suid.