시스템 보안 및 관리 - 파일 시스템 보안

2022. 2. 13. 23:03리눅스마스터 1급 - 필기/리눅스 시스템 관리

리눅스 파일 시스템인 ext2부터는 기본적인 권한 이외에 13가지 속성을 추가로 파일에 부여할 수 있습니다.

13가지 속성 중 일부 속성은 특정 파일 시스템 또는 특정 커널 버전에서만 사용됩니다.

 

lsattr = 파일에 부여된 속성들을 확인 하는 명령입니다.

lsattr [옵션] [파일명] 형식으로 사용합니다. lsattr 단독으로 사용할 경우 현재 위치 아래에 있는 파일들의 속성을 출력합니다.

 

 

-R : 하위 디렉터리 까지 속성을 한번에 볼 수 있습니다.

-a : 숨겨진 파일들의 속성을 확인 할 수 있습니다.

 

chattr = 파일에 부여된 속성들을 변경 할 수 있는 명령입니다. root 사용자만 가능합니다.

chattr [옵션] mode 파일명 형식으로 사용합니다.

 

-R : 하위 디렉터리 까지 속성을 한번에 변경할 때 사용합니다.

 

mode

기호와 속성으로 이루어집니다.

 

기호

+ : 속성 부여

- : 속성 해제

= : 해당 속성만 부여하고 나머지는 해제

 

속성

A : 파일 수정시에 atime은 수정하지 않습니다. 파일은 변경되면 atime, ctime, mtime, 이 세가지 타임스탬프가 변경 됩니다. atime = 접근시간, ctime = 변경시간, mtime = 수정시간 입니다. 변경시간은 파일 속성의 변경, 파일 데이터의 변경을 의미합니다.

a : 해당 파일에 추가만 가능하도록 설정합니다.

d : dump로 백업되지 않도록 설정합니다.

l : 해당 파일의 변경, 삭제, 이름 변경, 파일 추가 등을 불가능하게 한다.

S : 파일이 변경될 경우에 디스크 동기화가 일어나도록 할 때 사용합니다.

e : 디스크 블록에 매핑하기 위해 확장된 파일임을 표시하는 것입니다. 이 속성은 chattr로 없앨 수 없습니다.

 

chattr +a /etc/passwd : /etc/passwd 파일에 삭제는 못하고 추가만 가능해집니다.

 

원래 리눅스에서 파일이나 디렉터리를 user, group, other 3계층에 r,w,x 권한으로 관리 했습니다. 하지만 기존의 권한 부여 방식(chmod)은 다른 사용자와 공유할 때 여러 문제를 발생시킵니다. 하나의 파일은 하나의 소유자와 한곳의 그룹에서만 소유 할 수 있기 때문에 소유자와 그룹에 대한 권한을 부여 할 때마다 소유자로 재로그인 해야하는 문제가 생깁니다.

예를 A라는 사용자와 B라는 사용자가 있을 때 A 사용자가 만든 newdir 이라는 디렉터리를 공유한다고 가정해보겠습니다. B 사용자도 이 디렉터리에 권한을 부여하는 권한을 가지고 싶지만 이 파일에 권한을 부여는 파일의 소유자만 할 수 있습니다. 이때 파일의 소유자가 A 뿐만아니라 B 또한 소유자가 될 수 있으면 해결이 되는 것입니다. 이를 ACL를 사용하면 해결 할 수 있습니다.

 

 

ACL을 사용하면 하나의 파일를 여러 사용자가 소유 할 수 있게 되고 여러 그룹에 속할 수 있게 됩니다.

ACL(Access Control List) : 파일이나 디렉터리에 접근 권한을 제어할 수 있도록 만든 시스템입니다. 

ext3 파일 시스템부터 지원하며 getfacl, setfacl로 ACL의 확인 및 설정을 할 수 있습니다.

 

getfacl(get file access control lists) : 파일이나 디렉터리에 설정된 권한 리스트를 확인 하는 명령입니다.

 

 

setfacl(set file access control lists) : 파일이나 디렉터리에 권한 리스트를 설정하는 명령이며 root 권한으로만 설정 가능합니다.

옵션

-m : 권한을 지정할때 사용합니다.

-x : 권한을 삭제할 때 사용합니다.

-R : 하위 디렉터리와 파일에도 적용할 때 사용합니다.

-b : 지정한 권한을 모두 삭제합니다.

 

setfacl -m u::rwx newfile : newfile의 소유자 권한에 rwx 권한을 부여합니다.

setfacl -m u:keum:rw newdir : newfile에 keum 사용자가 r,w 할 수 있는 권한을 부여합니다.

 

 

user keum에 대한 권한이 추가 되었고 mask 권한도 추가된것을 알 수 있습니다. 사용자 keum에 대한 권한은 제가 설정했지만 mask는 무엇일까요? mask 값은 권한을 제한하는 역할을 합니다. keum에 주어진 권한이 rwx 더라도 mask 값이 r-x라면 실제 keum이 사용할 수 있는 권한은 r-x인 것입니다.

 

setfacl -x u:keum newdir : newdir에 부여한 keum 권한을 삭제합니다.