LINUX/리눅스 쉘 스크립트 바이블 정리

[리눅스 바이블] 7. 리눅스 파일 사용 권한 이해하기

은재정 2022. 2. 9. 21:28

 

리눅스 보안

리눅스 보안 시스템의 핵심은 사용자 계장이다. 사용자 권한은 UID로 추적된다.

 

/etc/passwd 파일

리눅스 시스템은 실제 사용자가 아닌 기능에 관련된 사용자 기능을 많이 만드는데, 이를 시스템 계정이라고 한다.

백그라운드 모드에서 실행되는 모든 서비스는 시스템 사용자 계정으로 리눅스 시스템에 로그인해야 한다.

 

/etc/passwd 파일의 필드는 로그인 사용자의 이름, 사용자의 암호, UID, GID, 설명 텍스트(주석 필트), HOME 디렉토리의

위치, 기본 쉘과 같은 정보를 포함한다. 암호 필드는 x로 설정되는데 실제 암호는 /etc/shadow에 저장되어 있다.

 

새 사용자 추가하기,  없애기, 수정하기

새사용자를 추가하기 위해선 useradd 명령을 사용한다. 시스템 기본값을 확인하려면 useradd -D를 입력한다.

사용자 계정을 지우기 위해 userdel 명령을 사용한다.

useradd -m test
ls -al /home/test
userdel -r test

 

사용자 계정에 대한 정보를 수정하기 위한 몇 가지 명령들이 존재한다.

 

1. usermod

사용자 계정 필드를 편집한다. /etc/passwd 파일의 필드 대부분을 편집할 수 있다.

특히, -L 옵션을 통해 사용자가 로그인할 수 없도록 계정을 잠글 수 있다.

 

2. passwd, chpasswd

사용자 암호를 편집할 수 있다. passwd는 현재 로그인된 계정의 암호를 변경하고 chpasswd 명령은

시스템에 있는 사용자의 암호를 대량으로 편집할 때 사용된다. userid:password 쌍으로 된 파일을 리다이렉트 해준다.

 

3. chsh, chfn, chage

chsh 명령으로 기본 로그인 쉘을 변경하고, chfn 명령으로 /etc/passwd 파일의 주석 필드를 변경한다.

chage는 사용자 계정의 암호를 얼마나 오래 쓸지 관리할 수 있다.

 

리눅스 그룹 사용하기

리눅스 시스템은 여러 사용자가 파일, 디렉토리 등 시스템의 자원에 관한 공통의 권한 세트를 공유할 수 있도록 한다.

 

/etc/group 파일

/etc/passwd 파일과 마찬가지로 여러 필드가 있는데, 좀 더 간단하게 네 개의 필드만을 사용한다.

그룹 이름, 그룹 암호, GID, 그룹에 속한 사용자 계정의 목록이다.

 

/etc/group 파일을 편집해서 그룹에 사용자를 추가해선 안되고 usermod 명령을 사용한다.

 

새 그룹 만들기, 그룹 수정하기

groupadd 명령을 통해 시스템에 새 그룹을 만들 수 있다. 이후 usermod 명령으로 해당 그룹에 사용자를 추가한다.

groupmod 명령으로 그룹을 수정한다.

 

파일 권한 해석하기

ls 명령을 사용할 때 나타나는 파일 사용 권한을 해석해보자.

 

파일 권한 기호 사용하기

ls -l 명령을 사용했을 때 나오는 첫 번째 컬럼에서 필드들이 뜻하는 바는 다음과 같다.

 

1. 첫 번째 필드

- 파일

D 디렉토리

L 링크

C 문자 장치

b 블록 장치

n 네트워크 장치

 

2. 그 이후 나오는 세 개의 세트

r 개체 읽기 권한

w 개체 쓰기 권한

x 개체 실행 권한

 

rwx는 세 번 반복되는데, 파일 소유자의 권한, 그룹 구성원의 권한, 모든 다른 사람들의 권한을 뜻한다.

 

기본 파일 권한

위와 같은 파일의 권한은 umask가 부여한다. umask를 입력하면 0022와 같은 숫자가 나타나는데 

첫 번째 숫자는 sticky bit이고 다음 세 자리 숫자는 파일, 디렉토리에 대한 umask의 8진수 값이다.

 

 

내가 만든 파일은 644 값이고, umask 값은 0022 값이다. umask 값은 마스크 값이기 때문에

파일에 대해 모든 권한 모드 666 - 022 = 644가 된다. umask 값을 설정하면 새 파일에 대한 권한도 변경된다.

 

보안 설정 변경하기

권한 변경하기

chmod 명령의 형식은 chmod options mode file이다. mode는 8진수 또는 기호 모드를 사용한다.

chmod 760 newfile
ls -l newfile

 

일반적으로 8진수를 사용하기보다는 기호 모드를 사용한다. [ugoa...][+-=][rwxXstugo]

 

문자의 첫 번째 그룹은 새로운 권한이 누구에게 적용되는지를 정의한다.

(u: 사용자, g:그룹, o: 다른 사용자, a: 위의 모든 사용자)

 

그 다음 나오는 기호는 기존 권한에 원하는 권한을 더하려는 것인지(+), 빼려는 것인지(-), 설정할 것인지(=)를 나타낸다.

 

세 번째 기호는 설정하려는 권한이다.

# 읽기 권한 모두 추가
chmod o+r newfile
chmod u-x newfile
# 실행 권한 가능한지?
ls -lF

 

소유권 변경하기

chown 명령으로 파일의 소유자를, chgrp 명령으로 파일의 기본 그룹을 변경할 수 있다.

# 파일 소유자 dan으로 변경
chown dan newfile
# 파일의 사용자는 dan, 그룹은 shared로 변경
chown dan.shared newfile
# 파일의 기본 그룹만 rich로 변경
chown .rich newfile
# 파일의 기본 그룹 변경
chgrp shared newfile

 

파일 공유하기

공유 디렉토리를 통해 여러 사람들 사이에서 문서를 공유하는 경우 SGID를 통해 할 수 있다.

mkdir testdir
ls -l
chgrp shared testdir
chmod g+s testdir
ls -l