본문 바로가기
Infra/Linux

[Infra] Linux 유저 권한 설정 및 그룹 세팅

by 옥돔이와 연근이 2025. 3. 28.
728x90
반응형

필자는 현재 온프레미스 환경의 서버에서 업무를 진행 중이다. OS는 Rocky linux 8을 사용중이다. 그리고 폐쇄망 환경이라, 형상관리를 직접 컨테이너 띄워 운용 중이다. Gitea라는 무료 오픈소스를 사용 중이고, 사용법은 github, gitlab들과 유사하다. (gitlab enterprise 사용하면 좋겠다..)

며칠 전에 프로젝트 도중에 큰 사고가 발생한 적이 있다. 서버 내의 바로 형상관리 데이터 모두를 팀원이 실수로 날려버린 것... (리눅스의 rm -rf 명령어를 통해 디렉토리를 통째로 날려버렸기에 여러 복구 방법을 시도해 보았지만, 모두 실패했다. 리눅스 파일 삭제 복구는 추후 포스팅 예정) 

이런 사건들로 인하여, 나는 서버 주요 데이터 프로젝트 DB, 형상 관리 데이터 등 주요 데이터들을 정기적으로 백업하려는 전략 구축을 시도하려했고, 각 유저 별 권한을 통해 쓰기 권한에 제한을 두려 고민했다.


1. 리눅스의 권한 시스템 

권한 예시

1 - 1. 권한의 기본요소

리눅스 시스템에서 파일과 디렉토리의 권한은 'rwx'라는 세 가지 기본 권한으로 구성됩니다.

괄호 안의 숫자는 Permission 숫자를 나타냅니다.

  • - r (4): 파일을 읽거나 디렉토리의 내용을 볼 수 있는 권한
  • - w (2): 파일을 수정하거나 디렉토리에 파일을 생성/삭제할 수 있는 권한
  • - x (1): 파일을 실행하거나 디렉토리에 접근할 수 있는 권한

1-2. '권한 예시' 사진에서의 의미

drwxr-xr-x@ 4 upflag  staff   128  7 13 16:40 DOCKER-BUILD
  • drwxr-xr-x@:
    • d: 이 항목이 디렉토리임을 나타냅니다. 만약 파일이라면 -가 표시됩니다.
    • rwxr-xr-x: 파일 또는 디렉토리의 권한을 나타냅니다. 이 권한은 소유자, 그룹, 다른 사용자에게 각각 부여됩니다.
      • 첫 번째 rwx: 소유자(파일 또는 디렉토리의 소유자)에 대한 권한(읽기, 쓰기, 실행).
      • 두 번째 r-x: 그룹에 대한 권한(읽기, 실행).
      • 세 번째 r-x: 다른 사용자에 대한 권한(읽기, 실행).
    • @: 확장된 속성이 있음을 나타냅니다. ls -l@ 명령어를 사용하여 확장된 속성을 확인할 수 있습니다.
  • 4: 이 항목의 하드 링크 수를 의미합니다. 디렉토리일 경우 해당 디렉토리 내의 하위 디렉토리 수를 포함합니다.
  • upflag: 파일 또는 디렉토리의 소유자입니다.
  • staff: 파일 또는 디렉토리의 그룹 소유자입니다. staff 그룹은 해당 파일에 접근할 수 있는 사용자 그룹을 나타냅니다.
  • 128: 파일 또는 디렉토리의 **크기(바이트 단위)**를 나타냅니다. 이 경우 128바이트입니다.
  • 7 13 16:40: 이 항목이 마지막으로 수정된 날짜와 시간을 나타냅니다. 7 13은 7월 13일을, 16:40은 오후 4시 40분을 의미합니다.
  • DOCKER-BUILD: 해당 파일 또는 디렉토리의 이름입니다.

2. 리눅스 사용자, 그룹 등록 및 권한 설정

  • cat /etc/passwd: 사용자 목록 확인
  • cat /etc/shadow: 사용자 암호 확인
  • cat /etc/group: 그룹 목록 확인

2-1.  사용자,  그룹 생성 

리눅스 환경에서 여러 사람이 동시에 사용하다가 보면 각각의 사용자가 필요하고, 사용자 별 그룹을 만들어 접근, rwx권한 등을 설정할 수 있다.

사용자 생성

useradd testuser # 사용자 생성
useradd -m -g testuser testgroup # 그룹에 추가하며, 사용자 생성
passwd testuser # 사용자 비밀번호 설정
id testuser # 사용자 정보 조회

그룹 생성

groupadd admin # 그룹 생성
usermod -aG admin testuer # admin 그룹에 testuser 추가
getent group admin # 특정 그룹의 속한 사용자 조회

admin, maintainer 두 개의 그룹을 통해 특정 디렉토리의 권한을 설정할 수 있습니다. 프로젝트에서 db나 형상관리 같은 주요 데이터의 쓰기 권한을 제어함으로써 중요 데이터 보호를 할 수 있습니다.

2-2. 그룹 별 권한 관리

chown root:admin /home/home-folder
# /home/home-folder의 소유자를 root로, 그룹 소유자는 admin으로 설정
chmod 770 /home/home-folder
# admin 그룹에는 모든 권한을 부여하며, 나머지 사용자에겐 접근 권한을 제한합니다.
# (파일 소유자와 그룹에는 rwx, 다른 사용자에게는 권한 없음)

chmod 명령어 사용시, 770이라는 것은 퍼미션 코드라고 불리며, 각 자릿수 별 다른 의미가 있습니다.

  1. owner: 첫째자리는 해당 디렉토리의 소유자 권한을 나타냅니다. 7은 (r+w+x) = (4+2+1) 이므로 읽기, 쓰기, 실행 모든 권한을 가집니다.
  2. group: 둘째자리는 해당 디렉토리의 그룹 권한으로써, 예시 코드에서는 사용자와 같은 권한을 가집니다.
  3. other: 셋째자리는 해당 디렉토리의 다른 모든 사용자 권한으로써, 아무 권한도 가지지 못합니다.

이렇게 리눅스에 관련한 다양한 권한에 대해 알아보았습니다. 우리 모두 force 명령어 사용은 지양하면서 현명한 코딩 생활을 해보아요.

728x90

'Infra > Linux' 카테고리의 다른 글

[Infra] Linux 환경에 대한 이해와 고찰  (0) 2025.03.28