리눅스에서 사용자와 그룹은 다음과 같은 파일에 저장한다.
총 7개의 필드로 구성되어 있고 각 필드는 : 으로 구분된다.
USER:x:UID:GID:GECOS:HOME:SHELL
원래 사용자 계정의 비밀번호는 /etc/passwd 필드에 저장되어 있었는데, 해당 파일은 누구나 접근 가능하기 때문에 보안상 이유로 암호화 된 형태로 shadow에 별도로 저장되게 되었다. shadow 파일은 관리자 외 접근이 불가능하고 강력한 해시 알고리즘으로 암호화 된 형태로 저장되어 있기 때문에 보안성이 높아졌다.
USER:HASH:LASTCHANG:MIN:MAX:WARNING:INACTIVE:EXPIRE:BLANK
change 명령을 사용한다.
사용자 그룹 정보를 확인할 수 있다.
GROUP:x:GID:MEMBER
그룹의 비밀번호가 해싱된 상태로 저장한 파일이다.
GROUP:PASSWORD:ADMIN:MEMBER
정보 저장과 관리는 따로 하게 되는데, 관리는 /etc/skel과 /etc/login.defs에서 하게 된다.
사용자에 대한 기본적인 초기화 파일들을 저장하고 있는 디렉토리다. 사용자 생성시 해당 디렉토리의 모든 파일이 해당 사용자 홈 디렉토리로 복사된다.
사용자를 생성할 때마다 사용자 설정을 하는게 번거롭기 때문에 초기 설정 파일을 배포한다.
사용자 또는 그룹 생성시 참고하는 기본 값들이 저장되어 있다.
오류 메시지 등을 메일 박스로 전송하는데 해당 메일을 받을 위치를 설정
비밀번호 최대, 최소 사용 기간, 최소 길이, 경고 값을 설정
사용자 생성시 부여되는 UID의 최소, 최대값을 설정.
그룹 생성시 부여되는 GID의 최소, 최대값을 설정.
사용자 생성시 홈 디렉토리의 생성 여부를 설정.
사용자를 생성할 경우 해당 umask의 영향을 받아 홈 디렉토리가 생성됨.
사용자 생성 시 같은 이름의 그룹을 생성한다. 이를 UPG 스키마라고 한다.
사용자 비밀번호 암호화 방식을 설정.예전엔 업무 편의상 root 비밀번호를 공유 했지만, 이 방법은 문제 발생시 추적에 어려움이 있었다. 그래서 요즘은 sudo 명령을 이용해 root 권한을 이용한다.
sudo 명령을 사용하기 위해선 두 가직 조건이 만족되어야 한다.
1. 현재 사용자 pw
2. /etc/sudoer 등록 여부
sudo 명령을 사용하려면 조건이 필요한데, 만약 모든 사용자가 sudo 명령을 사용할 수 있다면 이는 root 계정의 비밀번호를 공유하는 것과 같다. sudo 명령은 visudo 또는 편집기로 /etc/sudoers에 직접 접근하여 사용자를 등록하는 것인데, 최신 리눅스에선 파일을 직접 수정하지 않고, 특정 명령으로 사용자를 "wheel" 그룹에 포함시켜 sudo 명령을 사용할 수 있도록 한다.
root 부분은 사용자가 사용할 수 있는 명령을 정의한다. ALL이라고 되어 있으니 모든 명령을 사용할 수 있다.
wheel 부분에서 % 기호는 그룹을 의미한다. 따라서 wheel 그룹의 구성원들은 sudo 명령을 사용할 수 있다.
특정 사용자 권한을 빌리게 되면 시스템에 로그가 기록된다. 해당 로그는 /var/log/secure에 기록되고, 이 파일은 인증과 관련된 로그를 담는 파일이다.