컴퓨터에 접근하는 계정을 의미한다. 하나의 컴퓨터에 여러 사용자가 있을 수 있다. 그 계정들이 사용자이다.
cat /etc/passwd
컴퓨터의 사용자 목록을 출력한다.
root:*:0:0:root:/root:/bin/bash
:
값으로 구분된 값들이 나열된다. 이 중 가장 앞의 root
가 사용자의 이름을 나타낸다.
필드 위치 | 설명 |
---|---|
1 | 사용자 이름 (root) |
2 | 암호 정보 (x 또는 *) |
3 | 사용자 ID (UID) |
4 | 그룹 ID (GID) |
5 | 사용자 설명 또는 전체 이름 |
6 | 홈 디렉토리 (/root) |
7 | 로그인 쉘 (/bin/bash) |
관리자이다. 시스템의 모든 권한을 가진 계정이다.
root
계정이 슈퍼 사용자로 설정되어 있다.~ ❯ whoami
regularkim
sudo su
# super user
su user-name
user-name
에 해당하는 사용자 계정으로 변경한다.
그룹이란 사용자 계정을 묶어서 관리하기 위한 단위이다. 여러 사용자에게 공통된 권한을 한번에 부여하고 관리할 때 유용하다.
groups user-name
user-name
에 속하는 계정의 그룹을 출력한다.
하나의 컴퓨터에는 여러 사용자가 존재한다. 그러다보니 특정 사용자가 다른 사용자의 파일을 마음대로 접근하는 것을 막기 위해 권한이라는 기능을 추가했다. 권한을 활용하면 특정 사용자에 대해서만 특정 파일 또는 디렉토리에 접근할 수 있게 만들 수 있다.
리눅스의 모든 파일에는 '누구에게 어떤 권한까지 허용할 지'와 '소유자'와 '소유 그룹'이 설정되어 있다. 파일에서 이 정보를 확인할 수 있다.
ls -l
total 24
-rw-r--r--@ 1 regularkim staff 861 7 4 14:40 backup_demo.sql
drwxr-xr-x 3 regularkim staff 96 4 20 21:40 CursorProjects
drwxr-xr-x 3 regularkim staff 96 7 3 14:49 DataGripProjects
drwx------@ 4 regularkim staff 128 7 4 12:19 Desktop
drwx------@ 13 regularkim staff 416 6 24 13:43 Documents
drwx------+ 4 regularkim staff 128 6 29 05:05 Downloads
drwxr-xr-x 4 regularkim staff 128 7 27 19:56 IdeaProjects
맨 왼쪽 열의 문자열을 확인해보자. 어떤 행은 -
으로 시작하고 다른 행은 d
로 시작한다. 여기서 -
는 일반 파일을 의미하고, d
는 디렉토리를 의미한다. 위 값들 중 drwxr-xr-x
을 예시로 더 자세히 알아보자.
d | rwx | r-x | r-x |
---|---|---|---|
File Type | User | Group | Others |
파일 유형을 의미 | 소유자에게 혀용된 권한을 의미 | 소유 그룹에게 허용된 권한을 의미 | 소유자도 아니고 소유 그룹도 아닌 사용자에게 허용된 권한을 의미 |
일반 파일의 경우 | 유저 권한과 같으므로 생략 | 유저 권한과 같으므로 생략 | |
- : 일반 파일 | r (read) : 읽을 수 있다. | ||
d : 디렉토리 | w (write) : 수정할 수 있다. | ||
l : 심볼릭 링크 | x (execute) : 실행할 수 있다. | ||
권한을 r , w , x 의 순서로 표시하고 해당 권한이 없으면 - 로 표시한다. | |||
디렉토리의 경우 | |||
r : 디렉토리 내부 파일 조회가 가능하다. | |||
w : 디렉토리 내부 파일을 생성/삭제 가능하다. | |||
x : 디렉토리 내부로 접근 가능하다. | |||
권한을 r , w , x 의 순서로 표시하고 해당 권한이 없으면 - 로 표시한다. |
이제 drwxr-xr-x
의 의미를 이해할 수 있다. 해당 파일은 디렉토리이며 파일의 소유자는 읽기, 수정, 실행이 가능하다. 소유 그룹은 읽기와 실행만 가능하다. 소유자도 아니고, 소유 그룹도 아닌 유저는 읽고, 실행만 가능하다.
regularKim
이름이 적혀있는 열은 파일의 소유자를 나타낸다. 파일을 생성한 사람이 자동으로 파일의 소유자로 설정된다.
staff
이름이 적혀있는 열은 소유주가 아니라 소유자가 속한 그룹의 이름을 나타낸다. 각 사용자마다 기본 그룹이 설정되어 있다. 그 기본 그룹이 그룹명에 나타난다.
chmod
명령어를 사용하면 파일에 부여된 권한을 변경할 수 있다. 이 때 숫자 3개를 활용해서 변경할 권한을 설정한다. 각 권한(r, w, x)은 해당하는 숫자가 있다. 이 숫자를 더해서 변경할 권한을 수정할 수 있다.
r (읽기) | w (쓰기) | x (실행) |
---|---|---|
4 | 2 | 1 |
chmod 777 my-script.sh # -rwxrwxrwx
chmod 644 file.txt # -rw-r--r--
chmod 755 secret.txt # -rwxr-xr-x
chmod 777
어떤 파일에 소유자
, 소유 그룹
, 그 외의 사용자
에게 모든 권한을 부여하고 싶다. 그럼 아래와 같이 권한을 부여해야 한다. 이 때, 소유자
, 소유 그룹
, 그 외의 사용자
에게 부여한 권한 문자에 맞게 각각 숫자를 더하면 777
이라는 숫자가 나온다. 이 숫자를 활용해 rwxrwxrwx
라는 권한을 부여할 수 있게 된다.
chmod 777 file-name