[Linux] OS 기본 계정 관리 및 권한 설정 완전 정복 (chmod, chown)

Linux(CentOS/RHEL) 환경에서의 기본적인 사용자 계정 생성, 비밀번호 설정, 그리고 파일 권한(Permission) 및 소유권(Ownership) 관리를 위한 필수 명령어 정리 노트입니다.

1. 사용자 계정 관리 (User Management)

리눅스 시스템에서 사용자를 추가하고, 비밀번호를 설정하며, 계정 정보를 확인하는 방법입니다. 모든 작업은 root 권한이 필요합니다.

계정 생성 및 비밀번호 설정

useradd 명령어로 계정을 생성하고 passwd로 비밀번호를 설정합니다. (CentOS 계열에서 adduseruseradd의 심볼릭 링크입니다.)

  • useradd [옵션] [계정명]: 계정 생성
  • passwd [계정명]: 비밀번호 설정 (생략 시 현재 로그인된 계정의 비밀번호 변경)
# 1. 기본 생성 예시
[root@localhost ~]# useradd testuser
[root@localhost ~]# passwd testuser
Changing password for user testuser.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

# 2. 옵션을 지정하여 상세 생성 예시
# -d: 홈 디렉토리 지정
# -u: UID 지정 (500번대 이상 권장)
# -g: GID 지정 (기존 그룹)
# -c: Comment (사용자 설명)
# -s: 쉘 지정 (/bin/bash 등)
[root@localhost ~]# useradd -d /home/was -u 510 -g 500 -c "WAS Admin" -s /bin/bash wasadmin

계정 관련 주요 파일 경로

  • /etc/passwd: 사용자 계정 정보가 저장됨 (형식: User:PWD:UID:GID:Comment:Home:Shell)
  • /etc/group: 그룹 정보가 저장됨

기타 유용한 명령어

  • su - [계정명]: 해당 계정으로 로그인 (환경변수 로드 포함)
  • usermod: 계정 속성 수정 (옵션은 useradd와 유사)
  • userdel -r [계정명]: 계정 및 홈 디렉토리까지 완전 삭제

2. 권한 관리 (Permission - chmod)

리눅스는 다중 사용자 시스템이므로 파일과 디렉토리에 대해 읽기(r), 쓰기(w), 실행(x) 권한을 엄격히 구분합니다.

권한 표기법 (Octal vs Symbolic)

  • r (Read, 4): 파일 읽기 / 디렉토리 목록 확인
  • w (Write, 2): 파일 수정 / 디렉토리 내 파일 생성 및 삭제
  • x (Execute, 1): 파일 실행 / 디렉토리 진입(cd)

권한 합산 예시:

  • 7 (rwx) = 4 + 2 + 1 : 모든 권한
  • 5 (r-x) = 4 + 0 + 1 : 읽기 및 실행
  • 6 (rw-) = 4 + 2 + 0 : 읽기 및 쓰기

chmod 사용 예제

# 1. 심볼릭 모드 (u:소유자, g:그룹, o:기타)
chmod u+x run.sh      # 소유자에게 실행 권한 추가
chmod g-w data.txt    # 그룹에게 쓰기 권한 제거

# 2. 8진수 모드 (실무에서 가장 많이 사용)
chmod 755 script.sh   # 소유자(rwx), 그룹(rx), 기타(rx)
chmod 644 config.conf # 소유자(rw), 그룹(r), 기타(r) - 일반적인 설정 파일
chmod 600 private.key # 소유자(rw)만 접근 가능 - 보안 중요 파일

# 3. 재귀적 변경 (-R 옵션)
chmod -R 755 /var/www/html # 하위 디렉토리 및 파일 전체 적용

3. 소유권 관리 (Ownership - chown)

파일이나 디렉토리의 소유자(Owner)와 소유 그룹(Group)을 변경할 때 사용합니다. 주로 파일 전송 후 권한을 맞출 때 사용됩니다.

# 소유자만 변경
chown user1 file.txt

# 소유자와 그룹을 동시에 변경 (소유자:그룹)
chown was:wasgroup app.log

# 디렉토리 하위 모든 파일의 소유권 변경 (-R)
chown -R apache:apache /var/www/html

4. 파일 정보 확인 및 해석 (ls -al)

ls -al 명령어를 통해 현재 권한 상태를 정확히 파악하는 것이 중요합니다.

drwxr-xr-x  2  root  root  4096  Dec 9 10:00  etc
----------  -  ----  ----  ----  -----------  ---
    (1)    (2)  (3)   (4)   (5)      (6)      (7)
  1. 파일 타입 및 권한: 첫 글자가 d면 디렉토리, -면 파일. 이후 3자리씩 소유자/그룹/기타 권한.
  2. 링크 수: 하드 링크의 개수.
  3. 소유자(User): 파일의 소유 계정 ID.
  4. 소유 그룹(Group): 파일의 소유 그룹 ID.
  5. 파일 크기: Byte 단위 크기.
  6. 수정 시간: 마지막 수정 날짜.
  7. 파일 이름: 파일명.

Next Step:
기본적인 권한 관리에 익숙해졌다면, SetUID, SetGID, Sticky Bit와 같은 특수 권한 설정을 학습하여 보안 레벨을 한 단계 높여보시기 바랍니다.

Comments