● 리눅스 권한 관리
- 리눅스는 파일에 권한이 부여되어 있다. => 파일 권한
- 파일 권한 확인
]# ls -l ┌ 소유그룹(그룹명)
drwxr-xr-x 2 root root 4096 9월 3 04:23 Desktop
------- --- ---
└ 파일 권한 └ 소유자(계정)
- 권한 해석 => rwx 권한이 3번 반복(권한이 없는 경우 -로 표시)
=> rwxrwxrwx
(1) (2) (3)
1) 소유자 계정에게 적용되는 파일 권한
2) 소유그룹에 포함된 계정에게 적용되는 파일 권한
3) 소유자 및 소유그룹의 계정이 아닌 나머지 계정에게 적용되는 파일 권한
- 권한 종류
파일 디렉토리(명령 사용 유무)
r (read) 파일 내용 확인 유무 읽기 관련 명령 사용 유무(ls, cat, more, grep,...)
w(write) 파일 내용 수정 유무 쓰기 관련 명령 사용 유무(mkdir, rm, cp, mv,...)
x(execute) 파일 내용 실행 유무 접근 권한(cd)
※ 파일에는 w 권한을 부여하기 위해 반드시 r 권한을 부여한다.
※ 디렉토리는 r 또는 w 권한을 부여하기 위해 반드시 x 권한을 부여한다.
- 파일 권한 변경 => 관리자 또는 파일 소유자만 변경 가능
형식) ]# chmod 변경옵션 파일명(디렉토리명)
=> 변경 옵션
1) 변경 적용 대상 : u(소유자권한) g(소유그룹권한)
o(나머지권한) a(모든계정권한)
2) 권한 부여 또는 삭제 유무 : +(권한부여) -(권한삭제) =(권한변경)
3) 권한 종류 : r(read) w(write) x(execute) => 동시 적용 가능
ex) ]# mkdir aaa
]# ls -l
...
drwxr-xr-x 2 root root 4096 10월 3 12:07 aaa
]# chmod g+w aaa => aaa 디렉토리의 소유그룹에 w권한 추가
]# ls -l
...
drwxrwxr-x 2 root root 4096 10월 3 12:07 aaa
]# chmod o-rx aaa => aaa 디렉토리의 나머지에 rx권한 삭제
]# ls -l
...
drwxrwx--- 2 root root 4096 10월 3 12:07 aaa
]# chmod g=rx,o=r aaa => aaa 디렉토리의 그룹은 rx권한으로 변경, 나머지는 r권한으로 변경
]# ls -l
...
drwxr-xr-- 2 root root 4096 10월 3 12:07 aaa
ex) lee 및 park 계정 생성
lee계정 : /home/lee]$ cd /home/park => 허가 거부(/home/park 디렉토리의 권한 때문)
※ /home/park => drwx------ 3 park park 4096 10월 3 12:13 park
=> lee 계정이 /home/park 디렉토리에 접근하기 위해 park 계정이 권한 변경
park 계정 : /home/park]$ chmod o+x /home/park => x권한 부여
lee계정 : /home/lee]$ cd /home/park => 가능
/home/park]$ ls -l => 허가 거부(r권한이 없기 때문)
park 계정 : /home/park]$ chmod o+r /home/park => x권한 부여
lee계정 : /home/park]$ ls -l => 가능
※ 일반계정의 홈디렉토리는 다른 계정들에게 w 권한을 부여하지 않는것을 권장
- 권한의 8진수 표기법
=> r : 4 w : 2 x : 1 - : 0
ex) rwxr-xr-x => 755
rw-r----- => 640
rwx------ => 700
r-x--x--x => 511
- 8진수 표기법을 이용한 권한 변경
형식) ]# chmod 변경권한 파일명(디렉토리명)
ex) ]# ls -l
...
drwxr-xr-x 2 root root 4096 10월 3 12:07 aaa
]# chmod 700 aaa
]# ls -l
...
drwx------ 2 root root 4096 10월 3 12:07 aaa
문제) wall 명령을 관리자만 사용할 수 있도록 권한을 변경하세요.
]# whereis wall
wall: /usr/bin/wall /usr/share/man/man1/wall.1.gz
]# ls -l /usr/bin/wall
-r-xr-sr-x 1 root tty 10484 9월 18 2008 /usr/bin/wall
]# chmod 500 /usr/bin/wall
]# ls -l /usr/bin/wall
-r-x------ 1 root tty 10484 9월 18 2008 /usr/bin/wall