리눅스를 처음 사용할 때 가장 혼란스러운 부분 중 하나가 파일 권한과 계정 관리입니다. 이 가이드에서는 실제 예제와 함께 기초부터 체계적으로 설명합니다.
1. 리눅스 계정의 기본 구조
리눅스는 다중 사용자 시스템으로, 모든 프로세스와 파일은 특정 계정으로 실행됩니다.
✔ 주요 계정 파일
- /etc/passwd: 사용자 정보 저장
# 예시: root:x:0:0:root:/root:/bin/bash # 사용자명:암호:UID:GID:설명:홈디렉토리:셸
- /etc/shadow: 암호화된 비밀번호 저장 (root만 접근 가능)
- /etc/group: 그룹 정보 저장
✔ UID/GID 이해하기
- UID(User ID): 사용자 고유 번호
root=0
,일반 사용자=1000+
- GID(Group ID): 그룹 고유 번호
id # 자신의 UID/GID 확인
>
> (이미지: 사용자-그룹 관계도)
2. 파일 권한의 3가지 요소
ls -l
명령어 실행 시 나타나는 권한 표기:
drwxr-xr-- 2 user group 4096 Jan 1 10:00 mydir
-rw-r----- 1 user group 102 Jan 1 10:00 myfile
✔ 권한 해독법
(이미지: 권한 표기 분석도)
- 파일 유형
-
=일반파일,d
=디렉토리,l
=링크 - 소유자 권한 (rwx)
파일 소유자의 읽기/쓰기/실행 권한 - 그룹 권한 (r-x)
소유 그룹의 권한 - 기타 사용자 권한 (r–)
그 외 모든 사용자 권한
3. 권한 변경 실전 명령어
✔ chmod: 권한 설정
숫자 모드 (8진수):
chmod 755 myfile # rwxr-xr-x
chmod 640 mylog # rw-r-----
> – 4=읽기(r), 2=쓰기(w), 1=실행(x) > – 7(4+2+1), 5(4+0+1), 0(0+0+0)
문자 모드:
chmod u+x script.sh # 소유자에게 실행권한 추가
chmod o-w file.txt # 다른 사용자 쓰기권한 제거
chmod a+r public.txt # 모든 사용자 읽기권한 추가
✔ chown: 소유자 변경
chown user:group file.txt # 소유자와 그룹 동시 변경
chown -R user dir/ # 디렉토리 재귀적 변경
✔ 특수 권한 (SUID, SGID, Sticky Bit)
권한 | 숫자값 | 예시 | 효과 |
---|---|---|---|
SUID | 4000 | chmod 4755 | 실행 시 소유자 권한으로 실행 |
SGID | 2000 | chmod 2770 | 디렉토리 내 새 파일의 그룹 상속 |
Sticky | 1000 | chmod 1777 | 디렉토리 내 파일 삭제 방지 (/tmp) |
4. 실무 적용 예제
🔒 웹 서버 구성 시
chown -R www-data:www-data /var/www # 웹 파일 소유권 변경
chmod -R 755 /var/www # 디렉토리 실행 권한 필수!
find /var/www -type f -exec chmod 644 {} \; # 파일은 644
🔐 개인 파일 보호
chmod 700 ~/private # 본인만 전체 접근 가능
chmod go-rwx secret.txt # 그룹/기타 사용자 권한 제거
5. 계정 관리 핵심 명령어
# 사용자 추가
sudo adduser newuser
# 그룹 생성
sudo groupadmin developers
# 사용자를 그룹에 추가
sudo usermod -aG developers newuser
# 패스워드 변경
passwd # 본인 계정
sudo passwd username # 다른 계정 (root만)
>
> (이미지: 계정 생성/관리 프로세스)
6. 접근 제어 실습
test_dir
디렉토리 생성- 소유자를 본인 계정으로 설정
- 권한을 750으로 변경
- 그룹 사용자는 파일 읽기만 가능하도록 설정
mkdir test_dir sudo chown $USER:developers test_dir chmod 750 test_dir
💡 보안 원칙
- 최소 권한 원칙: 필요한 최소한의 권한만 부여
- 정기적 감사:
ls -lR /critical_dir
로 권한 검토 - 불필요 계정 제거: 퇴사자 계정은 즉시 비활성화
- 암호 정책:
/etc/login.defs
에서 패스워드 주기 설정
>
> (이미지: 일반적인 권한 오류 메시지)
리눅스 권한 시스템은 처음엔 복잡해 보이지만, 체계적으로 이해하면 시스템 보안의 핵심 도구가 됩니다. 실제 서버 환경에서 이 가이드를 참고해 안전한 환경을 구축해 보세요!