데브옵스(DevOps)/Linux

[Linux] 리눅스의 사용자 권한과 chmod 명령어

잇트루 2022. 8. 25. 12:35
반응형

리눅스의 사용자 권한 확인하기

리눅스의 파일과 디렉토리는 사용권한이 존재한다. 사용 권한에 대해 알아보기 위해 다음 명령어로 디렉토리와 파일을 생성한다.

mkdir hello
nano hello.java

 

파일과 디렉토리를 생성한 뒤, ls -l 명령어를 통해 목록을 살펴보면 다음과 같은 정보를 얻을 수 있다.

hello 디렉토리는 drwxrwxr-x

hello.java 파일은 -rw-rw-r--

이를 해석하면, 첫 글자 d와 -에서

d : 디렉토리(directory)를 뜻한다.

  • : 디렉토리가 아닌(not directory) 것을 뜻한다.

이어지는 r, w, x는 읽기 권한(read permission), 쓰기 권한(wirte permission), 실행 권한(execute permission)을 나타낸다.

 

각 권한을 3번 반복하는 이유는 소유자, 그룹, 나머지 사용자에 대한 권한을 표시하기 때문이다.

hello.java는 소유자는 읽기와 쓰기, 그룹과 나머지 사용자는 읽기만 가능하다는 의미이다.

hello 디렉토리는 소유자는 읽기와 쓰기, 실행 모두 가능하고, 그룹과 나머지 사용자는 읽기와 실행만 가능하다는 의미이다.

 

User, Group, Other

소유자(user) : 파일의 소유자. 기본적으로 파일을 만든 사람이 소유자가 된다. 따라서 user를 소유자라 하기도 한다.

 

그룹(group) : 먼저 group은 여러 user가 포함될 수 있다. 그룹에 속한 모든 user는 파일에 대해 동일한 권한을 갖게 된다. 많은 사람이 접근해야 하는 프로젝트라 가정하면, 각 user에게 접근 권한을 부여하는 것보다 user를 group에 추가하고 파일 권한을 group에 부여하는 것이 효율적일 것이다.

 

다른 사용자(other) : user와 group이 아닌 나머지 사용자를 뜻한다. 따라서 other 권한을 설정하면, 해당 권한을 다른 사용자가 접근할 수 있어 global 권한 설정이라고 볼 수 있다.

 

chmod : 권한을 변경하는 명령어

chmod 명령어는 디렉토리나 파일의 읽기, 쓰기, 실행 권한을 변경할 수 있다.

OS에 로그인한 사용자와 디렉토리나 파일의 소유자 같은 경우 chmod로 권한을 변경한다.

 

먼저, chmod로 권한을 변경하는 방법은 두 가지이다.

  1. +, -, = 기호를 통해 권한 유형을 표기하여 변경하는 Symbolic method 방법
  2. rwx를 3bit로 해석(8진수)하여 3자리 숫자로 표기하는 Absolute form 방법

 

Symbolic method 방법

이 방법은 액세스 클래스(Access class), 연산자(Operator), 액세스 타입(Access Type)으로 구분한다.

액세스 클래스 : u (user), g (group), o (other), a (all)

연산자 : + (add access), - (remove access), = (set exact access)

액세스 타입 : r (read), w (write), x (execute)

 

명령어 chmod 뒤에 변경할 권한을 입력한다.

액세스 클래스, 연산자, 액세스 타입 순서로 조건에 따라 조합하여 입력한다.

chmod g-r filename    # 그룹의 읽기 권한을 제거한다.
chmod g+r filename    # 그룹의 읽기 권한을 부여한다.
chmod g-w filename    # 그룹의 쓰기 권한을 제거한다.
chmod g+w filename    # 그룹의 쓰기 권한을 부여한다.
chmod g-x filename    # 그룹의 실행 권한을 제거한다.
chmod g+x filename    # 그룹의 실행 권한을 부여한다.
chmod o-r filename    # 다른 사용자의 읽기 권한을 제거한다.
chmod o+r filename    # 다른 사용자의 읽기 권한을 부여한다.
chmod o-w filename    # 다른 사용자의 쓰기 권한을 제거한다.
chmod o+w filename    # 다른 사용자의 쓰기 권한을 부여한다.
chmod o-x filename    # 다른 사용자의 실행 권한을 제거한다.
chmod o+x filename    # 다른 사용자의 실행 권한을 부여한다.
chmod u+x filename    # 소유자의 실행 권한을 부여한다.

# ...

 

또한, 연산자를 사용하여 다중 권한 부여 및 제거가 가능하다.

#초기 filename의 권한이 ----------이라 가정하고 순서대로 명령을 했을 때
chmod a=rw filename # -rw-rw-rw-
chmod u= filename # ----rw-rw-
chmod a+rx filename # -r-xrwxrwx
chmod go-wx filename # -r-x-r--r--
chmod a= filename # ----------
chmod u+rwx filename # -rwx------

 

Absolute form 방법

소유자, 그룹, 다른 사용자의 권한을 r, w, x 순서로 8진수로 해석하여 3자리로 표현한다.

r (read) : 4

w (write) : 2

x (Ececute) : 1

 

부여하고 싶은 권한의 수를 더함으로써 표현하는 것이 쉬울 것이다.

# filename의 권한을 -rwxrwxrwx로 하고 싶다면
chmod 777 filename

# filename의 권한을 ----------로 하고 싶다면
chmod 000 filename

# filename의 권한을 -r--r--r--로 하고 싶다면
chmod 444 filename

# filename의 권한을 --w--w--w-로 하고 싶다면
chmod 222 filename

# filename의 권한을 ---x--x--x로 하고 싶다면
chmod 111 filename

# filename의 권한을 -r-x-w--wx로 하고 싶다면
chmod 523 filename

 

반응형