Ubuntu Linux에서 사용자를 생성하고, 그룹을 관리하며, sudo 액세스를 부여하고, 파일 권한을 제어하는 방법을 다루는 실용적이고 정확한 가이드입니다. 매니지드 VPS 또는 클라우드 서버를 안전하게 보호하는 데 이상적입니다.
소개
모든 Linux 서버는 설계상 다중 사용자(multi-user) 환경입니다. 웹사이트, 데이터베이스, 또는 클라우드 서버에서 애플리케이션을 운영하든, 적절한 사용자 및 권한 관리는 보안의 토대입니다. 이를 통해 각 사용자와 서비스에 필요한 만큼의 액세스만 정확히 부여하고, 그 이상은 허용하지 않을 수 있습니다.
이 가이드는 Ubuntu 22.04/24.04 LTS의 핵심 사항인 사용자 생성, 그룹 사용, sudo 액세스 부여, 파일 권한 제어를 다룹니다. 동일한 명령은 거의 모든 최신 Linux 배포판에 적용됩니다. 따라 하려면 서버와 sudo 권한이 있는 로그인 계정이 필요한데, 이는 매니지드 Skyline Cloud VPS에서 정확히 제공되는 환경입니다.
사용자 생성 및 삭제
Debian과 Ubuntu에서 편리하게 사용할 수 있는 도구는 adduser입니다. 이 명령은 사용자와 홈 디렉터리를 생성하고 비밀번호를 입력하도록 안내합니다.
sudo adduser sara
더 저수준의 useradd도 사용할 수 있으며, 스크립트 작성에 더 적합합니다. 아래 플래그는 홈 디렉터리를 생성하고(-m), 로그인 셸을 설정하며, 주석(comment)을 추가합니다.
sudo useradd -m -s /bin/bash -c "Sara Ahmed" sara
sudo passwd sara
사용자를 삭제하되 파일은 유지하려면 다음과 같이 합니다.
sudo deluser sara
사용자를 삭제하고 동시에 홈 디렉터리와 메일 스풀(mail spool)까지 제거하려면 --remove-home을 사용합니다.
sudo deluser --remove-home sara
그룹 이해하기
그룹을 사용하면 여러 사용자에게 동일한 액세스를 한 번에 부여할 수 있습니다. 사용자의 그룹을 확인하려면 다음을 사용합니다.
groups sara
id sara
그룹을 생성하고 사용자를 추가합니다.
sudo groupadd developers
sudo usermod -aG developers sara
-aG 플래그는 매우 중요합니다. -a는 **추가(append)**를 의미하고, -G는 보조 그룹(supplementary group)을 설정합니다. -a를 생략하면 사용자의 기존 보조 그룹 전체가 **교체(replace)**되는데, 이는 흔하면서도 위험한 실수입니다. 변경 사항은 사용자가 다음에 로그인할 때 적용됩니다.
사용자를 그룹에서 제거하려면 다음과 같이 합니다.
sudo gpasswd -d sara developers
sudo로 관리자 액세스 부여하기
Ubuntu에서는 sudo 그룹의 구성원이 root 권한으로 명령을 실행할 수 있습니다. 사용자를 이 그룹에 추가합니다.
sudo usermod -aG sudo sara
더 세밀하게 제어하려면 sudoers 설정을 편집하되, 반드시 visudo를 사용하세요. 이 도구는 저장 전에 구문을 검증하여 스스로 잠겨 접근하지 못하게 되는 상황을 방지합니다.
sudo visudo
더 나아가, 규칙이 패키지 업그레이드 후에도 유지되도록 /etc/sudoers.d/에 전용 파일을 만드는 것이 좋습니다.
sudo visudo -f /etc/sudoers.d/sara
sara가 비밀번호 없이 특정 서비스 하나만 재시작할 수 있도록 하려면 다음을 추가합니다.
sara ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx
이러한 원칙, 즉 작업을 수행하는 데 필요한 가장 좁은 범위의 권한만 부여하는 것이 최소 권한(least privilege)의 핵심입니다.
Linux 파일 권한
모든 파일과 디렉터리에는 소유자(owner), 그룹(group), 그리고 소유자(u), 그룹(g), 기타(o)의 세 클래스에 대한 권한 집합이 있습니다. ls -l로 이를 확인할 수 있습니다.
ls -l report.txt
# -rw-r--r-- 1 sara developers 1240 Jun 8 10:12 report.txt
세 가지 권한 유형은 읽기(r/4), 쓰기(w/2), 실행(x/1)입니다. 디렉터리의 경우 x는 해당 디렉터리에 들어갈 수 있는 권한을 의미합니다.
| 기호 | 8진수 | 파일에서의 의미 | 디렉터리에서의 의미 |
|---|---|---|---|
r |
4 | 내용 읽기 | 항목 목록 보기 |
w |
2 | 내용 수정 | 항목 생성/삭제 |
x |
1 | 프로그램으로 실행 | 진입 / 탐색 |
chmod로 기호 표기법 또는 8진수 표기법을 사용해 권한을 변경합니다.
# Symbolic: add execute for the owner
chmod u+x script.sh
# Octal: owner rwx, group rx, others r (754)
chmod 754 script.sh
chown으로 소유권(사용자와 그룹을 함께)을 변경합니다.
sudo chown sara:developers report.txt
-R을 사용하면 트리 전체에 변경 사항을 재귀적으로 적용합니다.
sudo chown -R sara:developers /var/www/project
sudo chmod -R 750 /var/www/project
웹 콘텐츠의 안전한 기본값은 파일의 경우 644, 디렉터리의 경우 755입니다. 이렇게 하면 웹 서버가 읽을 수는 있지만 쓸 수는 없습니다.
ACL을 활용한 세밀한 제어
표준 권한은 단 하나의 소유자와 하나의 그룹만 표현할 수 있습니다. 제3자에게 특정 액세스를 부여해야 할 때는 액세스 제어 목록(Access Control List, ACL)을 사용합니다. ACL은 Ubuntu에 기본으로 설치되어 있습니다.
# Give user 'omar' read/write on a file
sudo setfacl -m u:omar:rw report.txt
# View the ACLs
getfacl report.txt
# Remove omar's entry
sudo setfacl -x u:omar report.txt
ACL은 여러 팀이 호스팅 환경에서 디렉터리를 공유하면서 그룹을 재구성할 필요가 없을 때 이상적입니다.
계정 보안 및 만료
chage를 사용하여 비밀번호 사용 기간(aging)을 적용하고 계정 상태를 검토합니다.
# Show current aging settings
sudo chage -l sara
# Require a password change every 90 days
sudo chage -M 90 sara
계정을 일시적으로 잠그거나 잠금 해제하려면 다음과 같이 합니다.
sudo usermod -L sara # lock
sudo usermod -U sara # unlock
일상적인 관리에서는 비밀번호보다 SSH 키를 선호하고, /etc/ssh/sshd_config에서 root의 SSH 로그인을 완전히 비활성화하세요.
매니지드 클라우드 서버에서 종합하기
이러한 명령은 보편적으로 적용되지만, 어디에서 실행하느냐가 중요합니다. Skyline Cloud VPS에서는 서버가 왕국(사우디아라비아) 내부에 위치하여 데이터가 사우디 PDPL, NCA, SDAIA 요구사항을 준수하게 되며, 문제가 생겼을 때 현지 아랍어 지원도 받을 수 있습니다. 비즈니스 이메일 호스팅과 결합하면 완전하고 규정을 준수하는 스택이 완성됩니다.
올바른 사용자 위생 관리, 즉 사람당 하나의 계정, 최소 권한 sudo, 엄격한 파일 권한, SSH 키 사용은 여러분이 배포할 수 있는 가장 저렴한 보안 수단입니다.
서버를 띄우고 배운 내용을 적용할 준비가 되셨나요? Skyline Cloud 계정을 만들고 몇 분 안에 왕국 내 VPS를 시작하세요.
Comments
0 total · 0 threads