기본 색인 | 섹션 3 | English | 日本語 | Deutsch | 옵션 |
#include <sys/types.h>
#include <pwd.h>
struct passwd { char *pw_name; /* 유저명 */ char *pw_passwd; /* 암호화된 패스워드 */ uid_t pw_uid; /* 유저 uid */ gid_t pw_gid; /* 유저 gid */ time_t pw_change; /* 패스워드의 변경 시각 */ char *pw_class; /* 유저 액세스 클래스 */ char *pw_gecos; /* 하네웰 로그인 정보 */ char *pw_dir; /* 홈 디렉토리 */ char *pw_shell; /* 디폴트의 쉘 */ time_t pw_expire; /* 어카운트 유효기간 */ int pw_fields; /* 내부 필드: 충전 필드 */ };
함수 getpwnam() (은)는 주어진 로그인명을, getpwuid() (은)는 주어진 유저 ID 를 각각 패스워드 데이타베이스로 검색해, 항상 최초로 조우했다 엔트리를 돌려줍니다.
getpwent() 함수는 패스워드 데이타베이스를 차례차례 읽어들입니다. 유저의 완전한 리스트를 처리하고 싶은 프로그램 방향입니다.
setpassent() 함수는 2 개의 목적을 완수하는 것입니다. 우선 getpwent() 함수가 데이타베이스의 최초에 「되감는다 (rewind)」 같게 합니다. 한층 더 stayopen 하지만 0 (이)가 아니면, 파일 기술자를 오픈한 채로 합니다. 이것에 의해, 이러한 routine에 대한 그 후의 액세스 모든 것이 지극히 고속화됩니다 (다만 getpwent() 의 경우, 디폴트로 파일 기술자를 클로우즈 하지 않기 때문에 후자의 기능은 불필요합니다).
장시간 실행되고 있는 프로그램으로 파일 기술자를 오픈했다 로 해 두는 것은 위험합니다. 왜냐하면, 프로그램이 실행되어 있는 동안에 데이타베이스가 갱신되면(자), 오픈한 채로 하고 있다 데이타베이스는 낡은 쓸모 있게 되어 버리기 때문입니다.
setpwent() 함수는, 인수를 0 으로 했다 setpassent() (와)과 같습니다.
endpwent() 함수는, 오픈하고 있는 파일을 모두 클로우즈 합니다.
이러한 routine는, 패스워드 파일을 「숨긴다 (shadow)」목적으로 쓰여졌습니다. 예를 들어, 암호화 패스워드에 액세스 할 수 있다 프로그램을 한정할 수 있도록(듯이)입니다. 이러한 routine를 호출하는 프로세스의 유효 유저 ID 가 0 이라면 암호화 패스워드를 돌려주어, 그 외의 경우는 반환값인 구조체의 패스워드 필드는 string ‘*’ (을)를 가리키게 됩니다.
/etc/pwd.db | 안전하지 않는 패스워드 데이타베이스 파일 |
/etc/spwd.db | 안전한 패스워드 데이타베이스 파일 |
/etc/master.passwd | |
현재의 패스워드 파일 | |
/etc/passwd | Version 7 형식의 패스워드 파일 |
GETPWENT (3) | September 20, 1994 |
기본 색인 | 섹션 3 | English | 日本語 | Deutsch | 옵션 |
Ben Bullock이 유닉스 매뉴얼 페이지에서 서비스에 대한 의견을 주시기 바랍니다. Privacy policy.
“ | This philosophy, in the hands of amateurs, leads to inexplicably mind-numbing botches like the existence of two programs, “head” and “tail,” which print the first part or the last part of a file, depending. Even though their operations are duals of one another, “head” and “tail” are different programs, written by different authors, and take different options! | ” |
— The Unix Haters' handbook |