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
- 그룹에 관한 정보 및 현재 그룹의 소속 사용자 표시
- 이 파일을 직접 수정하여 그룹 정보 변경할 수 있으나, 오타 등의 위험
특정 계정 혹은 그룹에 관리 권한 부여
사용자를 sudo 그룹에 포함
- Sudo 그룹: 관리 권한가진 그룹
- usermode -aG sudo user1
- 사용자 생성시 sudo 그룹 포함 : useradd -m -G sudo user
/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