돌할우밤 공부방

1. 확장 퍼미션(setUID setGID sticky bit)에 대하여 + 실습

  • 확장 퍼미션에 관하여

일반적으로 파일이나 디렉토리에는 user, group, other 권한이 존재하고 각각 읽기, 쓰기, 실행 권한을 부여할 수 있다 이런 일반 권한 이외에도 리눅스에는 확장 퍼미션 즉 확장 권한이 존재하는데 이것이 setuid, setgid, sticky bit이다.

 

특수권한 setUID setGID sticky bit
8진수 4 2 1

먼저 위의 표를 보면 이렇게 나타낼 수 있는데 즉 확장퍼미션 값을 주고 싶으면 예를 들어 chmod? 744 이때 확장 퍼미션 값을? 에 집어넣으면 되겠다

 

-setUID

SetUID가 설정된 파일을 실행할 때 일시적으로 파일 소유자의 권한을 얻어 실행할 수 있도록 하는데 예를 들어 root 권한으로 지정된 프로그램에 SetUID가 지정되어 있다면 실행할 때 root 권한으로 실행된다 쉽게 설명을 덧붙이자면 실행할 때 root의 권한을 빌려온다고 생각하면 된다.

 

chmod로 fire라는 파일에 setUID값을 넣었으니 이제 실행하게 되면 root권한으로 실행되게된다 물론 이해하기싶게 fire파일을만들어서 한 모습
흔히 비밀번호 설정하기 위해 실행되는 파일인 passwd는 setUID로 되어있어 실행시키면 root의 권한을 빌려와 실행되지만 값을 바꾸면 root의 권한이 없어 실행이 불가능하다.

 

-setGID

 SetUID와 마찬가지로 SetGID가 설정된 파일을 실행할 때 일시적으로 파일 소유 그룹의 권한을 얻어 실행하도록 해준다

setGID값을 주고 root 계정으로 파일을 만들어보자
위 사진과 같이 루트로 파일을 만들어도 setGID값으로 인해 ubam그룹으로 권한을 얻어 실행하게 설정이 되어있다.

 

- sticky BIT

sticky BIT는 sticky BIT값이 설정된 디렉터리는 누구나 파일을 만들 수 있으며 자신의 소유가 아닌 파일을 삭제할 수 없다 즉 쉽게 말해 공유 디렉터리라고 보지만 소유자만이 파일 삭제가 가능하다.(물론 root계정으로는 삭제가 가능함)

 

ubam 계정으로 muyaho파일을 만든 모습 muyaho는 ubam및root계정만이 삭제가 가능하다

2. lsattrr과 chattr을 사용하여 파일 속성 바꾸기 

  • lsattr 명령어로 파일 속성을 알아보고 chattr로 파일 속성을 부여해보자

lsattr [option] [filename] - 해당 파일 속성을 알아보는 명령어

chattr [option] [-v version] [mode] [filename] - 해당파일 속성을 변경하는 명령어

 

먼저 파일의 속성들을 알아보자.

속성 설명
- ext2/ext3등 파일시스템에서 설정할 수 있는 13개의 속성을 의미
a 쓰기시에 오로지 추가모드로만 열 수 있다.
c 커널에 의해 디스크 상에 압축 상태로 저장.
d dump(8)명령 수행시 백업 되지 않는다 (덤프 방지)
i 삭제,이름변경,링크등 어떤 자료도 변경 불가. (root 조차 변경 불가)
j 데이터 저널링
s 지워질 때 블록들이 모두 0으로 되고 다시 디스크상에에 씌여짐(안전한 삭제)
t 하단 결합 불가
u 삭제가 되었을 경우에는 그 내용이 저장 (데이터로 복구 가능)
A 접근시간(atime) 갱신 안함
D 동기화된 디렉토리 업데이트
S 수정될 때 그 변화가 디스크 상에 동기화 (동기화된 업데이트)
T 디렉토리 계층구조의 최상위
읽기 전용 속성
h  큰 파일
e 압축  오류
i 색인 디렉토리
X 압축 로우 액세스
Z compressed dirty file

 

lsattr 명령어의 옵션


-R
디렉토리와 그 이하 모든 내용에 대한 속성값 출력.
-a '?'로 시작하는 파일을  포한한 디렉토리 내 모든 파일 출력.
-d 디렉토리를 볼 때 안에든 파일을 일반 파일처럼 출력.
-v 파일 버전을 출력.

 

lsattr 명령어로 Boom디렉토리와 그 밑 파일들 버전을 확인해 보았지만 설정이 되어있지 않다 이제 chattr로 속성을 부여해보자

chattr 명령어의 옵션

옵션  
-R 디렉토리와 그 이하 모든 내용의 속성을 변환
-V 변환된속성의 대하여 자세히 출력
-f 요ㅛ류 메세지 표시
-v version 파일의 버전을 설정
모드  
+ 파일의 속성을 추가
- 파일의 속성을 제거
= 파일이 갖는 속성을 오로지 주어진 속성을 가지도록 설정

