리눅스를 사용하기 위해서는
반드시 알고 있어야 되는 개념이 있습니다.
바로 파일(file)과 디렉터리(directory)에 대한 권한과 소유권이에요.
제목 그대로 개념 자체는 쉬워요.ㅋ
그럼에도 불구하고 업무중에 가끔씩 같은 그룹인 거 같은데
왜 내 계정으로 수정을 못하지? 하는 질문에 막히는 경우가 있더라고요. ^^;;
그래서 꼭 알고 넘어가야 될거 같아서 나름대로 간단하게 정리합니다.
ls -l 명령어로 해당 디렉토리 안의 내용을 보면 앞부분에 권한에 대한 정보가 있어요.
권한 소유자 그룹 size 날짜 이름
drwxr--r-- owner1 group1 1234 Mar 28 2020 FOLD1 ------- ① drwx------ owner1 group1 1234 Mar 28 2020 FOLD2 ------- ② drwxr-xr-x owner1 group1 1234 Mar 28 2020 FOLD3 ------- ③ drwxrwxrwx owner1 group1 1234 Mar 28 2020 FOLD4 ------- ④ -rwx------ owner1 gruop1 345 Mar 28 2020 File1 ------- ⑤ -rwxr---w- owner1 gruop1 345 Mar 28 2020 File2 ------- ⑥ -rwxrw-r-x owner1 gruop1 345 Mar 28 2020 File3 ------- ⑦ -rwxrwxrxx owner1 gruop1 345 Mar 28 2020 File3 ------- ⑧ |
위를 보면 파일이나 디렉토리 모두 소유자는 owner1이고 그룹은 group1 이네요.
앞부분의 10자리가(노란색) 바로 권한에 대한 정보입니다.
자세히 보면
첫번째 자리는 파일유형입니다. d 와 - 가 보이 시조.
■ 파일유형 종류
d : 디렉터리
- : 파일
l : 링크 파일
b : 블록 파일
c : 캐릭터 디바이스
p : named pipe
s : socket
두번째 자리부터 열번째 자리까지 총 9자리가 권한입니다.
3자리씩 나눠서
첫번째 3자리는 소유자 권한
두번째 3자리는 그룹 권한
세번째 3자리는 기타 사용자 권한입니다.
권한은 읽기 [r] , 쓰기 [w] , 실행 [x] 이렇게 3가지입니다.
■ 권한 표기 방법
□ 비트표기(숫자모드)
읽기,쓰기,실행 순서대로 3bit를 부여해서
권한 위치에 해당되는 비트값을 10진수로 연산해서 표기
권한이 있으면 1 , 권한이 없으면 0
① 010
첫번째 자리 읽기(r) 권한 없음 : 10진수 값 → 0
두번째 자리 쓰기(w) 권한 있음 : 10진수 값 → 2
세번째 자리 실행(x) 권한 없음 : 10진수 값 → 0
10진수 값이 모두 합치면 2
② 111
첫번째 자리 읽기(r) 권한 있음 : 10진수 값 → 4
두번째 자리 쓰기(w) 권한 있음 : 10진수 값 → 2
세번째 자리 실행(x) 권한 있음 : 10진수 값 → 1
10진수 값이 모두 합치면 7
③ 110
첫번째 자리 읽기(r) 권한 있음 : 10진수 값 → 4
두번째 자리 쓰기(w) 권한 있음 : 10진수 값 → 2
세번째 자리 실행(x) 권한 없음 : 10진수 값 → 0
10진수 값이 모두 합치면 6
첫번째 자리 값 → 4
두번째 자리 값 → 2
세번째 자리 값 → 1
◐ 예제
drwxr-xr-x owner1 group1 1234 Mar 28 2020 FOLD4
=> 첫번째 자리 d는 파일유형 디렉터리
=>두번째 자리부터 9자리가 권한입니다.
rwxr-xr-x
3자리씩 소유자,그룹,기타사용자 권한이 지정된다.
소유자 rwx → 111 → 7
그룹 r-x → 101 → 5
기타 사용자 r-x → 101 → 5
권한 표기 : 755
◐ 예제
-rwxr--r-- owner1 gruop1 345 Mar 28 2020 File1
=> 첫번째 자리 -는 파일유형 일반파일
=>두번째 자리부터 9자리가 권한입니다.
rwxr--r--
3자리씩 소유자,그룹,기타사용자 권한이 지정된다.
소유자 rwx → 111 → 7
그룹 r-- → 100 → 4
기타 사용자 r-- → 100 → 4
권한 표기 : 744
□ 권한 사용 , 부여 방법
보통 파일이나 디렉터리에 권한을 부여할때 비트표기로 합니다.
문자표기와 같이 볼게요.
소유자 → u
그룹 → g
기타사용자 → o
권한부여 → +
권한삭제 → -
(샘플) -rwx------ owner1 gruop1 345 Mar 28 2020 File1
◐ 그룹에서 읽기 권한 부여
① 비트표기(숫자모드)
chmod 740 File1
② 문자표기(문자모드)
chmod g+r File1
-rwxr----- owner1 gruop1 345 Mar 28 2020 File1
◐ 소유자의 쓰기 권한 삭제
① 비트표기(숫자모드)
chmod 500 File1
② 문자표기(문자모드)
chmod u-w File1
-r-x------ owner1 gruop1 345 Mar 28 2020 File1
◐ 그룹 실행 권한 부여와 기타사용자에게 읽기, 쓰기 부여
① 비트표기(숫자모드)
chmod 716 File1
② 문자표기(문자모드)
chmod g+x,u+rw File1
-rwx--xrw- owner1 gruop1 345 Mar 28 2020 File1
비트표기(숫자모드)는 모든 권한을 숫자로 표시해야 되고
문자표기(문자모드)는 작업 권한만 표시하면 됩니다.
■ 파일에 대한 권한
읽기 [r] : 파일 안의 내용을 볼 수 있는 거
쓰기 [w] : 파일 안의 내용을 수정하고 파일을 삭제할 수 있는 거
실행 [x] : 파일을 실행시켜 파일 안에 명령어를 수행시킬 수 있는 거
- : 권한이 없다는 표시
drwxrwxrwx owner1 group1 1234 Mar 28 2020 FOLD4 ------- ④
-rwx------ owner1 gruop1 345 Mar 28 2020 File1 ------- ⑤
④는 디렉터리이며 9자리 모두 권한이 부여되어 있습니다.
⑤는 파일이며 소유자한테만 권한이 부여되어 있고 그룹과 기타 사용자들은
권한이 전혀 부여되어 있지 않습니다.
그리고 파일과 디렉터리에 대한 권한의 의미가 다릅니다. 기억해 두세요.!!
■ 디렉토리에 대한 권한
읽기 [r] : ls 명령수행시 디렉터리가 화면에 보입니다.
쓰기 [w] : 디렉터리 안에서 파일을 신규로 생성할 수 있습니다.
실행 [x] : 디렉터리 안으로 들어갈 수 있습니다.(접근권한)
- : 권한이 없다는 표시
알아야 될 위치와 값에 대한 정보는 여기까지입니다.
권한과 소유권에 대한 의미를 자세히 설명하겠습니다.
-rwxr---w- owner1 gruop1 345 Mar 28 2020 File2 ------- ⑥
-rwxrw-r-x owner1 gruop1 345 Mar 28 2020 File3 ------- ⑦
나의 계정이 owner2이고 그룹이 group1 라면
▣ ⑥ 파일을 삭제할 수 있을까요?
=> 삭제할 수 없습니다. 삭제 권한은 w입니다.
⑥ 파일 소유자가 owner1이며 그룹은 group1 입니다.
내 계정이 owner2이므로 파일 소유자(owner1)가 아니라 pass 하고
내 그룹이 group1이고 파일 그룹도 group1이라 같으므로 그룹 권한이 적용돼요.
근데 그룹 권한이 r-- 로 읽기만 가능하기 때문에 삭제 불가능합니다.
그래서 결론이 불가능입니다.
만약에 계정이 owner3이고 그룹이 group2인 사용자는 삭제할 수 있을까요?
파일 소유자(owner1)와 그룹(group1)이 다르므로 기타 사용자 그룹이 적용돼요.
-w- 이네요. w 가 있네요. ㅋ 그래서 이번에는 삭제 가능합니다.
▣ ⑦ 파일도 삭제할 수 있을까요?
=> 삭제 가능합니다. 삭제 권한은 w입니다.
파일 그룹(group1)이 일치하므로 그룹 권한이 적용되겠죠.
rw- 이므로 w 권한이 있네요. 삭제돼요.ㅋ
만약에 계정이 owner3 이고 그룹이 group2인 사용자는 삭제할 수 있을까요?
파일 소유자(owner1)와 그룹(group1)이 다르므로 기타 사용자 그룹이 적용돼요.
r-x 이네요. 아쉽게도 다른 권한은 있는데 w는 없네요. 불가능합니다.
drwxr--r-- owner1 group1 1234 Mar 28 2020 FOLD1 ------- ①
drwxr-xr-x owner1 group1 1234 Mar 28 2020 FOLD3 ------- ③
나의 계정이 owner2 이고 그룹이 group1 라면
▣ ① 디렉터리에 들어갈 수 있나요? 들어간다면 파일을 만들수 있나요?
=> 들어갈수 없습니다(접근 안됨). 못 들어가니 당연히 파일 만들 수도 없습니다.
디렉터리 접근권한은 x이고 파일 생성 권한은 w입니다.
① 디렉터리의 소유자가 owner1이고 그룹이 group1 이네요.
내 계정과 디렉토리 소유자가 다르니 pass 하고요.
그룹은 group1으로 동일하므로 그룹 권한이 적용됩니다.
r-- 헐..근데 접근권한 x 가 없네요. 그래서 들어갈 수 없습니다.
▣ ③ 디렉터리에 들어갈 수 있나요? 들어간다면 파일을 만들수 있나요?
=> 예. 들어갈수 있어요. 하지만 파일은 못 만듭니다. ^^;
③ 디렉터리 그룹(group1)이 일치하므로 그룹 권한이 적용됩니다.
r-x x가 있네요. 들어갑니다. ㅋ 헐..근데 w 가 없네요.
그래서 들어가지만 신규 파일은 생성 못합니다.
위 두 가지만 이해하면 권한, 소유권에 대해서 더 이상 공부하실 거 없을 거예요. ^^;;
여기까지입니다.
나름 쉽게 설명한다고 길게 쓴 거 같습니다. ^^;;
글쓰기에 미숙해서 편하게 읽을 수 있는 글은 아직 안되는 거 같습니다.
끝까지 읽어 주셔서 너무 감사드려요.
피곤해서 그런지 눈이 따갑네요.. 바로 누워서 잡니다.
'IT > LINUX' 카테고리의 다른 글
리눅스 계정 암호 만료일 확인 (4) | 2020.08.27 |
---|---|
crontab 쉘스크립트 실행 안되는 현상 (4) | 2020.08.23 |
리눅스 방화벽 오픈 확인 명령어 Telnet (6) | 2020.08.22 |
리눅스 파일 생성 날짜 확인 (953) | 2020.08.19 |
리눅스 데이타,파일을 16진수로 변환하는 xxd 명령어 (0) | 2020.08.17 |
댓글