
리눅스 운영에서 사용자 권한과 sudo 설정은 보안과 관리 효율성의 핵심입니다.
이번 글에서는 기본 권한 구조부터 chown, chmod 사용법, 그리고 sudo 권한 부여 및 보안 설정까지 실습 위주로 정리해보겠습니다.
리눅스에서는 모든 파일이 소유자(User), 그룹(Group), 기타 사용자(others) 세 가지 권한 영역으로 나뉩니다.
각 영역에 대해 읽기(r), 쓰기(w), 실행(x) 권한을 부여하거나 제한할 수 있습니다.
ls -l 출력 구조 분석예시:
-rw-r--r-- 1 user1 devgroup 1234 Mar 1 10:00 file.txt
-: 일반 파일d : 디렉터리l : 심볼릭 링크rw- r-- r--rw- → 소유자(user): 읽기, 쓰기r-- → 그룹(group): 읽기만 가능r-- → 기타 사용자(others): 읽기만 가능cd 가능 여부)👉 따라서 디렉터리에는 보통 x 권한이 꼭 필요합니다.
chown)# 파일 소유자 변경
sudo chown user1 file.txt
# 사용자·그룹 동시 변경
sudo chown user1:devgroup file.txt
# 디렉터리 전체 소유권 변경 (-R 옵션)
sudo chown -R user1:devgroup /var/www
⚠️ -R 옵션은 하위 전체에 적용되므로 주의가 필요합니다.
# 사용자(u), 그룹(g), 기타(o) 권한 추가/제거
chmod u+x script.sh # 사용자 실행 권한 추가
chmod g-w file.txt # 그룹 쓰기 권한 제거
chmod o-r file.txt # 기타 사용자 읽기 권한 제거
chmod 755 file.txt → rwx r-x r-xchmod 640 file.txt → rw- r-- ---숫자 의미:
chmod 770 project_dir
chmod 750 secure.sh
Permission denied 오류가 발생합니다.👉 sudo는 보안상 root 비밀번호를 공유하지 않고도 관리자 권한을 제한적으로 부여할 수 있어 안전합니다.
visudo)sudo 권한은 /etc/sudoers 파일에서 관리합니다.
👉 반드시 visudo 명령으로 수정해야 합니다. (문법 체크 지원)
sudo visudo
파일 열고 맨 아래 줄에 추가:
%admins ALL=(ALL) ALL
✅ 이렇게 하면 admins 그룹 소속 사용자들은 sudo로 모든 명령을 실행할 수 있습니다.
⚠️ 문법 오류가 발생하면 sudo 자체가 막혀 복구가 어려워질 수 있습니다.
visudo 사용/etc/sudoers.d 활용)운영 환경에서는 /etc/sudoers.d/ 디렉터리 방식을 권장합니다.
echo "%admins ALL=(ALL) ALL" | sudo tee /etc/sudoers.d/admins
이 방식의 장점:
새로운 사용자 devuser를 생성하고 비밀번호를 설정했습니다.
sudo adduser devuser
sudo passwd devuser
admins 그룹을 만들고 devuser를 추가합니다.
sudo groupadd admins
sudo usermod -aG admins devuser
sudo visudo
맨 아래 줄에 추가:
%admins ALL=(ALL) ALL
이제 admins 그룹 소속 사용자는 sudo 명령을 사용할 수 있습니다.
echo "%admins ALL=(ALL) ALL" | sudo tee /etc/sudoers.d/admins
이 방법은 보안적으로 더 안전하고, 관리도 편리합니다.
devuser 계정으로 전환합니다.
su - devuser
sudo 권한이 정상적으로 동작하는지 확인합니다.
sudo whoami
출력:
root
✅ 정상적으로 root 권한 위임이 작동했습니다.
비밀번호 입력 없이 sudo 실행 가능하도록 설정할 수도 있습니다.
echo "devuser ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/devuser
테스트:
su - devuser
sudo whoami
출력:
root
⚠️ 하지만 보안상 운영 환경에서는 지양해야 하며, 특정 명령만 허용하는 방식이 더 안전합니다.