리눅스 파일 접근 권한 관리

리눅스에서는 파일과 디렉토리에 대한 접근 권한을 설정하여 보안을 관리합니다.

각 파일과 디렉토리는 소유자, 그룹, 기타 사용자에 대한 권한을 가집니다.

1. 파일 접근 권한

권한 종류

읽기 (r) ‘4’ : 파일 내용을 읽을 수 있음

쓰기(w) ‘2’ : 파일 내용을 변경할 수 있음

실행(x) 1′ : 파일을 실행할 수 있음 (디렉토리의 경우, 디렉토리 내 파일 목록을 볼 수 있음)

권한 표시

rwx r-x r–와 같은 형식으로 표시

첫 번째 문자 : 파일 유형 (- 파일, d 디렉토리)

다음 세 문자: 소유자 권한 [rwx]

다음 세 문자 : 그룹 권한 [r-x]

마지막 세 문자: 기타 사용자 권한 [r–]

첫번째 -, d를 제외한 세문자씩 이해가 되겠죠?

– : 일반 파일

텍스트 파일, 실행 파일 등 rw-r–r–  (일반 파일로, 소유자는 읽기/쓰기, 그룹과 기타 사용자는 읽기만 가능)

d: 디렉토리

폴더(디렉터리) drwxr-xr-x : 디렉토리로, (소유자는 읽기/쓰기/실행, 그룹과 기타 사용자는 읽기/실행 가능)

이렇게 일반 파일, 디렉터리를 알아봤습니다. 위에 제공한 사진 중에 l 이라는 형식이 있습니다.

해당 l은 심볼릭 링크로 다른 파일이나 디렉토리를 가리키는 링크

lrwxrwxrwx : 심볼릭 링크로, (모든 사용자에게 읽기/쓰기/실행 권한이 표시되지만 실제 권한은 링크된 파일에 따라 다름)


추가적으로 몇개 더 알아보겠습니다. 다양한 종류가 있지만 알아두면 좋습니다.

b : 블록 장치 파일하드 드라이브, CD-ROM 등과 같은 장치 파일brw-rw—- : 블록 장치 파일로, 소유자와 그룹은 읽기/쓰기 가능

c : 문자 장치 파일키보드, 마우스 등과 같은 장치 파일crw-rw-rw- : 문자 장치 파일로, 모든 사용자에게 읽기/쓰기 가능

p : 파이프프로세스 간 통신에 사용prw-r–r– : 파이프로, 소유자는 읽기/쓰기, 그룹과 기타 사용자는 읽기만 가능

s : 소켓네트워크 통신에 사용srwxr-xr-x : 소켓으로, 소유자는 읽기/쓰기/실행, 그룹과 기타 사용자는 읽기/실행 가능


2. 기본 접근 권한 설정

umask란?

umask는 새로 생성되는 파일과 디렉토리의 기본 권한을 설정하는 데 사용됩니다.

기본적으로 허용되는 최대 권한에서 umask 값을 빼서 실제 권한을 결정합니다.

기본 권한

파일 : 666 (읽기/쓰기)

디렉토리 : 777 (읽기/쓰기/실행)

umask는 기본 권한에서 제거할 권한을 지정합니다.

umask 022는 그룹과 기타 사용자에 대한 쓰기 권한을 제거합니다.

그러면 umask 022로 값을 지정하면 파일의 기본권한 666 – 022 = 644가 되겠죠?

644가 의미하는 것은 소유자의 읽기/쓰기 권한 부여 및 그룹, 기타는 읽기 권한만 생기게 되겠죠 그럼 소유자를 제외한 유저들은 읽기에 대한 권한만 부여됩니다.

디렉터리는 어떻게 될까요 기본 생성 권한 777 – 022 = 755로 변경됩니다. 소유자는 읽기/쓰기 권한 그룹, 기타는 읽기/실행 권한이 부여가 됩니다.

이렇게 umask를 통해서 새로 생성되는 파일, 디렉터리에 대한 보안강화가 가능합니다.

리눅스에서 umask를 설정할 때, 앞의 두 자리는 생략 가능하며, 시스템이 자동으로 0을 채워 4자리로 표시합니다.


3. 특수 접근 권한

SUID (Set User ID)

파일 실행 시 소유자의 권한으로 <– 이말의 뜻은

SUID는 파일의 소유자가 아닌 사용자가 해당 파일을 실행할 때, 파일 소유자의 권한으로 실행되도록 하는 특수 권한입니다. 주로 실행 파일에 적용되며, 시스템 관리 작업을 일반 사용자에게 허용할 때 사용

SUID의 동작 방식

파일 소유자 권한으로 실행 : 파일을 실행하는 사용자가 파일 소유자의 권한을 임시로 획득

보안 관리 : 특정 시스템 명령이나 프로그램이 일반 사용자에 의해 실행될 수 있도록 허용

실행예 : chmod u+s (filename)

chmod u+s filename

이렇게 되면 일반 사용자가 파일에 대한 실행 권한을 부여받게 됩니다.

그러면 사용자가 자신의 패스워드를 변경할 수 있도록 할려면 아래와 같이 명령어를 입력하면 되겠죠?

chmod u+s /usr/bin/passwd

하지만 일반사용자에게 패스워드 변경 권한을 준다는 것은 보안의 문제가 있을수 있어서 현업에서는 비추천입니다.

SGID (Set Group ID)

SGID는 파일이나 디렉토리에 설정할 수 있는 특수 권한으로, 파일을 실행하거나 디렉토리에 파일을 생성할 때 그룹 권한을 상속받도록 합니다. 주로 디렉토리에 적용되어 협업 환경에서 유용하게 사용됩니다.

SGID의 동작 방식

파일에 SGID 설정

파일 실행 시: 실행하는 사용자가 파일의 그룹 권한을 임시로 획득

예시 : 특정 그룹의 권한으로 실행해야 하는 프로그램

디렉토리에 SGID 설정

디렉토리 내 파일 생성 시 : 생성된 파일이 부모 디렉토리의 그룹 소속

협업 환경 : 여러 사용자가 동일한 그룹으로 파일을 생성하고 관리할 때 유용

SGID 설정 방법

# g+s: 그룹에 SGID 권한 부여
chmod g+s filename_or_directory

# -rwxr-sr-x (파일) 또는 drwxr-sr-x (디렉토리)
ls -l filename_or_directory

Sticky Bit

Sticky Bit는 디렉토리에 설정할 수 있는 특수 권한으로, 디렉토리 내 파일을 삭제하거나 이름을 변경할 수 있는 권한을 파일 소유자와 디렉토리 소유자에게만 제한합니다. 주로 공용 디렉토리에서 사용됩니다.

chmod +t directoryname

Sticky Bit의 동작 방식

파일 삭제 제한 : 디렉토리 내 파일을 소유자만 삭제 가능

공용 디렉토리 관리 : 여러 사용자가 파일을 생성할 수 있지만, 삭제는 소유자만 가능

Sticky Bit 설정 방법

chmod +t directory
tmp 디렉터리 Sticky Bit

예 : /tmp 디렉토리

( 모든 사용자가 임시 파일을 생성하는 공용 디렉토리 )

Sticky Bit 필요성 : 각 사용자가 자신의 파일만 삭제 가능

By Low ahn

리눅스를 처음 접하시는 분들은 위한 다양한 리눅스 정보를 공유합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다