사용자, 그룹, 권한 관리는 Ubuntu Server 관리자에게 가장 기본적인 작업 중 하나입니다. 다중 사용자 환경을 설정하든 서버를 보호하든, 사용자 계정, 그룹, 권한을 만들고, 수정하고, 관리하는 방법을 이해하는 것이 필수적입니다. 이 가이드는 실제 예제, 명령 출력, 모범 사례와 함께 사용자 및 권한 관리를 심층적으로 다룹니다.
이전 문서:
01. Ubuntu Server 소개 – SysOSX: AI & Cloud
02. 첫 Ubuntu Server 설정 방법: 초보자 가이드 – SysOSX: AI & Cloud
03. Ubuntu Server용 Linux 명령줄 마스터하기
소개
Ubuntu Server는 애플리케이션 호스팅, 서비스 관리, 다중 사용자 환경 구현을 위한 강력한 플랫폼입니다. 사용자 및 권한 관리를 마스터하면 서버를 보호하고, 액세스를 효과적으로 제어하며, 무단 작업을 방지할 수 있습니다. 이 가이드에서는 기본적인 사용자 계정 생성부터 고급 권한 설정까지, 자세한 예제와 함께 모든 내용을 다룹니다.
사용자 계정 만들기 및 관리
사용자 만들기
adduser 명령을 사용하여 Ubuntu Server에 사용자 계정을 만듭니다. 이 명령은 대화형이며 사용자와 관련된 추가 정보를 묻는 메시지를 표시합니다.
예제 명령:
sudo adduser john
예제 출력:
Adding user `john' ...
Adding new group `john' (1001) ...
Adding new user `john' (1001) with group `john' ...
Creating home directory `/home/john' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for john
Enter the new value, or press ENTER for the default
Full Name []: John Doe
Room Number []: 101
Work Phone []: 555-1234
Home Phone []: 555-5678
Other []:
Is the information correct? [Y/n] Y
john이라는 이름의 사용자를 만들고 홈 디렉터리를 /home/john로 설정하며 고유한 사용자 ID(UID)를 할당합니다.
사용자 수정
usermod 명령을 사용하면 사용자 계정을 수정할 수 있습니다. 예를 들어 사용자의 홈 디렉터리, 셸 또는 그룹 멤버십을 변경할 수 있습니다.
홈 디렉터리 변경:
sudo usermod -d /home/new_john john
sudo mv /home/john /home/new_john
사용자 계정 잠금 또는 잠금 해제:
- 계정 잠금:
sudo passwd -l john - 계정 잠금 해제:
sudo passwd -u john
예제 출력(계정 잠금):
passwd: password expiry information changed.
사용자 삭제
deluser 명령을 사용하여 사용자를 삭제하세요. 홈 디렉터리와 관련 파일도 제거할 수 있습니다.
예제 명령:
sudo deluser --remove-home john
예제 출력:
Looking for files to backup/remove ...
Removing files ...
Removing user `john' ...
Warning: group `john' has no more members.
Done.
그룹 관리
그룹은 사용자를 구성하고 집단 권한을 할당하는 방법입니다. 각 사용자는 여러 그룹에 속할 수 있습니다.
그룹 만들기 및 관리
새 그룹을 만들려면 addgroup 명령을 사용하세요.
예제 명령:
sudo addgroup developers
예제 출력:
Adding group `developers' (GID 1002) ...
Done.
그룹을 삭제하려면:
sudo delgroup developers
그룹에 사용자 추가
usermod 명령의 -aG 옵션을 사용하여 사용자를 그룹에 추가하세요.
예제 명령:
sudo usermod -aG developers john
그룹 멤버십 확인:
groups john
예제 출력:
john : john developers
john은(는) 다음 그룹에 속해 있음을 보여줍니다: john과 developers.
파일 및 디렉터리 권한 이해
Linux 파일 권한은 파일과 디렉터리에 대한 액세스를 제어하는 데 매우 중요합니다. 권한은 세 가지 범주에 대해 정의됩니다: 소유자, 그룹, 그리고 기타.
권한 유형
각 범주에는 세 가지 권한 유형이 있습니다:
- 읽기(r): 파일 내용을 보거나 디렉터리 내용을 나열할 수 있습니다.
- 쓰기(w): 파일 내용을 수정하거나 디렉터리에서 파일을 만들거나 삭제할 수 있습니다.
- 실행(x): 실행 파일을 실행하거나 디렉터리에 액세스할 수 있습니다.
예:
ls -l을(를) 사용하여 파일 권한을 확인합니다:
ls -l /home/john
예제 출력:
-rw-r--r-- 1 john john 4096 Mar 21 14:00 file.txt
rw-: 소유자(john)에게는 읽기 및 쓰기 권한이 있습니다.r--: 그룹(john)에게는 읽기 전용 권한이 있습니다.r--: 기타에게는 읽기 전용 권한이 있습니다.
권한 변경
chmod 명령을 사용하여 권한을 수정합니다.
예제 명령:
- 소유자에게 실행 권한 부여:
chmod u+x file.txt - 기타에 대한 쓰기 권한 제거: chmod o-w file.txt
숫자 값 사용:
권한은 숫자 값을 사용하여 설정할 수도 있습니다:
chmod 755 file.txt: 소유자에게 모든 권한, 그룹과 기타에게 읽기/실행 권한.
숫자 권한 이해(755, 777, 744)
Linux 권한은 숫자로 표현할 수 있으며, 각 자릿수는 특정 권한 수준에 해당합니다:
숫자 권한 구조:
각 숫자 권한은 세 자리 숫자로 구성됩니다:
- 첫 번째 자릿수: 소유자에 대한 권한.
- 두 번째 자릿수: 그룹에 대한 권한.
- 세 번째 자릿수: 기타에 대한 권한.
각 자릿수는 다음 값을 기준으로 계산됩니다:
4: 읽기(r)2: 쓰기(w)1: 실행(x)
이러한 값의 합이 각 범주의 권한 수준을 결정합니다.
일반적인 숫자 권한:
- 777: 모든 사람에게 모든 권한(읽기, 쓰기, 실행).
- 소유자:
rwx - 그룹:
rwx - 기타:
rwx - 사용 사례: 보안상의 이유로 거의 사용되지 않지만, 다음과 같은 임시 디렉터리에 적용할 수 있습니다:
/tmp.
- 소유자:
- 755: 소유자에게 모든 권한, 그룹과 기타에게 읽기 및 실행 권한.
- 소유자:
rwx - 그룹:
r-x - 기타:
r-x - 사용 사례: 실행 파일이나 디렉터리에 일반적입니다.
- 소유자:
- 744: 소유자에게 모든 권한, 그룹과 기타에게 읽기 전용.
- 소유자:
rwx - 그룹:
r-- - 기타:
r-- - 사용 사례: 비공개 파일에 일반적입니다.
- 소유자:
예:
스크립트 권한을 755으로 설정하려면:
chmod 755 script.sh
예제 출력:
-rwxr-xr-x 1 john john 4096 Mar 21 14:00 script.sh
소유권 관리
소유권을 변경하려면 chown 명령을 사용하세요.
예제 명령:
sudo chown john:developers file.txt
이렇게 하면 소유자는 john, 그룹은 developers.
예제 출력:
-rw-r--r-- 1 john developers 4096 Mar 21 14:00 file.txt
권한 상승을 위한 Sudo 사용
sudo 명령을 사용하면 사용자가 상승된 권한으로 명령을 실행할 수 있습니다. 사용자에게 sudo 액세스 권한을 부여하려면 sudo 그룹에 추가하세요.
예제 명령:
sudo usermod -aG sudo john
Sudo 액세스 확인:
sudo -l -U john
예제 출력:
User john may run the following commands on this host:
(ALL : ALL) ALL
사용자 계정 보호를 위한 모범 사례
- 강력한 암호 정책 적용:
passwd을(를) 사용하여 암호 만료를 설정합니다:sudo passwd -e john - Sudo 액세스 제한:
sudo권한은 신뢰할 수 있는 사용자에게만 부여하세요. - 루트 로그인 비활성화:
SSH 구성 파일을 편집하세요:
sudo nano /etc/ssh/sshd_config
설정:
PermitRootLogin no
- 인증을 위해 SSH 키 사용:
암호 기반 로그인을 SSH 키로 바꾸세요. - 사용자 활동 모니터링:
last또는who을(를) 사용하여 로그인 활동을 추적합니다:
last
출력 설명
uadmin pts/1 192.168.255.48 Fri Mar 21 13:55 still logged in
uadmin pts/0 192.168.255.48 Fri Mar 21 13:54 still logged in
uadmin pts/1 192.168.255.48 Fri Mar 21 01:49 - 08:19 (06:29)
uadmin pts/0 192.168.255.48 Fri Mar 21 00:53 - 08:19 (07:26)
reboot system boot 6.8.0-1021-azure Fri Mar 21 00:22 still running
줄별 분석
사용자 로그인: uadmin pts/1 192.168.255.48 Fri Mar 21 13:55 still logged in
uadmin: 로그인한 사용자의 사용자 이름.pts/1: 로그인에 사용된 의사 터미널 세션. 의사 터미널(pts)은 가상 터미널로, 일반적으로 사용자가 SSH를 통해 로그인할 때 생성됩니다.192.168.255.48: 사용자가 연결한 원격 머신의 IP 주소.Fri Mar 21 13:55: 사용자가 로그인한 날짜와 시간.still logged in: 사용자가 현재 로그인 상태이며 활성 상태임을 나타냅니다.
| 열 | 의미 |
|---|---|
| 사용자 이름 | 사용자 또는 이벤트 이름(uadmin, reboot). |
| 터미널 | 의사 터미널 세션(pts/X) 또는 시스템 이벤트(system boot). |
| 원격 호스트/IP | 연결을 시작한 원격 머신의 IP 주소 또는 호스트 이름. |
| 로그인 날짜/시간 | 로그인 또는 이벤트가 시작된 날짜와 시간. |
| 로그아웃 시간 | 세션이 종료된 날짜와 시간(해당하는 경우). |
| 지속 시간 | 세션이 지속된 총 시간(해당하는 경우). |
| 세션 상태 | 세션의 현재 상태(still logged in, still running). |
통찰을 위한 추가 명령
- 현재 로그인한 사용자 표시:
who - 예제 출력:
uadmin pts/1 2023-03-21 13:55 (192.168.255.48)
uadmin pts/0 2023-03-21 13:54 (192.168.255.48)
- 시스템 가동 시간 확인:
uptime - 예제 출력:
14:15:32 up 13:53, 2 users, load average: 0.10, 0.12, 0.15
결론
사용자, 그룹, 권한 관리는 Ubuntu Server 관리자에게 기본적인 기술입니다. 이러한 작업을 마스터하면 서버를 보호하고, 무단 액세스를 방지하며, 운영 효율성을 높일 수 있습니다.
다음 튜토리얼: Ubuntu Server 네트워킹 기초
다음 튜토리얼에서는 Ubuntu Server 네트워킹 기초를 다룹니다. 여기에는 네트워크 인터페이스 구성, 고정 IP 설정, 네트워크 연결 문제 해결, Ubuntu의 netplan을(를) 사용한 네트워킹 작업이 포함됩니다. 서버 네트워크 구성을 최적화하기 위한 실행 가능한 통찰을 기대해 주세요.
7 thoughts on “04. Managing Users and Permissions on Ubuntu Server: A Comprehensive Guide”