Linux Permission에 대해 알아보자

관리 권한 및 접근 권한

시스템 관리자

시스템 관리자의 역할

  • 사용자, 그룹 등록 및 삭제
  • 소프트웨어 설치, 업그레이드, 삭제
  • 하드웨어 추가 설치
  • 시스템 보안
  • 데이터 백업

Windows의 관리자 계정 : Administrator
Unix의 관리자 계정 : Super user
다른 말로 Privileged user or account <-> non-privieged

슈퍼유저(superuser)

  • 시스템을 관리할 수 있는 사용자
  • root : 슈퍼유저가 사용하는 계정
  • root 로그인시, Shell의 모양이 $ -> #으로 변경

슈퍼유저 로그인 방법

  • 직접 root 계정으로 로그인
  • 다른 계정으로 로그인 후 su 명령 사용, exit으로 빠져나옴
  • su 명령 사용시 root 패스워드 사용, sudo- s 명령 사용시 본인 패스워드 사용

사용자 계정 추가 명령어

사용자 계정 추가

  • useradd [옵션] 사용자명
  • adduser [옵션] 사용자명 - 보다 편리함

패스워드 설정

  • passwd 사용자명
  • 관련파일 : /etc/passwd, /etc/shadow

사용자 계정 삭제

  • userdel [-r] 사용자명 : -r 옵션을 통해서 홈 디렉토리도 삭제

사용자와 그룹

Group

  • 여러 사용자를 하나의 그룹으로 묶어 관리
  • 특히 권한 공유를 위해 주로 사용
    • ex) /var/temp 라는 디렉토리를 여러 사용자가 함께 사용해야할 경우, 각 사용자 권한을 수정하지 않고 같은 그룹에 소속 후 다음 그룹 수정 권한 부여
  • 한 사용자는 최소 하나의 그룹에 속해야 하며 해당 그룹은 primary group이라 한다.
  • 한 사용자는 여러 그룹에 속할 수 있음

기본 사용자 그룹

  • 해당 사용자 ID로 새로운 그룹이 생성되고, 해당 그룹에 속함

사용자와 그룹은 unique Id and number로 관리

  • /etc/passwd에서 확인
  • 그룹 정보는 /etc/group

그룹 관리 명령어

그룹 추가

  • groupadd [옵션] 그룹명 : 새로운 그룹 생성

그룹 삭제

  • groupdel [-r] 그룹명 : 그룹 삭제, 해당 그룹이 특정 사용자의 primary group인 경우 삭제 불가

현재 소속 그룹 확인

  • groups [사용자명] : 사용자의 소속 그룹 확인, 사용자명이 없을 경우 현재 로그인 사용자 정보 출력

사용자에 소속 그룹 추가

  • usermod -G 그룹명 사용자명 : 사용자에 새로운 소속 그룹에 지정. ,를 사용해 여러 그룹 지정 가능하며 공백 문자 사용 X. 만약 현재 소속된 그룹명이 포함되어 있지 않다면, 해당 그룹 제거.
    옵션
    -a : -G 옵션과 함께 사용되며, 새로운 그룹을 append 함 (-aG)
    -g 그룹명 : 해당 그룹으로 소속을 시키며 ,동시에 primary group으로 지정
    usermod는 본래 사용자의 다양한 정보(홈 디렉토리, 로그인시 사용할 shell, UID)를 수정하는 명령어이다.

/etc/group

  • 그룹에 관한 정보 및 현재 그룹의 소속 사용자 표시
  • 이 파일을 직접 수정하여 그룹 정보 변경할 수 있으나, 오타 등의 위험

특정 계정 혹은 그룹에 관리 권한 부여

  1. 사용자를 sudo 그룹에 포함

    • Sudo 그룹: 관리 권한가진 그룹
    • usermode -aG sudo user1
    • 사용자 생성시 sudo 그룹 포함 : useradd -m -G sudo user
  2. /etc/sudoers 파일 수정

    • 관리 권한을 가진 유저를 관리하는 파일
    • 오타로 인해 시스템 오류가 발생할 수 있으니, 가급적 사용 X
    • 편의상 해당 파일을 직접 수정하기보다 /etc/sudoers.d/ 경로 아래에 새로운 파일을 추가하는 것이 바람직함

파일 권한

stat 명령

  • stat [옵션] 파일 : 파일의 자세한 상태 정보 출력
    Access 필드에 권한여부가 표시됨.

소유자 변경

chown(change owner)

  • chown 사용자 파일
  • chown [-R] 사용자 디렉토리 : 파일 혹은 디렉토리의 소유자를 지정한 사용자로 변경한다. -R 옵션을 통해서 디렉토리 아래의 모든 파일과 하위 디렉토리에 대해 소유자 변경

chgrp(change group)

  • chgrp 그룹 파일
  • chgrp [-R] 그룹 디렉토리 : chown와 동일하다.

일반적으로 사용하는 방법

  • chown ubuntu:ubuntu 파일이름
  • chown -R ubuntu:ubuntu

접근권한

파일에 대한 읽기(r), 쓰기(w), 실행(x) 권한

소유자(owner)/그룹(group)/기타(others)로 구분하여 관리
ex: rwx r-x r-x 소유자 rwx 그룹 r-x 기타 r-x

그룹과 기타는 쓰기 권한이 없다는 것을 알 수 있다.

접근권한의미8진수
rwxrwxrwx소유자, 그룹, 기타 사용자 모두 읽기 쓰기 실행 가능777
rwxr-xr-x소유자만 읽기 쓰기 실행가능, 그룹 기타사용자는 읽기 실행가능755
rx-rx-r–소유자와 그룹만 읽기 쓰기 가능, 기타 사용자는 읽기만 가능664
rw-r–r–소유자만 읽기 쓰기 가능, 그룹과 기타 사용자는 읽기만 가능644
rw-r—–소유자만 읽기 쓰기 가능, 그룹은 읽기만 가능640
rwx——소유자만 읽기 쓰기 실행가능700

chomod [-R] 접근권한 파일 혹은 디렉토리 : 파일 혹은 디렉토리의 접근권한을 변경한다. -R 옵션은 여타 명령과 동일

접근권한 표현: 8진수

권한이 있으면 1, 없으면 0으로, rwx 순서로 111로 매핑된다. 2진수로 값을 줘서 권한을 부여하거나 제거할 수 있다. 일반적으로 755와 644 권한을 사용한다.

접근권한 표현: 기호

사용자범위 연산자 권한
[u|g|o|a|] [+|-|=] [r|w|x]
user, group, others, all | +(권한 추가), -(권한 제거), =(권한 설정) | r(읽기), w(쓰기), x(실행)

ex) chmod g-w cs1.txt

댓글