리눅스 시스템의 사용자 관리와 파일 권한 체계 이해

리눅스는 다중 사용자(Multi-User) 기반 운영체제로, 시스템 자원을 보호하고 효율적으로 공유하기 위해 사용자, 사용자 그룹, 그리고 권한이라는 세 가지 핵심 개념을 사용합니다.

1. 사용자 및 그룹의 개념

리눅스 시스템은 개별 사용자를 식별하기 위해 사용자 이름과 비밀번호를 사용하며, 각 사용자는 고유한 UID(User ID)를 부여받습니다.
  • 루트(root) 사용자: 시스템의 모든 자원에 접근할 수 있는 최상위 관리자 계정입니다. 시스템 설정 변경 및 주요 실행 권한을 독점합니다.
  • 일반 사용자: 시스템 설치 시 생성하거나 관리자가 추가한 계정으로, 자신의 홈 디렉토리 외에는 제한된 권한을 가집니다.
  • 사용자 그룹: 여러 사용자를 하나의 논리적인 단위로 묶은 것입니다. 특정 파일이나 디렉토리에 대해 그룹 단위로 권한을 부여함으로써 협업 효율성을 높입니다.

2. 계정 전환 및 관리자 권한 획득

보안상의 이유로 평소에는 일반 계정을 사용하다가 관리 업무가 필요할 때만 루트 권한을 사용합니다.
# 루트 계정의 비밀번호 설정 및 변경
sudo passwd root

# 일반 사용자에서 루트 사용자로 전환
sudo -i
# 또는 (비밀번호 설정 후)
su - root

# 현재 접속 중인 사용자 확인
whoami

3. 사용자 계정 제어 명령어

시스템 관리자는 다음 명령어들을 통해 사용자 계정을 생성, 수정, 삭제할 수 있습니다.

사용자 생성 (useradd)

# 홈 디렉토리를 생성하며 새로운 개발자(dev_user) 추가
sudo useradd -m -s /bin/bash dev_user

# 특정 그룹(dev_team)에 소속된 상태로 사용자 생성
sudo useradd -g dev_team -m junior_dev

사용자 수정 및 삭제 (usermod, userdel)

# 사용자의 소속 그룹 변경
sudo usermod -g admin_group dev_user

# 사용자를 보조 그룹에 추가 (기존 그룹 유지)
sudo usermod -aG docker dev_user

# 사용자 계정 및 홈 디렉토리 강제 삭제
sudo userdel -rf old_user

비밀번호 관리 (passwd)

# 특정 사용자의 비밀번호 설정
sudo passwd dev_user

# 특정 계정 잠금(lock) 및 해제(unlock)
sudo passwd -l dev_user
sudo passwd -u dev_user

4. 사용자 그룹 관리

협업 환경을 구축하기 위해 그룹을 생성하고 관리하는 방법입니다.
# 'project_alpha'라는 이름의 새로운 그룹 생성
sudo groupadd project_alpha

# 그룹 이름 변경 (project_alpha -> alpha_team)
sudo groupmod -n alpha_team project_alpha

# 그룹 삭제
sudo groupdel alpha_team

# 시스템 내 모든 그룹 목록 확인
cat /etc/group

5. 파일 소유권 및 권한 관리

리눅스의 모든 파일과 디렉토리는 읽기(r), 쓰기(w), 실행(x) 권한을 가집니다.

소유권 변경 (chown)

# 파일의 소유자를 dev_user로 변경
sudo chown dev_user README.md

# 파일의 소유자와 그룹을 동시에 변경 (사용자:그룹)
sudo chown dev_user:dev_team app.py

# 디렉토리와 그 하위 모든 파일의 소유권 재귀적 변경
sudo chown -R admin:admin /var/www/html

권한 설정 (chmod)

권한은 문자 표기법과 숫자 표기법 두 가지 방식으로 설정할 수 있습니다. 숫자는 읽기(4), 쓰기(2), 실행(1)의 합산으로 계산됩니다.
  • 문자 표기법: 대상(u:소유자, g:그룹, o:기타, a:전체)과 연산자(+, -, =)를 사용합니다.
  • 숫자 표기법: 세 자리 숫자로 표현하며, 첫 번째는 소유자, 두 번째는 그룹, 세 번째는 기타 사용자의 권한을 의미합니다.
# 문자 방식: 그룹에 쓰기 권한 추가, 기타 사용자의 모든 권한 제거
chmod g+w,o-rwx script.sh

# 숫자 방식: 소유자(rwx=7), 그룹(rx=5), 기타(없음=0) 권한 설정
chmod 750 secure_data.txt

# 모든 사용자에게 실행 권한 부여
chmod a+x run_server.sh
이러한 사용자 및 권한 체계를 적절히 활용하면 다수의 사용자가 협업하는 서버 환경에서도 데이터의 무결성과 보안을 유지할 수 있습니다.

태그: linux user-management Permissions chmod chown

8월 29일 18:27에 게시됨