>> Edit article
이름
제목
패스워드
다음과 같이 프로그램을 만들었습니다... #include #include #include #include #include #include #include struct passwd *pwd; struct spwd *spwd; main() { const char id[40],passwd[40]; int i; unsigned idf; printf("Login : "); scanf("%s",id); printf("Password :"); scanf("%s",passwd); pwd =getpwnam(id); idf=pwd->pw_uid; i=verify_password(idf,passwd); printf("%d",i); } int verify_password(unsigned id, unsigned char *password) { char *salt = NULL; pwd = getpwuid(id); salt = pwd->pw_passwd; if ( !strcmp(salt,"x")){ spwd = getspnam(pwd->pw_name); salt = spwd->sp_pwdp; } if ( !strcmp(crypt(password,salt),salt)) return 0; else return -1; } 루트 계정에서는 입력값을 가지고 세도우 파일을 비교해서 잘 처리 됩니다... 그런데 일반 계정으로 실행하면 세도우 파일에 접근을 못합니다.... 그래서 일반 계정으로 접근해서 위 파일을 실행했을 경우 세도우를 읽어서 암호를 비교 할 수 있는 방법을 알고 싶습니다.. 꼭 부탁드립니다... 참 chmod 4000 이렇게 사용하는 방법 말고 프로그램에서 코딩을 해서 사용할 수 있는 방법을 알고 싶습니다... 위 코딩에 어디에 무엇을 추가 해야 되는지 ....^^ 꼭 부탁 드립니다.
Copyleft
1999-2026 by
JSBoard Open Project
Theme Designed by
IDOO
All right reserved