![[Linux] 리눅스 사용자 및 그룹과 파일 권한 관리](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcGzC4M%2FbtsM0M2ab0K%2FshZchzshpKBRTOZ9MESdek%2Fimg.png)
리눅스에서의 사용자 및 그룹의 개념과 파일 권한 관리에 대해 정리한 글입니다.
리눅스 사용자 (User)
리눅스에서 사용자(User)는 시스템의 보안, 접근 제어, 자원 분리에 있어 핵심적인 요소로, 단순히 로그인 계정 이상의 의미를 가지며 서버 운영, 파일 시스템 보호, 네트워크 보안 등 광범위한 영역에 직접적으로 관여한다.
리눅스에서 사용자의 개념
리눅스는 다중 사용자 운영체제로, 각 사용자의 고유한 식별자와 권한을 가지며, 시스템 자원에 대한 접근 권한이 분리되어 있다.
사용자의 주요 속성
- 사용자 이름 (Username) : 로그인 시 사용하는 이름
- UID (User ID) : 시스템 내부에서 사용자를 식별하는 고유 번호
- GID (Group ID) : 사용자가 속한 기본 그룹의 식별자
- 홈 디렉터리 : 사용자 전용 작업 공간 (
/home/username
) - 기본 쉘 : 로그인 시 실행되는 쉘 (
/bin/bash
)
사용자 계정의 종류
리눅스에서 사용자 계정은 크게 루트 사용자(root), 일반 사용자(user), 그리고 시스템 사용자로 구분된다.
루트 (Root) 계정
- 루트(Root) 계정은 리눅스 시스템의 최고 관리자(superuser) 계정
- 사용자명 :
root
| UID :0
(리눅스에서UID=0
은 무조건 슈퍼유저로 간주) | 홈 디렉터리 :/root
- 사용자명 :
- 시스템 내 모든 권한을 가지며, 어떤 제한도 받지 않고 모든 명령과 자원에 접근할 수 있음
- 권한 범위 : 모든 파일과 디렉터리 / 프로세스 / 네트워크 / 시스템 설정 / 사용자 관리 / 프로그램 설치 및 삭제
- 잘못된 명령으로 시스템을 손상시키거나 보안 위험을 초래할 수 있기 때문에 직접 로그인 및 상시 사용은 권장되지 않음
일반 사용자 (User) 계정
- 일반 사용자 계정은 시스템 리소스를 사용하는 비관리자 계정
- UID :
1000
이상 (Ubuntu 기준) | 홈 디렉터리 :/home/username
- UID :
- 일반적인 작업(파일 편집, 프로그램 실행 등)을 수행하며, 시스템 핵심 구성에는 제한된 접근만 가능
- 시스템 제어 권한 : 없음 (
sudo
권한 필요)
- 시스템 제어 권한 : 없음 (
원래 사용자 계정은 프로그램 설치 및 삭제가 불가능하지만,sudo
키워드를 이용하여root
의 권한을 빌려 프로그램 설치 및 삭제를 할 수 있다. 하지만 이러한sudo
권한은 아무 사용자가 가능한 것은 아니며, Ubuntu 기준으로 처음 생성한 사용자와 별도로sudo
권한을 부여한 계정에서만 사용할 수 있다.
사용자 관리 명령어
사용자 계정 추가
$ sudo adduser [username]
- 사용자 계정을 생성하는 것은
root
의 권한이며,root
계정이 없는 새로운 계정이 생성됨 - 자동으로 홈 디렉터리 생성, 비밀번호 설정 등 기능 수행
useradd
명령어도 있으나,adduser
명령이 훨씬 사용자 친화적인 인터페이스를 제공
adduser
와useradd
의 차이adduser
: 편리한 자동 설정 (필요한 모든 설정들을 Default 값으로 생성)useradd
: 전문가용으로 세부 옵션 설정이 필요 (홈 디렉터리, 계정 설정, 사용자 UID 설정, 시작 쉘 환경 등 세부 설정 가능)
사용자 계정 삭제
$ sudo deluser [username]
- 사용자 계정을 삭제하는 것은
- 사용자 계정은 삭제되나, 사용자 홈 디렉터리는 깔끔하게 지워지지 않음
$ sudo deluser --remove-home [username]
- 홈 디렉터리까지 깔끔하게 삭제하기 위해서는
--reomve-home
옵션을 추가해야 함
다른 사용자 계정 로그인
$ su [user]
- 첫 사용자 계정을 제외한 나머지 사용자 계정은 기본적으로
root
권한이 없기 때문에sudo
명령어를 사용할 수 없음 exit
명령어로 처음 로그인한 사용자 계정으로 돌아올 수 있음
$ su - [username]
-
옵션을 추가하면 해당 사용자의 환경을 완전히 불러올 수 있음 (~/.bashrc
등)
리눅스 그룹 (Group)
리눅스에서 그룹(Group)은 사용자 간 자원(파일, 디렉터리 등)에 대한 접근 권한을 공동으로 관리하기 위한 중요한 구조이다. 파일 관리 권한(chmod
, chown
등)을 이해하기 위해서는 그룹 규칙에 대한 이해가 필요하다.
리눅스에서 그룹의 개념
그룹은 여러 사용자에게 공통된 권한을 부여하기 위한 논리적 단위이다. 사용자는 하나의 기본 그룹(Primary Group)에 속하고, 필요에 따라 여러 보조 그룹(Supplementary Groups)에 추가로 속할 수 있다.
사용자와 그룹의 관계
- 기본 그룹 : 사용자가 파일을 생성했을 때 자동으로 소유하게 되는 그룹
- 보조 그룹 : 협업을 위해 별도로 소속된 추가 그룹
- 하나의 사용자 > 여러 그룹 : 보조 그룹을 포함하여 가능
- 하나의 그룹 > 여러 사용자 : 공동 권한 관리 목적으로 가능
그룹 관련 시스템 파일
/etc/group
: 시스템의 모든 그룹 정보 및 그룹에 속한 사용자 목록 포함/etc/gshadow
: 그룹 비밀번호 등 민감 정보 포함
그룹 관련 주요 명령어
그룹 확인
$ groups [username]
- 해당 사용자가 속한 모든 그룹 출력
그룹 생성
$ sudo addgroup [group]
- 그룹을 생성할 때에는
root
권한 필요
그룹 삭제
$ sudo delgroup [group]
- 그룹을 삭제할 때에는
root
권한 필요
그룹에 사용자 추가 및 삭제
$ sudo gpasswd [option] [username] [group]
- 그룹에 사용자를 추가 및 삭제하는 경우
root
권한 필요-a
옵션 : 그룹에 사용자 추가 ex)$ sudo gpasswd -a [user] [group]
-d
옵션 : 그룹에 사용자 삭제 ex)$ sudo gpasswd -d [user] [group]
사용자에 그룹 추가
$ sudo usermod -aG [group] [username]
- 사용자에 보조 그룹을 추가하는 명령어로,
root
권한 필요-aG
옵션 : 기존 그룹을 유지하며 추가하는 옵션으로, 생략 시 기존 그룹이 모두 제거됨
$ sudo usermod -g [group] [username]
- 사용자 기본 그룹을 변경하는 명령어로,
root
권한 필요
시스템 그룹
리눅스에서 시스템 관련 기능별 그룹은 사전에 정의되어 있다. 특정 기능을 사용하고 싶을 때, 해당 기능의 그룹에 사용자를 추가함으로써 권한을 부여하는 방식으로 사용한다.
sudo
: 권리자 권한 (sudo
명령어 사용 허용)adm
: 시스템 로그 읽기 허용www-data
: 웹 서버 소유 사용자 그룹docker
: 도커 CLI를root
없이 실행 가능하도록 함audio
,video
: 장치 접근 권한 부여용
파일 및 디렉터리 권한 관리
리눅스의 파일 및 디렉터리 권한 관리는 시스템 보안과 사용자 자원 보호에 있어 핵심적인 개념 중 하나이며, 시스템 보안성과 협업 환경을 정교하게 통제하기 위해 사용된다.
리눅스 파일 시스템의 권한 구조
리눅스의 파일과 디렉터리는 소유자(User), 그룹(Group), 그리고 기타(Others)로 나누어 각각 접근 권한 정보를 가진다.
- 소유자 (User) : 파일을 소유한 사용자
- 그룹 (Group) : 파일이 속한 그룹
- 기타 (Others) : 소유자와 그룹에 속하지 않은 나머지 사용자들
- 권한 (Permission) : 읽기(
r
), 쓰기(w
), 실행 권한(x
)
권한의 표현 형식
리눅스의 파일 및 디렉터리의 권한은 파일 유형 - 사용자 권한 - 그룹 권한 - 기타 권한
순서로 10자리로 나타낸다.
- 파일 유형 (리눅스 철학 : 리눅스는 모든 것을 파일로 관리한다)
- 일반 파일 (
-
) - 디렉터리 파일 (
d
) : 리눅스 커널 내부에서는 디렉터리도 하나의 파일로 취급 - 링크 파일 (
l
) : 윈도우의 바로가기와 비슷한 파일 - 장치 파일 (
b
,c
등) : 새로운 장치를 연결하면 연결된 장치에 대한 파일이 생성되며, 해당 파일로 장치 제어 가능
- 일반 파일 (
- 권한 정보
r
: 읽기 권한 (read) | 파일 내용을 읽거나 디렉터리 내 파일 목록을 볼 수 있음w
: 쓰기 권한 (write) | 파일 내용을 수정하거나 디렉터리 내 파일 생성 및 삭제 가능x
: 실행 권한 (execute) | 실행 파일을 실행할 수 있으며 디렉터리 진입 가능-
: 권한 없음
디렉터리에 실행 권한이 없다면, 디렉터리 내부로 이동이 불가능하다.
숫자 형식 권한 (8진수)
권한 조합 | 숫자 값 | 의미 |
--- |
0 | 권한 없음 |
--x |
1 | 실행만 가능 |
-w- |
2 | 쓰기만 가능 |
-wx |
3 | 쓰기 + 실행 가능 |
r-- |
4 | 읽기만 가능 |
r-x |
5 | 읽기 + 실행 가능 |
rw- |
6 | 읽기 + 쓰기 가능 |
rwx |
7 | 읽기 + 쓰기 + 실행 가능 |
- 전체 권한은 3자리 숫자 조합으로 표현
$ chmod 754 [file]
- 해당 파일에 소유자는
rwx
권한, 그룹에는r-x
권한, 그리고 기타 사용자에는r--
권한을 부여하겠다는 의미
파일 권한 설정 명령어
파일 권한 설정 명령어는 디렉터리에도 동일하게 적용이 가능하다.
소유자 및 그룹 변경
$ sudo chown [owner] [file] # 소유자만 변경
$ sudo chown [owner]:[group] [file] # 소유자와 그룹 모두 변경
- 파일의 소유자 및 그룹을 변경하는 명령어 (
chown
: change owner) - 관리자 권한 필요 (
sudo
명령어 사용)
파일 및 디렉터리 권한 변경
$ sudo chmod [mode] [file]
- 관리자 권한 필요 (
sudo
명령어 사용) - 소유자(
u
), 그룹(g
), 기타(o
), 전체(a
)에 권한 부여 가능- 소유자에게 권한 부여 : ex)
$ sudo chmod u=rwx test.txt
- 그룹에게 권한 부여 : ex)
$ sudo chmod g=rx test.txt
- 기타에게 권한 부여 : ex)
$ sudo chmod o=r test.txt
- 전체(소유자, 그룹, 기타)에게 권한 부여 : ex)
$ sudo chmod a=rw test.txt
- 소유자에게 권한 부여 : ex)
- 기존 권한에 추가(
+
), 삭제(-
), 지정(=
)할 수 있음- ex) 그룹에 쓰기 권한 추가 :
$ sudo chmod g+w test.txt
- ex) 기타에 읽기 권한 삭제 :
$ sudo chmod o-r test.txt
- ex) 그룹에 쓰기 권한 추가 :
- 사용자 및 그룹 별로 권한을 지정하는 대신, 8진수를 이용하여 한번에 권한 부여 가능
- ex) 소유자에
rwx
, 그룹에r-x
, 기타에r--
권한 부여 :$ sudo chmod 754 test.txt
- ex) 소유자에
'🌐 OS > Linux' 카테고리의 다른 글
[Linux] 리눅스 텍스트 에디터, Vim 사용자 환경 설정 (with. .vimrc) (0) | 2025.03.30 |
---|---|
[Linux][Ubuntu] 우분투 패키지 관리자 아카이브 위치 변경 (1) | 2025.03.29 |
[Linux] 리눅스 텍스트 에디터, Vim 설치 및 주요 사용법 (0) | 2025.03.29 |
[Linux] Shell 명령어와 파일 관리 명령어 (0) | 2025.03.26 |
[Linux] 리눅스 패키지 관리 시스템 (Linux Package Management System) (feat. Ubuntu) (0) | 2025.03.26 |
since 2025.01.27. ~ 개발자를 향해....🔥