본문 바로가기
Linux/Linux 명령어, 스크립트, 설정

Linux 유저 및 그룹 권한 설정 방법의 모든 것

by Developer88 2021. 9. 30.
반응형

오늘은 Linux에서 유저 및 그룹의 권한설정 방법에 대해 알아보겠습니다.

 

1. Linux의 사용자 및 그룹 개념

Linux는 여러 사용자가 접속할 수 있는 OS시스템입니다. 

여러 사용자가 동시에 시스템을 사용할 수 있다는 것은,

그 사용자들이 사용한 파일과 권한들을 관리해 주어야 한다는 뜻입니다.

 

다양한 사용자들을 관리하기 위해,

모든 권한을 가진 root가 존재하구요.

나머지 사용자들은 그룹에 포함시켜 관리합니다.

 

2. group

각 파일은 소유자와 그룹에 속하며, 

그룹에 속한 사용자들은 해당 그룹의 권한을 공유합니다.

group에 관한 정보들은 

"/etc/group"에서 볼 수 있습니다.

아래 명령어로 쉽게 확인할 수 있습니다.

  • cat /etc/group

 

나오는 정보는 다음과 같은 순서로 나오는 것을 볼 수 있습니다.

비밀번호는 "x"로 나와서 가려지구요. 그룹에 속한 사용자 이름도 가려지는 경우가 많습니다.

 

그룹명: 비밀번호: 그룹ID: 그룹에 속한 사용자 리스트(","로 구분)

 

/etc/passwd에서 사용자에 대한 정보가 기술되어 있습니다.

가장 처음에 나오는 사용자는 root이구요. ID도 0입니다.

 

사용자명: 비밀번호: 유저ID: 소속된 그룹의 ID: 전체이름: 홈디렉토리명: 기본Shell의 이름<bash>

 

3. 권한

3-1. 권한 표시

사용자와 권한에 대해 알아보았으니,

권한을 어떻게 설정하면 되는지 알아보죠.

 

권한은 크게 3가지로 나누어 집니다.

read의 r, write의 w, execute의 x로,

'r', 'w', 'x'이 세가지에 대해 알파벳만 보고 무슨 권한인지 알 수 있습니다.

  • r: 읽기: 파일 내용을 읽거나 디렉토리 내용을 나열할 수 있는 권한.
  • w: 쓰기: 파일 내용을 수정하거나 디렉토리 파일을 추가, 삭제할 수 있는 권한.
  • x: 실행: 파일을 실행하거나 디렉토리에 접근할 수 있는 권한.

 

보통 서버에서 파일을 생성하고,

'ls -la'명령어를 실행해보면,

아래와 같이 파일의 권한이 나오는 것을 볼 수 있습니다.

 

 

순서대로 해석해 볼까요?

소유자와 그룹은 모든 권한을 가지고,

기타 사용자들은 읽기와 실행만 할 수 있도록 되어 있습니다.

 

  • d: 디렉토리를 의미, 파일의 경우는 '-'로 표시
  • rwx: 처음 세문자는 소유자의 권한
    • read, write, execute 권한을 모두 소유
  • rwx: 다음 세문자는 그룹의 권한을 의미(파일을 만든 사용자의 기본 그룹)
    • read, write, execute 권한을 모두 소유read, execute 권한만 소유
  • r-x: 다음 세문자는 기타 모든 사용자의 권한을 의미
    • read, execute 권한만 소유

3-2. 숫자로 표현하는 권한

리눅스에서는 r,w,x에 각각 숫자로 매칭해서 권한을 설정할 수 있습니다.

실행(x)이1, 쓰기(w)가 2, 읽기(r)가 4입니다.

  • r = 4
  • w = 2
  • x = 1

이숫자들을 이용해서 아래와 같이 사용할 수 있습니다.

chmod는 권한을 설정하는 명령어인데요.

755로 권한을 표시해 설정하였습니다.

chmod 755 filename

 

 

755라는 숫자를 자세히 볼까요.

리눅스에서 숫자로 권한을 설정할 때는,

3자리 숫자를 사용하는데요.

각각 다음과 같은 의미를 가지고 있습니다.

 

위치 권한 종류 의미
첫째자리 소유자(Owner) 권한 파일 소유자에 대한 권한
둘째자리 그룹(Group) 권한 파일의 권한을 공유하는 그룹에 대한 권한
셋째자리 기타 사용자(Other) 권한 소유자 및 그룹이 아닌 다른 사용자들에 대한 권한

 

만약,755라면 다음과 같은 의미가 되겠지요.

  • 첫 번째 숫자 7: 소유자(owner)의 권한으로, 읽기(4) + 쓰기(2) + 실행(1) = 7
  • 두 번째 숫자 5: 그룹(group)의 권한으로, 읽기(4) + 실행(1) = 5
  • 세 번째 숫자 5: 기타 사용자(others)의 권한으로, 읽기(4) + 실행(1) = 5

그러니까, 모두 다 읽을 수는 있는데,
그룹사용자와 기타사용자는 쓰기는 못하며,

소유자, 그룹사용자, 기타사용자 모두 실행할 수 있다는 뜻 입니다.

 

만약 소유자나 그룹에 속해있지 않은 사용자는,

