LFCS — Linux Foundation System Administrator
Creating Users and Groups and Applying Policy
한국어 원문으로 표시합니다.
목표
실제로 사용자와 그룹을 만들고, 암호 정책을 걸고, 계정 데이터베이스 세 파일에서 값을 직접 읽어 확인한다.
왜 중요한가
계정 관리는 LFCS 에서 배점이 확실한 영역이면서, 실무에서 되돌리기 가장 어려운 작업이기도 하다. usermod -G 에서 추가 옵션 하나를 빠뜨리면 사용자의 보조 그룹이 전부 날아가고, 그 사용자가 관리자였다면 복구 경로 자체가 사라진다. 그래서 이 실습은 매번 id 와 getent 로 결과를 확인하는 습관을 만드는 데 초점을 둔다. 암호 정책도 마찬가지다 — /etc/shadow 의 만료 필드는 날짜가 아니라 1970년부터의 일수라서, 값을 눈으로 보고 "이게 맞나" 를 판단하려면 그 규칙을 알아야 한다. 마지막 단계에서 만드는 고아 홈 디렉터리는 실제 서버에서 UID 가 재사용될 때 남의 파일을 읽게 되는 사고의 씨앗이다.
단계
- GID 가 4200 인 그룹
lfcsops와, GID 를 지정하지 않은 그룹lfcsdev를 만드세요. - 사용자
lfcsadm을 UID 4201, 기본 그룹lfcsops, 홈 디렉터리/home/lfcsadm(실제로 생성), 로그인 셸/bin/bash로 만드세요. - 사용자
lfcsdev1을 기본 그룹lfcsdev로 만들고 보조 그룹으로lfcsops를 주세요. 그리고lfcsadm의 기본 그룹은 그대로 둔 채 보조 그룹에lfcsdev를 추가하세요. - 서비스 계정
lfcssvc를 UID 1000 미만(시스템 계정 범위), 로그인이 불가능한 셸, 홈 디렉터리 없이 만드세요. lfcsdev1의 암호 정책을 최소 사용 일수 7, 최대 사용 일수 90, 만료 경고 14일, 계정 만료일2027-12-31로 설정하세요.lfcsdev1에 암호를 설정한 다음 그 암호를 잠그세요./etc/shadow두 번째 필드가 느낌표로 시작하고 그 뒤에 해시가 남아 있어야 합니다./root/lfcs-users/report.txt에uid=<lfcsadm 의 UID>,gid=<lfcsops 의 GID>,shadow_max=<lfcsdev1 의 최대 사용 일수>세 줄을 적으세요.- 홈 디렉터리가 있는 임시 계정
lfcstmp를 만든 뒤, 홈은 남기고 계정만 삭제하세요./home/lfcstmp는 남아 있고, 그 소유 UID 에 대응하는 계정은 없어야 합니다.
참고
useradd는 배포판에 따라 홈 디렉터리를 자동으로 만들지 않습니다.getent passwd에 경로가 보여도 디렉터리는 없을 수 있습니다.- 암호는 대화형 입력 없이
chpasswd로 넣을 수 있습니다. /etc/shadow의 3번·8번 필드는 날짜가 아니라 1970-01-01 부터의 일수입니다.- 흔한 실수: 보조 그룹을 더할 때 추가 옵션을 빠뜨리면 기존 보조 그룹이 전부 대체됩니다.
그룹 두 개 만들기
GID 가 4200 인 그룹 lfcsops 와, GID 를 지정하지 않은 그룹 lfcsdev 를 만드세요.
그룹 생성 명령에는 GID 를 직접 지정하는 옵션이 있습니다. 하나는 지정하고 하나는 시스템이 고르게 두세요.
UID·홈·셸을 지정한 사용자
사용자 lfcsadm 을 UID 4201, 기본 그룹 lfcsops, 홈 디렉터리 /home/lfcsadm(실제로 생성), 로그인 셸 /bin/bash 로 만드세요.
useradd 는 UID, 기본 그룹, 홈 경로, 로그인 셸을 각각 다른 옵션으로 받습니다. 홈 디렉터리를 실제로 만들어 주는 옵션이 따로 있다는 점에 주의하세요.
보조 그룹 붙이기
사용자 lfcsdev1 을 기본 그룹 lfcsdev 로 만들고 보조 그룹으로 lfcsops 를 주세요. 그리고 lfcsadm 의 기본 그룹은 그대로 둔 채 보조 그룹에 lfcsdev 를 추가하세요.
기존 보조 그룹을 유지한 채 더하려면 추가 옵션이 필요합니다. 그것을 빠뜨리면 목록이 통째로 대체됩니다. 결과는 id 로 확인하세요.
로그인 불가 서비스 계정
서비스 계정 lfcssvc 를 UID 1000 미만(시스템 계정 범위), 로그인이 불가능한 셸, 홈 디렉터리 없이 만드세요.
시스템 계정으로 만드는 옵션과 홈을 만들지 않는 옵션이 따로 있습니다. 셸은 로그인을 거부하는 경로를 지정하세요.
암호 만료 정책
lfcsdev1 의 암호 정책을 최소 사용 일수 7, 최대 사용 일수 90, 만료 경고 14일, 계정 만료일 2027-12-31 로 설정하세요.
최소·최대·경고·계정 만료는 각각 다른 옵션입니다. 만료일은 사람이 읽는 날짜로 지정하면 도구가 내부 형식으로 바꿔 줍니다.
암호 설정 후 잠그기
lfcsdev1 에 암호를 설정한 다음 그 암호를 잠그세요. /etc/shadow 두 번째 필드가 느낌표로 시작하고 그 뒤에 해시가 남아 있어야 합니다.
대화형 입력 없이 암호를 넣는 도구가 있습니다. 잠금은 해시를 지우는 것이 아니라 앞에 표시를 붙이는 것이라, 잠그기 전에 암호가 있어야 의미가 생깁니다.
계정 데이터베이스에서 값 읽기
/root/lfcs-users/report.txt 에 uid=<lfcsadm 의 UID>, gid=<lfcsops 의 GID>, shadow_max=<lfcsdev1 의 최대 사용 일수> 세 줄을 적으세요.
세 값은 각각 다른 파일의 다른 필드에 있습니다. 콜론으로 나뉘어 있으니 필드 번호를 세어 뽑아내세요.
계정만 지우고 홈은 남기기
홈 디렉터리가 있는 임시 계정 lfcstmp 를 만든 뒤, 홈은 남기고 계정만 삭제하세요. /home/lfcstmp 는 남아 있고, 그 소유 UID 에 대응하는 계정은 없어야 합니다.
삭제 명령에 홈까지 함께 지우는 옵션이 있습니다. 이번에는 그것을 쓰지 않아야 합니다. 남은 디렉터리의 소유자를 확인해 보세요.