chattr명령어에 i옵션을 추가해 이도,삭제,수정불가 속성을 부여하고 ubam계정으로 삭제를 시도해 보겠다
위 사진처럼 허가 거부가 나오게된다 이처럼 속성을 부여할 수 있다

3. useradd로 유저를 생성하는 것 이외에 추가 속성 부여하기

전 게시물에서 했던 useradd(사용자 생성 명령어)로 이번에는 그냥 생성이 아닌 추가 속성을 부여해보자

-useradd 명령어의  옵션

옵션 설명 
-u  사용자 계정의 UID 지정 
-g  사용자 계정의 GID 지정 
-G  사용자 계정의 2차 그룹의 GID 지정 
-d  사용자의 홈 디렉토리를 지정
-e  사용자의 계정 만기일 지정 
-f 사용자의 계정 유효일 지정 
-s 로그인 시 사용할 기본 쉘 지정 
-M 사용자의 홈 디렉토리를 생성하지 않음 
-c comment 

그럼 이제 한번 만들어보자 나는 사용자 이름 : sakura UID : 2500 기본 그룹 : 10(wheel) 홈 디렉터리 : /home/nija/sakura 기본 쉘 : /bin/bash로 설정해서 만들어 보겠다

생성
성공한 모습을 볼 수 잇다

-추가로 chage 명령어 알아보고 실습해보자

chage란? 사용자의 패스워드 만기 정보를 변경 및 설정하는 명령어이다(root 권한을 가진 사용자만 사용 가능함)

옵션 설명
-l 지정한 계정의 정보 확인
-d 패스워드 날짜 수정 (yyyy-mm-dd형식 or 숫자)
-E 계정 만료일 설정 (yyyy-mm-dd형식 or 숫자)
-m 패스워드 최소 의무 사용일 수 지정
-M 패스워드 최종 변경일로부터 변경없이 사용할 수 있는 최대일 수 설정
-I 패스워드 만료일이 지나면 계정 비활성화 (yyyy-mm-dd형식)
-W 패스워드 만료 며칠 전부터 사용자에게 경고 메세지를 보낼지 설정

자 이제 sakura에 대한 패스워드 속성을 수정해 보자 최소기간 : 1 최대 기간 : 60 경고 기간 : 5 특정 날자에 만료 : 2021-8-22

sakura의 기본 설정값
바뀐 모습

 

4. /etc/sudoers란 파일에 대해 알아보자.

-먼저 /etc/sudoers는 sudo 명령 어을 사용하게 할 수 있는 계정을 관리하는 설정 파일이다 역시 설정 파일이기에 /etc밑에 존재하며 root계정 권한이 걸려있고 SetUID나 SetGID가 걸려있지 않으므로 일반 사용자가 읽거나 편집이 불가하다.

또한 /etc/sudoers파일은 쓰기 권한이 없기에 리눅스 편집기인 'vi'를 사용하지 못하고 'visudo'라는 명령어를 사용해 편집해야 한다. 그렇다고 vi편집기로 수정이 불가한 건 아닌데 chmod로 설정을 변경하면 수정이 가능하다.

visudo로 열어서 보면 100번째 줄로 이동하게 되면 sudo를 사용할 수 있는 계정을 부여하는 문구가 있다 여기에 [ '사옹자'          ALL=(ALL)           ALL]를 입력해서 sudo를 사용할수 있게 설정을 부여할 수 있다.

5. setfacl을 이용해 acl 구성해보기

-먼저 acl에 대하여 간단하게 알아보자

acl(Access Control List)이란 파일과 디렉터리 확장 속성 중에 하나이며 setfacl 명령어를 통해 파일의 소유자나 그룹을 더 만들며 다양한 권한을 줄 수 있으며 getfacl 명령어로 추가된 권한을 확인 할 수 있다.

 

먼저 getfacl과 setfacl 명령어에 알아보자

getfacl [option] [filename] - 파일 및 디렉토리 권한 확인 명령어

setfacl [option] [filename] - 파일 및 디렉토리 권한 부여(수정) 명령어

 

-getfacl 옵션

옵션 설명
-d 기본 소유자 그룹과 권환에 대해 확인
-R 디렉토리 및 파일 내용까지 확인

대표적인 사용 예 모습

이제 한번 설정을 바꿔보자

-setfacl 옵션

옵션 설명
-m 권한을 수정할 때 사용한다.
-x 권한을 삭제할 때 사용한다.
-R 디렉토리의 경우 밑의 파일 내용까지 권한 변경한다.
-b 권한 및 mask 등등 지정한 권한을 파멸적 삭제.

이렇게 설정을 변경해 저 디렉토리 수정권한을  sasuke라는 유저에게 부여해보았다.

'IT_공부 > Linux' 카테고리의 다른 글

/Linux/RHCSA/6일차  (0) 2021.06.28
/Linux/RHCSA/5일차  (0) 2021.06.27
/Linux/RHCSA/4일차  (1) 2021.06.22
/Linux/RHCSA/2일차  (0) 2021.06.18
/Linux/RHCSA/1일차  (0) 2021.06.16

>