아무것도 못하게 하려면,

750으로 설정해주면 됩니다.

  • 첫 번째 숫자 7: 소유자(owner)의 권한으로, 읽기(4) + 쓰기(2) + 실행(1) = 7
  • 두 번째 숫자 5: 그룹(group)의 권한으로, 읽기(4) + 실행(1) = 5
  • 세 번째 숫자 0: 아무 권한도 없음

 

2. 유저 권한 설정

 

2.  sticky bit

sticky bit를 실제로 설정한 명령어를 보겠습니다.

  • chmod -R 1777 /srv/http/my-project

위의 명령어와 옵션들은 각각 다음과 같은 의미를 가집니다.

  • chmod: 파일 권한을 변경하는 명령어
  • -R: 리커시브(재귀적) 옵션
    • 지정한 디렉토리 내 모든 파일과 서브디렉토리에 대해 작업을 수행합니다.
  • 1777: 권한을 나타내는 숫자로, 여기서는 특정한 권한 패턴을 나타냅니다. 
    • 이 패턴은 SUID와 sticky bit을 설정한 것입니다.

위에서 1777이라는 숫자에 대해서 더 알아보겠습니다.

이는 다음과 같이 다시 구성되어 집니다.

  • 1은 sticky bit
    • Sticky bit은 디렉토리 내의 파일을 해당 파일의 소유자만이 삭제할 수 있도록 하는 보안 기능 중 하나입니다.
  • 7은 소유자에게 읽기, 쓰기 및 실행 권한을 부여,
  • 2는 그룹에게 읽기와 실행 권한을, 나머지
  • 7은 다른 사용자에게 읽기, 쓰기 및 실행 권한을 부여합니다. 

위에서 언급한, Sticky bit(스티키 비트)는 UNIX 및 유닉스 계열 운영 체제에서 사용되는 파일 및 디렉토리 권한의 일부로서, 특정 디렉토리 내에서 파일을 삭제하는 권한을 제한하는 보안 기능입니다.

일반적으로, 디렉토리 내의 파일은 해당 디렉토리에 쓰기 권한이 있는 사용자라면 누구나 삭제할 수 있습니다. 하지만 디렉토리에 sticky bit이 설정되어 있으면, 해당 디렉토리 내의 파일은 그 파일의 소유자만이 삭제할 수 있습니다. 다른 사용자는 자신이 만든 파일 외에는 삭제할 수 없습니다.

스티키 비트는 주로 /tmp 디렉토리와 같은 공유 디렉토리에서 여러 사용자가 파일을 생성하고 삭제할 때의 보안 이슈를 해결하기 위해 사용됩니다. 이렇게 하면 다양한 사용자가 서로의 파일을 보호할 수 있습니다.

 

 

4. 유저권한 읽기

ls -la를 해보면 아래와 같은 파일 권한이 왼쪽에 표시가 됩니다.

  • drwxr-xr-x

위와 같은 권한이 있다고 하겠습니다.

무슨 의미일지 하나씩 보도록 하기전에,

아래 3가지 문자에 대해 이해하고 있어야 합니다.

 

구분 내용
r 읽기(read) 권한
w 쓰기(write) 권한
x 실행(execute) 권한 

 

이제 하나씩 보도록 하겠습니다.

  • d: 디렉토리를 의미, 파일의 경우는 '-'로 표시
  • rwx: 처음 세문자는 소유자의 권한을 의미
    •  read, write, execute 권한을 모두 소유
  • r-x: 다음 세문자는 그룹의 권한을 의미(파일을 만든 사용자의 기본 그룹)
    • read, execute 권한만 소유
  • r-x: 다음 세문자는 기타 모든 사용자의 권한을 의미
    • read, execute 권한만 소유

정리해 보면, 이 파일을 생성한 소유자만 쓰기 권한을 가지고,

나머지 사용자들은 모두 읽기와 실행권한만 가지고 있습니다.

 

 

4. 실행권한 추가하기

리눅스에서 스크립트 파일을 생성했는데,

실행권한이 없으면, 

당연히 실행이 되지 않습니다.

 

'ls -la' 명령어를 실행해 보면,

아래와 같이 되어 있는 것을 볼 수 있습니다.

 

-rw-r--r-- 1 user  staff   812 Jan  1 11:51 docker-cleanup.sh

 

이럴 때는 아래 명령어를 입력해 주기만 하면 됩니다.

이 명령어는,

소유자(u)에게 읽기, 쓰기, 실행 권한을 부여하고,

그룹(g)과 기타 사용자(o)에게 읽기와 실행 권한을 부여해 줍니다.

 

chmod +x <실행파일>

 

 

그럼 아래와 같이 바뀌는 것을 볼 수 있습니다.

그룹과 기타 사용자에게는 쓰기 권한인 w를 부여하지 않은 것을 볼 수 있습니다.

  • -rwxr-xr-x   1 user  staff   812 Jan  1 13:52 docker-cleanup.sh

 

만약 소유자에게만 실행권한을 추가하려고 한다면 아래와 같이 명령어를 넣어주면 됩니다.

 

chmod u+x <실행파일>

 

당연히 실행권한을 최소화 하는 것이 보안에 도움이 되겠지요.

728x90

댓글