DAY #9 | 파일 접근 권한 관리
🌎 05 파일 접근 권한 관리
🍔 1) 파일 속성
🍥 1-1) 파일의 속성
번호 | 속성 값 | 의미 |
---|---|---|
1 | - | 파일의 종류 |
2 | rw-r--r-- | 파일의 소유자, 그룹, 기타 사용자의 파일 접근 권한 |
3 | 1 | 하드 링크의 개수 |
4 | root | 파일 소유자의 로그인 ID |
5 | root | 파일이 속한 그룹 이름 |
6 | 158 | 파일의 크기(byte) |
7 | Jun 7 2013 | 파일이 마지막으로 수정된 날짜 |
8 | /etc/hosts/ | 파일명 |
-
파일의 종류
-
: 일반(정규) 파일d
: 디렉터리 파일l
: 심볼릭 링크 파일b
: 블록 단위로 읽고 쓰는 블록장치
파일 /devc
: 섹터 단위로 읽고 쓰는 문자장치
파일 /devp
: 파이프 파일(프로세스 간 통신에 사용되는 특수 파일)s
: 소켓(네트워크 통신에 사용되는 특수 파일)
-
파일의 접근 권한
-
file
: 지정한 파일의 종류 알려줌
-
groups
: 사용자가 속한 그룹 알려줌
🍔 2) 파일 접근 권한
🍥 2-1) 접근 권한 종류
r
: Read 권한w
: Write 권한x
: eXecute 권한
권한 | 파일 | 디렉터리 |
---|---|---|
읽기 | 파일을 읽거나 복사할 수 있다. | ls 명령으로 디렉터리 목록을 볼 수 있다 (ls 명령의 옵션은 실행 권한이 있어야 사용할 수 있다.) |
쓰기 | 파일을 수정, 이동, 삭제할 수 있다.(디렉터리에 쓰기 권한이 있어야 한다.) 즉, 파일이 속해있는 디렉터리에 w 퍼미션이 존재해야 가능 | 파일을 생성하거나 삭제할 수 있다. |
실행 | 파일을 실행할 수 있다(셸 스크립트나 실행 파일의 경우) | cd 명령을 사용할 수 있다. 파일을 디렉터리로 이동하거나 복사할 수 있다. |
🍥 2-2) 접근 권한 표기 방법
r
: 4w
: 2x
: 1rwx
: 4+2+1=7rw-
: 4+2+0=6r-x
: 4+0+1=5
🍥 2-3) 접근 권한 변경 명령
chmod
: 파일이나 디렉터리의 접근 권한 변경- 형식 :
chmod
[옵션] 권한 파일(디렉터리)
- 형식 :
🍔 3) 기호를 이용한 파일 접근 권한 변경
구분 | 문자/기호 | 의미 |
---|---|---|
사용자 카테고리 문자 | u | 파일소유자 |
"" | g | 파일 소유 그룹 |
"" | o | 소유자와 그룹 이외의 기타 사용자 |
"" | a | 전체 사용자 |
연산자 기호 | + | 권한 부여 |
"" | - | 권한 제거 |
"" | = | 접근 권한 설정(=초기화) |
접근 권한 문자 | r | 읽기 권한 |
"" | w | 쓰기 권한 |
"" | x | 실행 권한 |
- 변경 예시1
u
,g
,o
,-
사용 예시
- 변경 예시2
a
사용 예시
- 변경 예시3
=
,+
사용 예시
- 변경 예시4
소유자
도,r
권한이 없으면 읽지 못한다.(그룹에 r권한이 있어도, 소유자 권한부터 체크하기 때문에 읽지 못함)
- 변경예시 5
- 디렉터리의
w
권한 제거시, 디렉터리에 속해있는 파일생성
,삭제
불가능- 파일 자체의
w
권한 말고, 파일이 속해있는 상위 디렉터리의w
권한에 따른다.
- 파일 자체의
- 디렉터리의
- 변경예시 6
- 디렉터리의
w
권한 부여하면?, 디렉터리에 속해있는 파일생성
,수정
,삭제 가능 - chmod
775
= chmodr=rwx, g=rwx, o=rx
- 디렉터리의
- 변경예시 7
- 디렉터리의
x
권한을 제거 시, 디렉터리에 속해있는 파일이동
,복사
불가능 x
퍼미션이 없어,ls
명령어도 불가능- 파일에 대한 자세한 정보를 알려면 해당 파일 디렉터리로
이동(접근)
해야된다.
- 파일에 대한 자세한 정보를 알려면 해당 파일 디렉터리로
- 디렉터리의
🍔 4) 숫자를 이용한 파일 접근 권한 변경
🍥 4-1) 숫자로 환산하는 방법
2-2) 접근 권한 표기 방법
에서 언급했던 내용과 같다.
🍔 5) 기본 접근 권한 설정
리눅스에서는 파일이나 디렉터리를 생성할 때 기본 접근 권한이 자동적으로 설정된다.
- 일반유저에서 파일과 디렉터리를 생성해본 결과,
- 파일의 경우 : 664
- 디렉터리의 경우 : 775
파일의 최대 퍼미션은 666 (파일의 주된 목적은 읽고 쓰기
, 실행
의 경우 아주 특수
한 상황)
디렉터리의 최대 퍼미션은 777
이다. 그런데 왜 생성하면 파일 664
, 디렉터리 775
로 기본 접근 권한이 설정되는 걸까?
바로 umask
때문이다.
※ root 계정 : 기본 마스크 값 0022
※ 일반 계정 : 기본 마스크 값 0002
🍥 5-1) 기본 접근 권한 확인 및 변경
기본 접근 권한을 확인하고 설정하는 데는
umask
명령을 사용한다.
-
umask
: 기본 접근 권한을 출력또는 변경- 형식 :
umask
[옵션] [마스크값]
- 형식 :
-
umask
: 입력시 기본 마스크 값 0002가 출력, 확인할 수 있다.- 맨 앞
0
은 다른 용도이고,002
로 확인 할 수있다.
- 맨 앞
- 마스크 값이
002
일 경우- 파일 생성시 최대 퍼미션
666
-002
하면,664
의 퍼미션이 있는 파일이 생성된다. - 디렉터리 생성시 최대 퍼미션인
777
-002
하면,775
의 퍼미션이 있는 디렉터리가 생성된다.
- 파일 생성시 최대 퍼미션
umask
값을 바꿔야 할때기준점은 디렉터리
- 파일을 기준으로 마스크값 설정시, 최대 값이 6으로 설정할텐데, 6을 마스크 값 해놓고, 디렉터리도 전부 0으로 될 거라고 생각하면 큰 오산이다.
- 디렉터리의 최대 퍼미션은 7이기 때문에 1 값이 남게되고 결국 x 퍼미션이 마스크로 거를 수 없다.
- 예시
umask 007
- 파일의 경우
660
, 디렉터리의 경우770
- 파일의 경우
- 개인 풀이와 기본 접근 권한 정리
- 예시 $umask 0002 $umask -S ( ), ()안에 들어갈 내용은?
- u=rwx, g=rwx, o=rx
일반 유저 기본 접근 권한이 002 인데 맨 앞0은 다른 용도고..
루트 유저 기본 접근 권한은 보통 022
002 기준으로 설명하자면,
사용자 : 0 그룹 : 0 기타 : 2 라는 말
-S 옵션은 마스크 값을 "문자"로 출력 하라는 것
002를 문자로 출력해야하니까
u=rwx, g=rwx, o=rx 나올 것이다.
o에서 w는 어디갔냐?
w는 숫자2에 해당하고 마스크라는 뜻 자체가 일부분을 가리는 기능이기 때문에 사라진 것
가린다는 기능이, 결국 유저나 루트유저가 파일이나 디렉터리 생성이 부여하지 않을 권한을 지정해놓는 것.
파일은 666, 디렉터리는 777 을 기준으로 삼아서 생성.
기본 접근 권한, 즉 umask로 확인한 마스크 값이 002 라서.
파일 생성시 664, rw-rw-r--
디렉터리 생성시 775, rwxrwxr-x
🍔 6) 특수 접근 권한 설정
umask 명령 실행시, 맨 앞 숫자의 의미가 존재한다. 0일 경우 생략 하지만,
4
,2
,1
에 경우 아래와 같다.
4xxx
일 경우 : SetUID2xxx
일 경우 : SetGID1xxx
일 경우 : Sticky bit
SetUID는 파일에만 적용된다.
SetGID는 파일과 디렉터리 모두 적용된다.
Sticky Bit는 디렉터리에만 적용된다.
파일 | 디렉터리 | |
---|---|---|
SetUID | o | 영향 없음 |
SetGID | o | o |
Stiky Bit | 영향 없음 | o |
🍥 6-1) SetUID
- SetUID가 설정된 파일을 실행하면, 해당 파일이 실행되는 동안에는 파일 소유자의 권한이 적용된다.
- SetUID가 설정되면 소유자의 실행 권한에
s
가 표시된다.
SetUID는 파일에만 적용된다.
-
예시
- cloud 계정으로 passwd 명령을 실행해도, root 계정의 권한이 적용된다.
- cloud 계정으로 passwd 명령을 실행해도, root 계정의 권한이 적용된다.
-
특수 퍼미션 삭제 예시
chmod 0775
🍥 6-2) SetGID
- SetGID가 설정된 파일을 실행하면, 해당 파일이 실행되는 동안에는 파일 소유 그룹의 권한으로 실행된다.
- SetGID가 설정되면 그룹의 실행 권한에
s
가 표시된다.
SetGID는 파일과 디렉터리 모두 적용된다.
- 디렉터리에 적용 시 :
공유
목적으로 사용- chmod 2775 projectA 할 시
- projectA의 모든 파일, 모든 서브디렉터리들은 소유 그룹을 상속 받는다.
- 즉, aaa 유저가 만든 report1 파일도, sales라는 그룹을 상속 받는 것.
- chmod 2775 projectA 할 시
- 특수 퍼미션 삭제 예시
chmod g-s
: 숫자를 이용해서 권한 제거 불가능
chgrp
: 소유그룹 변경- 형식 :
chgrp
바꿀 소유그룹명
파일
- 형식 :
groupadd
: 그룹 추가- 형식 :
groupadd
그룹명
- 형식 :
🍥 6-3) Sticky Bit
- 디렉터리에 스티키 비트가 설정되어 있으면, 디렉터리에는 누구나 파일을 생성할 수 있다.
- Sticky bit가 설정되면 기타 사용자의 실행 권한에 *t`가 표시된다.
- 파일은 파일을 생성한 계정으로 소유자가 설정, 다른 사용자가 생성한 파일 삭제 불가능 (/tmp 디렉터리와 같다)
Sticky Bit는 디렉터리에만 적용된다.
😋 Quiz
# 1번 문제
mkdir /binbackup
chmod 750 /binbackup
# 2번 문제
cp /usr/bin/[byz]* /binbackup
# 3번 문제
cd /binbakcup
mv znew z.bak
# 4번 문제
touch -t 200212252356 btmon
# 5번 문제
cd ~
ln -s /binbackup testlink
# 6번 문제
vi /etc/hosts
192.168.56.101 server1.test.com server1
:w /tmp/hosts.bak
:q!
# 7번 문제
# root 계정
mkdir /share
groupadd finan
chmod 775 /share
chgrp finan /share
# finan 그룹의 usera 소유자 계정
touch 1.txt # ll 확인 시, 여전히 usera usera
# root 계정
chmod 2775 /share # chmod g+s
# finan 그룹의 usera 소유자 계정
touch 2.txt # ll 확인 시, usera finan
# 8번 문제
mv /binbackup/yes /share
# 9번 문제
head -7 /etc/services > /share/1.txt
# 10번 문제
grep -v nologin /etc/passwd >> /share/1.txt
# 11번 문제
vi ~/.bashrc
alias vi=vim
umask 027
. ~/.bashrc # 즉시 확인 가능, 원래는 로그인할때 확인
which date # 결과, /usr/bin/date
vi ~/.bash_profile
/usr/bin/date
DBCON=localhost
export PATH DBCON
. /root/.bash_profile # 즉시 확인
env | grep DBCON # DBCON에 대한 환경변수 전부 출력
👉 Reference
Author And Source
이 문제에 관하여(DAY #9 | 파일 접근 권한 관리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@hakeem-kim/DAY-9-파일-접근-권한-관리
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
# 1번 문제
mkdir /binbackup
chmod 750 /binbackup
# 2번 문제
cp /usr/bin/[byz]* /binbackup
# 3번 문제
cd /binbakcup
mv znew z.bak
# 4번 문제
touch -t 200212252356 btmon
# 5번 문제
cd ~
ln -s /binbackup testlink
# 6번 문제
vi /etc/hosts
192.168.56.101 server1.test.com server1
:w /tmp/hosts.bak
:q!
# 7번 문제
# root 계정
mkdir /share
groupadd finan
chmod 775 /share
chgrp finan /share
# finan 그룹의 usera 소유자 계정
touch 1.txt # ll 확인 시, 여전히 usera usera
# root 계정
chmod 2775 /share # chmod g+s
# finan 그룹의 usera 소유자 계정
touch 2.txt # ll 확인 시, usera finan
# 8번 문제
mv /binbackup/yes /share
# 9번 문제
head -7 /etc/services > /share/1.txt
# 10번 문제
grep -v nologin /etc/passwd >> /share/1.txt
# 11번 문제
vi ~/.bashrc
alias vi=vim
umask 027
. ~/.bashrc # 즉시 확인 가능, 원래는 로그인할때 확인
which date # 결과, /usr/bin/date
vi ~/.bash_profile
/usr/bin/date
DBCON=localhost
export PATH DBCON
. /root/.bash_profile # 즉시 확인
env | grep DBCON # DBCON에 대한 환경변수 전부 출력
Author And Source
이 문제에 관하여(DAY #9 | 파일 접근 권한 관리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hakeem-kim/DAY-9-파일-접근-권한-관리저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)