Linux passwd 사용자 권한 변경

Linux passwd 사용자 권한 변경

내가 볼 때

usr/bin/

디렉토리에서 passwd가 포함된 명령줄을 봤습니다.

-rwsr-xr-x. 1 root root 30768 2012-02-22 20:48 /usr/bin/passwd

그리고 루트 권한을 얻기 위해 변경을 허용합니다. 와 함께.

루트만이 다른 사용자의 비밀번호를 변경할 수 있는지 궁금합니다.

passwd   user

이 명령의 위치를 ​​찾아보고 싶습니다.

이 명령도 usr/bin/ 디렉토리의 일부입니까? 아니면 다른 것

내가 하고 싶은 일은.

나는 로그인한다

user1

그리고 유형

[user1] passwd user2

물론 어떤 면에서는 막혀있습니다. 하지만 나는 그것에 대해 더 알고 싶습니다.

답변1

유닉스(및 리눅스)는 다음과 같은 개념을 가지고 있습니다.진짜사용자와효과적인사용자. /usr/bin/passwd유효 사용자를 파일의 소유자로 설정하는 것과 같은 setuid 프로그램 ; 이 경우 유효 사용자를 로 설정합니다 root.

이제 이러한 상승된 권한으로 프로그램이 수행하는 작업은 프로그램 자체에 달려 있습니다.

프로그램 의 경우 passwd사용자 이름을 전달하면 해당 프로그램이 사용자 이름을 확인합니다.진짜사용자는 루트입니다. 그렇다면 성공하고, 그렇지 않으면 오류를 반환합니다.

따라서 root사용자가 실행할 수 /usr/bin/password user2있고 이것이 작동하지만 user동일한 명령을 실행하면 실패합니다. 프로그램은 하나 뿐이지만 실행하는 사용자에 따라 작동 방식이 달라집니다.

답변2

passwd파일 을 수정하려면 루트 권한이 필요하기 때문에 바이너리는 suid 입니다 /etc/shadow. 권한이 없는 사용자가 다른 사용자의 비밀번호를 수정하는 것은 허용되지 않습니다. 모든 사용자의 비밀번호를 수정할 수 있지만 root그것이 적합한 이유는 아닙니다.

관련 정보