
1. 사용자 계정 관련 파일
(1) /etc/passwd 파일
- 사용자 계정 정보가 저장된 기본 파일
- 초기의 유닉스에서는 암호도 /etc/passwd 파일에 저장했으나, 해킹 위험이 증가하면서 암호는 /etc/shadow에 저장
- root 계정으로 수정할 수 있지만, 사용자 계정이 저장되는 중요한 파일이므로 함부로 수정 금지
- 사용자 계정의 추가, 삭제, 수정 등 변경사항 있을 시 관련된 명령으로 작업하는 것이 바람직함
- 파일의 구조는 다음과 같음
| 로그인ID | :x | :UID | :GID | :설명 | :홈 디렉터리 | :로그인 셸 |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
[1] 로그인 ID
- 사용자 계정의 이름을 뜻하며 사용자 ID, 사용자 이름, 로그인 이름이라고 함
- 32자를 넘을 수 없고, 대문자, 소문자, 숫자, _, -를 사용할 수 있음
- 하이픈으로 시작하거나 로그인 ID 전체가 숫자일 순 없고, 중복 이름 사용 불가
[2] x
- 초기 유닉스 시스템에서 사용자 암호를 저장하던 항목
- 요즘은 보안상의 이유로 암호를 /etc/shadow 파일에 별도 보관
- 이 항목은 역사적인 이유로 이전 프로그램과의 호환성을 위해 그대로 유지하고있으며, x로 표시
[3] UID
- 사용자 ID 번호로 시스템이 사용자를 구별하기 위해 사용하는 번호
- 일반적으로 0~999번과 65534번은 시스템 사용자를 위한 UID로 예약되어있다
- 시스템 사용자 계정은 시스템이 관리 업무를 위해 내부적으로 사용하고 예약되어있는 계정이므로 임의로 수정하지 않는다
- 일반 사용자는 UID 1000번부터 해당됨
- uid는 기존 uid 중 가장 큰값에 1을 더하여 uid를 새로 만드는 것이 default
- 기본적으로 등록되는 시스템 사용자의 ID
| 0(root) | root 사용자 계정 | 3(adm) | 시스템 로그와 관련된 계정 |
| 1(bin) | 명령어 관리를 위한 계정 | 4(Ip) | 프린트 서비스와 관련된 계정 |
| 2(daemon) | 시스템 데몬 계정 |
- 로그인 ID가 다르더라고 UID가 같으면 리눅스 시스템은 같은 사용자로 판단함
- 사용자 이름이 root가 아닌 다른 이름, 예를 들어 'user1'이더라도 user1의 UID가 0번이면 시스템은 root 계정으로 인식함
- 시스템 관리자는 시스템 계정의 UID가 중복되지 않도록 주의해야 함
[4] GID
- 그룹 ID를 나타냄
- 리눅스에서 사용자는 무조건 한 개 이상의 그룹에 소속됨
- 사용자의 기본 그룹은 사용자를 등록할 때 정해짐
- 특별히 소속 그룹을 지정하지 않으면 자동으로 로그인 ID가 그룹으로 등록됨
- 시스템에 등록된 그룹에 대한 정보는 /etc/group 파일에 저장되어 있음
[5] 설명
- 사용자의 실명이나, 부서명, 연락처 등 사용자에 대한 일반적인 정보가 기록되는 부분
[6] 홈 디렉터리
- 사용자 계정에 할당된 홈 디렉터리의 절대 경로를 기록
- 사용자가 로그인할 때 자동으로 로그인되는 디렉터리가 홈 디렉터리임
- 홈 디렉터리 아래에 다른 디렉터리나 파일을 생성할 수 있음
[7] 로그인 셸
- 사용자의 로그인 셸을 지정함
- 로그인 셸은 사용자가 로그인할 때 동작하는 기본적인 셸
- 현재 로키 리눅스에서는 배시셸(/bin/bash)을 기본 셸로 사용하고 있음
- /etc/passwd 파일은 누구나 읽을 수 있도록 접근 권한이 설정되어 있음
(2) /etc/shadow
- /etc/passwd 파일은 누구나 읽을 수 있지만, /etc/shadow 파일에는 읽기 권한이 없음
- root 계정으로 들어가면 /etc/shadow 파일의 내용을 볼 수 있음
| 로그인ID | 암호(PW) | 최종 변경일 | Min | Max | Waring | Inactive | Expire | Flag |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
[1] 로그인 ID
- 사용자 계정의 이름으로 /etc/passwd 파일의 로그인 ID와 같음
[2] 암호(패스워드)
- 실제 비밀번호가 암호화되어 저장됨
- 비밀번호는 일방향 암호여서 원래 어떤 문자였는지 복호화할 수 없음
- 사용자가 로그인할 때 입력하는 비밀번호를 다시 암호화하여 이 암호와 비교하는 복호화 불가
- 암호 항목에 아무 값도 없으면 암호가 지정되지 않은 계정임을 뜻함
- 시스템 계정에는 * 또는 !!가 표시되어 있음
[3] 최종 변경일
- 암호가 마지막으로 변경된 날짜를 의미함
- 이 날짜는 일반적인 년월일 형태로 기록되는 것이 아니라 유닉스 전통에 따라 1970년 1월 1일을 기준으로 날수를 기록
- 예를들어 2023년 9월 8일은 19608 days로 적혀있음
[4] MIN
- MIN을 비롯해 MAX, WARNING, INACTIVE, EXPIRE 항목을 패스워드 에이징이라고 함
- 각각 패스워드와 관련된 사용 기간을 지정함
- MIN은 암호를 변경한 후 사용해야하는 최소 기간임
[5] MAX
- 암호를 사용할 수 있는 최대 기간
- 이 기간이 지나면 새로운 암호를 입력하게 함
[6] WARNING
- 암호가 만료되기 전에 경고를 시작하는 날수를 나타냄
[7] INACTIVE
- 암호가 만료된 후에도 이 항목에 지정된 날 수 동안은 로그인이 가능하도록 함
- 이 기간이 지나면 계정이 잠겨버림
- 이 경우 관리자에게 문의해야 해결 가능 > 관리자는 초기화 > 다시 입력해서 접근
[8] EXPIRE
- 사용자 계정이 만료되는 날로 이 날짜가 지나면 해당 계정으로 로그인 불가
- 이 항목은 최종 변경일처럼 1970년 1월 1일을 기준으로 한 날수로 계산
[9] FLAG
- 향후 사용할 목적으로 비워둔 항목
- 이 파일은 root 계정으로 변경 후 확인 가능
(3) /etc/login.defs
- 사용자의 계정의 설정과 관련된 기본값을 정의한 파일
- 주석이 잘 되어있어서 주석만 보아도 각 항목의 역할을 이해할 수 있음
(4) /etc/group
- 그룹의 정보가 저장된 파일
- 리눅스에서 사용자는 기본적으로 하나 이상의 그룹에 속해 있음
- 사용자가 속한 그룹 중 /etc/passwd 파일의 GID 항목에 지정된 그룹이 기본 그룹임
- 사용자가 속한 2차 그룹은 /etc/group에 저장
| 그룹이름 | x | GID | 그룹 멤버 |
| 1 | 2 | 3 | 4 |
[1] 그룹 이름 = 그룹 이름
[2] x = 암호(PW)
- 그룹의 암호를 저장하는 곳으로 예전 유닉스에서는 비어 있거나 * 표시함
- 리눅스에서는 여기에 암호화된 그룹 암호를 저장하거나 /etc/gshadow 파일에 그룹 암호를 저장함
- 그룹 암호는 newgrp 명령으로 자신이 속하지 않은 그룹으로 전환할 때 필요
[3] GID
- 그룹을 식별하는 번호
- login.defs 파일에 정의한 대로 1000~60000은 사용자 정의 그룹의 GID로 사용함
[4] 그룹 멤버
- 그룹에 속한 멤버들의 사용자 계정 이름으로 쉼표(,)를 넣어 사용자를 구분
- 사용자의 2차 그룹을 나타냄
- 리눅스의 경우, 사용자 계정을 생성할 때 특별히 지정하지 않으면 사용자 이름과 같은 이름으로 그룹을 생성함
(5) /etc/gshadow
- 그룹 암호가 저장된 파일
- 유닉스에서는 그룹에 암호가 필요할 경우 /etc/group 파일의 그룹 암호 자리에 암호화된 그룹 암호를 설정했음
- 리눅스에서는 /etc/shadow 파일과 비슷하게 /etc/gshadow 파일을 만든 것
| 그룹 이름 | 그룹 암호 | 관리자 | 그룹 멤버 |
| 1 | 2 | 3 | 4 |
[1] 그룹 이름 : 그룹의 이름
[2] 그룹 암호 : 암호화된 그룹 암호
[3] 관리자
- 그룹의 암호나 멤버를 바꿀 수 있는 사용자 계정
- 여러 개일 경우 쉼표로 구분
[4] 그룹 멤버
- 그룹에 속한 멤버들의 사용자 이름 계정
- 쉼표로 사용자를 구분
2. 사용자 계정 관리 명령
(1) 사용자 계정 생성하기 : useradd [옵션] [로그인 ID]
- 사용자 계정을 생성할 때는 useradd 명령을 사용함
- 우분투와 달리 로키리눅스는 adduser명령은 useradd에 대한 심볼릭 링크임
- useradd 명령을 사용할 때 지정하는 옵션은 /etc/passwd 파일에 저장되는 각 항목에 해당함
* -u [uid] UID 지정함
* -o UID의 중복을 허용함
* -g [gid] 기본 그룹의 GID를 지정함
* -G [gid] 2차 그룹의 GID를 지정함
* -d [디렉터리명] 홈 디렉터리를 지정함
* -s [셸] 기본 셸을 지정함
* -c [설명] 사용자의 이름 등 부가적인 설명을 지정함
* -D 기본값을 설정하거나 출력함
* -e [유효기간] EXPIRE 항목을 설정함 (YYYY-MM-DD)
* -f [비활성 일수] INACTIVE 항목을 설정함
* -k [디렉터리] 계정 생성 시 복사할 초기 파일이나 디렉터리를 설정해놓은 디렉터리에 지정함
- 옵션 없이 계정 생성하기
= useradd user2
> user1 외에 새로운 계정을 만들어 봄
= ls /home
> 옵션 없이 useradd 명령으로 user2 계정을 만들고 홈 디렉터리와 /etc/passwd 파일을 확인함
= tail -2 /etc/passwd
> 홈 디렉터리가 생성되고 /etc/passwd 파일에도 user2가 추가됨
= su user2
> 터미널을 하나 더 띄우고, su 명령(root 권한)으로 user1 사용자에서 user2로 전환함
= grep user2 /etc/shadow
> 기존 터미널의 root 계정으로 돌아가서 /etc/shadow 파일을 확인하면 user2 계정은 암호가 설정되지 않고 !!로 잠겨있음
- 시스템 관리자는 사용자 계정을 추가할 때 반드시 초기 암호를 바로 설정해야 함
= passwd user2
- 사용자에게 초기 암호를 알려주고 사용자가 다시 바꾸게 권고
- useradd -D
> 사용자 계정 설정 시 기본 설정값 확인하는 옵션
> INACTIVE -1이면 기능 비활성화, 0이면 암호 만료되자마자 바로 계정이 잠김
> SKEL : 홈 디렉터리에 복사할 기본 환경 파일의 위치
> CREATE_MAIL_SPOOL : 메일 디렉터리 생성 여부 지정
> 해당 항목들은 /etc/default/useradd에서 확인 가능
- /etc/skel 디렉터리의 역할 : 사용자 계정을 생성할 때, 시스템 운영 정책에 따라 사용자 계정의 홈 디렉터리에 공통으로 배포해야 할 파일이 있을 수 있음
(2) 사용자 계정 정보 수정 : usermmod [옵션] [로그인ID]
- 사용자 계정 정보를 수정함
* -u [uid] UID를 수정함
* -o UID 중복을 허용함
* -g [gid] 기본 그룹을 수정함
* -G [gid] 2차 그룹을 수정함
* -d [디렉터리명] 홈 디렉터리를 수정함
* -s [셸] 기본 셸을 수정함
* -c [설명] 사용자의 이름 등 부가적인 설명을 지정함
* -e [유효기간] EXPIRE 항목을 설정함 (YYYY-MM-DD)
* -f [비활성 일수] INACTIVE 항목을 설정함
* -l 계정 이름을 바꿈
- -l 옵션으로 로그인 ID를 바꿀 때는 홈 디렉터리도 함께 수정해주는 것이 좋음
- 기존 홈 디렉터리에 있는 파일이 자동으로 옮겨지지 않음 (별도 디렉터리 생성 후 이동 필요)
- 패스워드 에어징은 useradd, usermod, passwd, change(패스워드 에이징을 관리하는 별도 명령) 명령으로 변경 가능
| 항목 | userradd, usermod, passwd 명령 | change 명령 |
| MIN | passwd -n 날수 | change -m |
| MAX | passwd -x 날수 | change -M |
| WARNING | passwd -w 날수 | change -I |
| INACTIVE | useradd/usermod -f 날수 | change -I |
| EXPIRE | useradd/usermod -e 날짜(YYYY-MM-DD) | change -E |
(3) 사용자 계정 삭제 : userdel [옵션] [로그인ID]
- 사용자 계정을 삭제함 (홈 디렉터리와 함께 삭제할 것인지 결정해야 함)
* -r 홈 디렉터리를 삭제함
* -f 사용자가 로그인 중이어도 강제로 삭제함
- 홈 디렉터리가 아닌 다른 곳에 위치한 사용자 계정 소유 파일이 있을 수 있음
- -r 옵션은 홈 디텍터리의 파일은 삭제하지만 다른 디렉터리에 있는 파일은 삭제하지 않음
- 관리자는 find 명령으로 해당 계정 소유의 파일을 모두 찾아서 삭제하는 것이 바람직함
= find / -user [UID] -exec em -r {} \;
3. 그룹 관리 명령
(1) 그룹 생성 : groupadd [옵션] [그룹명]
- 그룹을 생성합
* -g [gid] 그룹의 GID를 지정함
* -d GID의 중복을 허용함
(2) 그룹 수정 : groupmod [옵션] [그룹명]
- 그룹 정보를 수정함
* -g [gid] 그룹의 gid를 수정함
* -o GID 중복을 허용함
* -n [그룹명] 그룹명을 다른 이름으로 바꿈, 기존 파일이나 디텍터리의 소속 그룹명도 자동으로 바뀜
(3) 그룹 삭제 : groupdel [그룹명]
- 그룹을 삭제함
(4) 그룹 암호 설정 및 삭제: gpasswd [옵션] [그룹명]
- 리눅스는 유닉스와 달리 그룹의 암호를 설정하는 gpasswd 명령을 제공함
- gpasswd 명령은 그룹의 암호를 삭제하고 그룹에 멤버를 추가하거나 삭제하는 기능도 수행함
- /etc/group과 /etc/gshadow 파일을 관리함
* -a [사용자 계정] 사용자 계정을 그룹에 추가함
* -d [사용자 계정] 사용자 계정을 그룹에서 삭제함
* -r 그룹 암호를 삭제함
(5) 소속 그룹 변경 : newgrp [그룹명]
- 사용자가 작업을 할 때 현재 소속 그룹을 기본 그룹이 아닌 다른 그룹으로 변경해야할 일이 생길 때 사용
- 소속 그룹을 다른 그룹으로 변경
'컴퓨터공학부' 카테고리의 다른 글
| [문제 해결 알고리즘] 정렬 알고리즘 ① (0) | 2026.05.19 |
|---|---|
| [자료구조] 트리 (0) | 2026.05.18 |
| [시스템 프로그래밍 Linux] 소프트웨어 관리 (0) | 2026.05.15 |
| [자료구조] 탐색 (0) | 2026.05.08 |
| [차크라 명상] 차크라의 색과 소리 (0) | 2026.05.07 |