![폴더에 suid 권한이 있다는 것은 무엇을 의미합니까? [복사]](https://linux55.com/image/159023/%ED%8F%B4%EB%8D%94%EC%97%90%20suid%20%EA%B6%8C%ED%95%9C%EC%9D%B4%20%EC%9E%88%EB%8B%A4%EB%8A%94%20%EA%B2%83%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9D%84%20%EC%9D%98%EB%AF%B8%ED%95%A9%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
파일에 대해 suid 권한을 갖는다는 것이 무엇을 의미하는지 알고 있습니다. 이는 다른 사용자가 파일에 대한 실행 권한을 갖고 있으면 해당 파일의 소유자로서 실행된다는 의미입니다. 그러나 폴더에 suid 권한이 있다는 것은 무엇을 의미합니까? 몇 가지 테스트를 해봤는데 폴더에는 특별한 것이 없는 것 같습니다. 누구든지 이것을 설명하는 데 도움을 줄 수 있습니까? 감사해요.
저는 오라클 리눅스 7.6을 사용하고 있습니다.
root:[~]# cat /etc/*release*
Oracle Linux Server release 7.6
NAME="Oracle Linux Server"
VERSION="7.6"
ID="ol"
VARIANT="Server"
VARIANT_ID="server"
VERSION_ID="7.6"
PRETTY_NAME="Oracle Linux Server 7.6"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:oracle:linux:7:6:server"
HOME_URL="https://linux.oracle.com/"
BUG_REPORT_URL="https://bugzilla.oracle.com/"
ORACLE_BUGZILLA_PRODUCT="Oracle Linux 7"
ORACLE_BUGZILLA_PRODUCT_VERSION=7.6
ORACLE_SUPPORT_PRODUCT="Oracle Linux"
ORACLE_SUPPORT_PRODUCT_VERSION=7.6
Red Hat Enterprise Linux Server release 7.6 (Maipo)
Oracle Linux Server release 7.6
cpe:/o:oracle:linux:7:6:server
root:[~]#
다음은 새로 설치된 서버에서의 테스트입니다.
root:[~]# pwd
/root
root:[~]# ls -lad /root
dr-xr-x---. 9 root root 4096 Aug 16 22:07 /root
root:[~]# mkdir test
root:[~]# ls -lad test
drwxr-xr-x. 2 root root 4096 Aug 16 22:07 test
root:[~]#
root:[~]# useradd a
root:[~]# passwd a
Changing password for user a.
New password:
BAD PASSWORD: The password is a palindrome
Retype new password:
passwd: all authentication tokens updated successfully.
root:[~]# chmod u+s test
root:[~]#
root:[~]# su - a
[a@localhost ~]$ cd /root/test
-bash: cd: /root/test: Permission denied
[a@localhost ~]$ cd /root
-bash: cd: /root: Permission denied
[a@localhost ~]$ logout
root:[~]#
root:[~]# ls -lad /root
dr-xr-x---. 10 root root 4096 Aug 16 22:07 /root
root:[~]# chmod o+x /root
root:[~]#
root:[~]# su - a
Last login: Fri Aug 16 22:08:54 CST 2019 on pts/0
[a@localhost ~]$ cd /root/test
[a@localhost test]$
[a@localhost test]$ pwd
/root/test
[a@localhost test]$ ls -la .
total 8
drwsr-xr-x. 2 root root 4096 Aug 16 22:07 .
dr-xr-x--x. 10 root root 4096 Aug 16 22:07 ..
[a@localhost test]$ touch file1
touch: cannot touch ‘file1’: Permission denied
[a@localhost test]$ logout
root:[~]#
root:[~]# chmod o+w test/
root:[~]#
root:[~]# su - a
Last login: Fri Aug 16 22:09:31 CST 2019 on pts/0
[a@localhost ~]$
[a@localhost ~]$ cd /root/test
[a@localhost test]$ touch file1
[a@localhost test]$ ls -la
total 8
drwsr-xrwx. 2 root root 4096 Aug 16 22:11 .
dr-xr-x--x. 10 root root 4096 Aug 16 22:07 ..
-rw-rw-r--. 1 a a 0 Aug 16 22:11 file1
[a@localhost test]$ mkdir folder1
[a@localhost test]$ ls -la
total 12
drwsr-xrwx. 3 root root 4096 Aug 16 22:11 .
dr-xr-x--x. 10 root root 4096 Aug 16 22:07 ..
-rw-rw-r--. 1 a a 0 Aug 16 22:11 file1
drwxrwxr-x. 2 a a 4096 Aug 16 22:11 folder1
[a@localhost test]$
보시다시피 사용자가 a
만든 파일과 폴더는 /root/test
소유자와 그룹을 상속하지 않는 것 같습니다. 소유자와 그룹이 a
아닙니다 root
. 내 테스트에 문제가 있나요? 저는 리눅스를 처음 접했습니다.
답변1
GNU 매뉴얼에 따르면,이는 이 디렉터리(하위 폴더 포함)에 생성된 파일이 해당 그룹과 사용자를 상속한다는 의미입니다.
일부 시스템에서는 디렉토리의 set-user-ID 비트가 새 서브디렉토리의 set-user-ID 비트와 마찬가지로 새 서브파일의 소유권에 비슷한 영향을 미칩니다. 이러한 메커니즘을 사용하면 새 파일을 공유하기 위해 chmod 또는 chown을 사용해야 하는 필요성이 줄어들어 사용자가 파일을 더 쉽게 공유할 수 있습니다.
답변2
이는 Oracle Linux 또는 Linux 시스템에는 의미가 없습니다.
그러나 그것은가능한FreeBSD에서는 의미가 있습니다. 에서 인용chmod(2)
맨페이지:
ISUID
모드(UID 설정)가 디렉토리에 설정되어 있고MNT_SUIDDIR
이 옵션이 파일 시스템 마운트에 사용되는 경우이 디렉터리에 생성된 모든 새 파일 및 하위 디렉터리의 소유자는 디렉터리와 동일한 소유자로 설정됩니다.. 이 기능이 활성화되면 새 디렉터리는 상위 디렉터리에서 이 비트를 상속합니다. 실행 비트는 파일에서 제거되며 루트에 제공되지 않습니다. 이 동작은 사용자가 파일에 쓸 수 있도록 허용하기 위한 요구 사항을 변경하지 않으며 파일이 생성된 후 파일의 최종 소유자만 변경합니다. 그룹 상속은 영향을 받지 않습니다.이 기능은 ftp, SAMBA 또는 netatalk를 통해 PC 사용자에게 서비스를 제공하는 파일 서버와 함께 사용하도록 설계되었습니다. 이는 쉘 사용자에게 보안 허점을 제공하므로 쉘 시스템, 특히 홈 디렉토리에서는 사용하면 안 됩니다. 이 옵션이
SUIDDIR
작동하려면 커널에 옵션이 필요합니다. 이 옵션은 UFS 파일 시스템에만 지원됩니다. suid-dir 마운트 옵션에 대한 자세한 내용은 mount(8)을 참조하십시오.
이것은아니요NetBSD 또는 OpenBSD와 같은 다른 *BSD 시스템에서 지원됩니다.