/etc/shadow 파일안의 암호화된 패스워드를 가져오는 프로그램을 작성했습
니다.
....
if((spp = getspnam(argv[1])) != 0) {
printf("%s's encrypted password is %s", argv[1], spp->sp_pwdp);
....
컴파일을 마치고 root로 실행하니 잘 동작합니다.
이 프로그램에 set-user-id 권한을 주고
[root]$chmod u+s a.out
일반사용자 권한으로 실행을 하니 작동을 안하는군요.
real user ID 와 effective user ID 에 관한 문제인것 같은데..
두개가 무슨 차이인지 잘모르겠네요.
명확한 답변 부탁드립니다.
setuid 프로그램에서 real UID 는 실행한 사용자이고, effective UID 는 파일 권한의 소유자입니다. 권한 비트가 제대로 설정되어도 프로그램이 effective UID 로 파일을 열 수 있어야 동작합니다. 소유자가 root 인지 확인하고, 비밀번호 파일 읽기는 보안상 권하지 않습니다.