Linux 권한 관리 (3) UID 권한 설정, GID 권한 설정, Sticky BIT 권한, chattr 권한 설정
1. UID 권한 설정 (SUID 권한)
1. Set UID 권한 의 제한 과 기능
x
권한 을 가진다 chmod 4755
chmod +x,u+s
TIPS
755
644
하 는데, 이 때 는 특수 권한 을 생략 한 것 이다.4
를 추가 하면 SUID 권한 을 나 타 냅 니 다.rws
로 변 합 니 다.x
권한 을 가 져 야 합 니 다. 그렇지 않 으 면 파일 소유자 가 대응 하 는 권한 이 rwS
로 변 합 니 다. 이것 은 잘못된 권한 입 니 다.실례
[root/tmp/suid]# touch 4755.sh
[root/tmp/suid]# touch u+s.sh
[root/tmp/suid]# ll
4.0K
-rw-r--r-- 1 root root 0 6 8 09:22 4755.sh
-rw-r--r-- 1 root root 0 6 8 09:22 u+s.sh
[root/tmp/suid]# chmod 4755 4755.sh
[root/tmp/suid]# chmod +x,u+s u+s.sh
[root/tmp/suid]# ll
4.0K
-rwsr-xr-x 1 root root 0 6 8 09:22 4755.sh*
-rwsr-xr-x 1 root root 0 6 8 09:22 u+s.sh*
3. Set UID 권한 을 취소 하 는 방법
chmod 0755
chmod u-s
실례
[root/tmp/suid]# ll
4.0K
-rwsr-xr-x 1 root root 0 6 8 09:22 4755.sh*
-rwsr-xr-x 1 root root 0 6 8 09:22 u+s.sh*
[root/tmp/suid]# chmod 0755 4755.sh
[root/tmp/suid]# chmod u-s u+s.sh
[root/tmp/suid]# ll
4.0K
-rwxr-xr-x 1 root root 0 6 8 09:22 4755.sh*
-rwxr-xr-x 1 root root 0 6 8 09:22 u+s.sh*
4. SUID 권한 을 적용 하 는 시스템 명령
passwd 명령
/etc/shadow
파일 을 수정 하 였 으 며, 이 파일 의 권한 은 000
입 니 다.이론 적 으로 루트 사용자 만 이 파일 을 수정 할 수 있 는 권한 이 있어 야 합 니 다.[root/tmp/suid]# ll /etc/shadow
---------- 1 root root 829 6 8 02:21 /etc/shadow
passwd
명령 을 실행 할 때 신분 이 자동 으로 루트 로 전환 되 기 때문에 일반 사용 자 는 자신의 비밀 번 호 를 수정 할 수 있 습 니 다.[root/tmp/suid]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 28K 6 10 2014 /usr/bin/passwd*
다른 일반적인 SUID 권한 을 가 진 명령 (파일)
find / -perm -4000
/usr/bin/mount
/usr/bin/su
/usr/bin/chsh
/usr/bin/chage
/usr/bin/gpasswd
/usr/bin/newgrp
/usr/bin/chfn
/usr/bin/umount
/usr/bin/pkexec
/usr/bin/crontab
/usr/bin/sudo
/usr/bin/passwd
/usr/sbin/pam_timestamp_check
/usr/sbin/unix_chkpwd
/usr/sbin/usernetctl
/usr/sbin/mount.nfs
5. 위험한 Set UID
/
, /usr
등 이다.SUID 나 SGID 권한 이 있 는 모든 파일 보기
find / -perm -4000 -o -perm -2000
SUID, SGID 권한 의 스 크 립 트 검사
#!/bin/bash
find / -perm -4000 -o -perm -2000 > /tmp/setuid.check
for i in $(cat /tmp/setuid.check)
do
grep $i /home/suid.log> /dev/null
if [ "$?" != "0" ]
then
echo "$i isn't in listfile!">>/home/suid_log_$(date +%F)
fi
done
rm -rf /tmp/setuid.check
2. GID 권한 설정 (SGID 권한)
1. Set GID 파일 에 대한 역할
x
을 가 져 야 한다 r
와 x
권한 을 가 져 야 이 디 렉 터 리 에 들 어 갈 수 있 습 니 다.w
권한 을 가지 고 있다 면 새 파일 의 기본 그룹 은 이 디 렉 터 리 의 그룹 입 니 다.3. Set GID 설정
chmod 2755
chmod +x,g+s
TIPS
2
를 추가 하면 SGID 권한 을 대표 합 니 다.rws
로 변 합 니 다.x
권한 이 소속 그룹 에 있어 야 합 니 다. 그렇지 않 으 면 파일 소속 그룹 에 대응 하 는 권한 이 rwS
로 바 뀌 고 이 는 무효 권한 입 니 다.실례
x
실행 권한 이 없 으 면 SGID 권한 을 직접 설정 하면 그룹 권한 이 r-S
으로 변 경 됩 니 다. 이 권한 은 사용 할 수 없습니다 [root/tmp/sgid]# touch file
[root/tmp/sgid]# chmod g+s file
[root/tmp/sgid]# ll
0
-rw-r-Sr-- 1 root root 0 6 8 10:44 file
[root/tmp/sgid]# chmod +x file
[root/tmp/sgid]# ll
0
-rwxr-sr-x 1 root root 0 6 8 10:44 file*
2777
로 변경 합 니 다 (일반 사용자 가 이 디 렉 터 리 에서 파일 을 만 들 수 있 도록) [root/tmp/sgid]# chmod 2777 dir/
[root/tmp/sgid]# ll
0
drwxrwsrwx 2 root root 6 6 8 10:48 dir/
[vagrant/tmp/sgid/dir]$ touch file
[vagrant/tmp/sgid/dir]$ ll
0
-rw-rw-r-- 1 vagrant root 0 6 8 10:52 file
4. GID 설정 취소
chmod 0755 ( )
chmod g-s
실례
chmod 0755
파일 에 유효 하지만 폴 더 에 유효 하지 않 은 것 같 습 니 다 [root/tmp/sgid]# ll
0
drwxrwsrwx 2 root root 6 6 8 10:48 dir/
-rwxr-sr-x 1 root root 0 6 8 10:44 file*
[root/tmp/sgid]# chmod 0755 dir/
[root/tmp/sgid]# chmod 0755 file
[root/tmp/sgid]# ll
0
drwxr-sr-x 2 root root 17 6 8 10:52 dir/
-rwxr-xr-x 1 root root 0 6 8 10:44 file*
chmod g-s
파일 과 폴 더 에 모두 유효 합 니 다 [root/tmp/sgid]# ll
0
drwxrwsrwx 2 root root 6 6 8 10:57 dir/
-rwxr-sr-x 1 root root 0 6 8 10:44 file*
[root/tmp/sgid]# chmod g-s dir/
[root/tmp/sgid]# chmod g-s file
[root/tmp/sgid]# ll
0
drwxrwxrwx 2 root root 6 6 8 10:57 dir/
-rwxr-xr-x 1 root root 0 6 8 10:44 file*
5. SUID 권한 을 적용 하 는 시스템 명령
locate 명령
/var/lib/mlocate/mlocate.db
파일 을 조회 하고 이 파일 의 권한 은 640
입 니 다.이론 적 으로 일반 사용 자 는 이 파일 을 찾 아 볼 권한 이 없다.[root/tmp/sgid]# ll /var/lib/mlocate/mlocate.db
-rw-r----- 1 root slocate 2.4M 6 8 03:20 /var/lib/mlocate/mlocate.db
locate
명령 을 실행 할 때 그룹 신분 은 자동 으로 slocate 로 전환 되 며, slocate 그룹 은 /var/lib/mlocate/mlocate.db
파일 을 읽 을 수 있 는 권한 이 있 기 때문에 일반 사용 자 는 locate 명령 으로 파일 을 검색 할 수 있 습 니 다.[vagrant/tmp/sgid/dir]$ ll /usr/bin/locate
-rwx--s--x 1 root slocate 40K 4 11 03:46 /usr/bin/locate*
SGID 권한 을 가 진 다른 일반적인 명령 (파일)
find / -perm -2000
/usr/bin/wall
/usr/bin/lockfile
/usr/bin/write
/usr/bin/ssh-agent
/usr/bin/locate
/usr/sbin/netreport
/usr/sbin/sendmail.sendmail
/usr/libexec/utempter/utempter
/usr/libexec/openssh/ssh-keysign
3. Sticky BIT (SBIT 권한)
1. SBIT 접착 위치 작용
SBIT 가 있 는 디 렉 터 리 를 손 으로 만 드 는 것 을 권장 하지 않 습 니 다.
2. SBIT 설정
chmod 1755
chmod o+t
TIPS
1
를 추가 하면 SBIT 권한 을 나타 낸다.rwt
로 변 합 니 다.실례
dir_1755
과 dir_o+t
두 디 렉 터 리 에 각각 SBIT 권한 부여 [root/tmp/sbit]# mkdir dir_1755
[root/tmp/sbit]# mkdir dir_o+t
[root/tmp/sbit]#
[root/tmp/sbit]#
[root/tmp/sbit]# chmod 1755 dir_1755/
[root/tmp/sbit]# chmod o+t dir_o+t/
[root/tmp/sbit]# ll
0
drwxr-xr-t 2 root root 6 6 8 11:34 dir_1755/
drwxr-xr-t 2 root root 6 6 8 11:34 dir_o+t/
3. SBIT 취소
chmod 0755
chmod o-t
실례
[root/tmp/sbit]# ll
0
drwxr-xr-t 2 root root 6 6 8 11:34 dir_1755/
drwxr-xr-t 2 root root 6 6 8 11:34 dir_o+t/
[root/tmp/sbit]# chmod 0755 dir_1755/
[root/tmp/sbit]# chmod o-t dir_o+t/
[root/tmp/sbit]# ll
0
drwxr-xr-x 2 root root 6 6 8 11:34 dir_1755/
drwxr-xr-x 2 root root 6 6 8 11:34 dir_o+t/
4. SBIT 권한 을 적용 한 시스템 디 렉 터 리
/tmp 디 렉 터 리
/tmp
디 렉 터 리 는 실제 777 권한 을 가지 고 있 으 며, 정상 적 인 경우 에는 모든 사용자 가 디 렉 터 리 에 있 는 파일 [root/tmp/sbit]# ll -d /tmp
drwxrwxrwt. 12 root root 4.0K 6 8 11:33 /tmp/
[vagrant/tmp]$ ll /tmp/test.md
-rw-r--r-- 1 root root 215 5 31 04:24 /tmp/test.md
[vagrant/tmp]$ rm test.md
rm: "test.md"?yes
rm: "test.md":
4. chattr 권한
1. chattr 명령
chattr [+-=] [ ] [ ]
/tmp
[+-=]
: 권한 증가+
: 삭제 권한-
: 권한 설정옵션
=
: (insert) 삽입i
: (append) 추가a
형식 으로 파일 에 데 이 터 를 추가 할 수 있 습 니 다.lsattr [ ] [ ]
옵션
echo ' ' > file
: 모든 파일 과 디 렉 터 리 표시-a
: 대상 이 디 렉 터 리 라면 하위 파일 의 속성 이 아 닌 디 렉 터 리 자체 의 속성 만 표시 합 니 다.3. 실례
파일 적용
-d
옵션 , 。
[root/tmp/chattr]$ touch file_i
[root/tmp/chattr]$ date > file_i
[root/tmp/chattr]$ cat file_i
2018 06 08 12:04:57 UTC
i
[root/tmp/chattr]# chattr +i file_i
[root/tmp/chattr]# lsattr file_i
----i----------- file_i
[root/tmp/chattr]# rm file_i
rm: "file_i":
[root/tmp/chattr]# mv file_i file
mv: "file_i" "file":
[root/tmp/chattr]# date >> file_i
bash: file_i:
[root/tmp/chattr]# date > file_i
bash: file_i:
디 렉 터 리 적용
chattr +i file_i
옵션 ,
[root/tmp/chattr]# mkdir dir_i
[root/tmp/chattr]# touch dir_i/file
[root/tmp/chattr]# ll dir_i/
0
-rw-r--r-- 1 root root 0 6 8 12:13 file
i
[root/tmp/chattr]# chattr +i dir_i/
[root/tmp/chattr]# lsattr -d dir_i/
----i----------- dir_i/
[root/tmp/chattr]# touch dir_i/file2
touch: "dir_i/file2":
[root/tmp/chattr]# rm dir_i/file
rm: "dir_i/file":
[root/tmp/chattr]# date > dir_i/file
[root/tmp/chattr]# cat dir_i/file
2018 06 08 12:17:16 UTC
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Ubuntu 22.04에 캐디 설치 - HostnExtra이 기사에서는 Ubuntu 22.04에 Caddy를 설치하는 방법을 설명합니다. 이 문서는 설치 프로세스를 안내하고 웹 사이트를 호스팅합니다. Caddy 웹 서버는 Go로 작성된 오픈 소스 웹 서버입니다. Ubunt...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.