ファイルがsuid権限を持つことの意味を知っています。これは、他のユーザーが実行権限を持っている場合、ファイルの所有者として実行することを意味します。しかし、フォルダーにsuid権限がある場合、それは何を意味しますか?私はいくつかのテストを行いましたが、フォルダーにとって特別なことは何もないようです。誰かが少し平易にするのを手伝ってもらえますか?ありがとう。
Oracle Linux7.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
ではありません。テストに問題はありますか? Linuxは初めてです。
GNU manual、 によると、ディレクトリに作成されたファイル(サブフォルダを含む)がそのグループとユーザーを継承することを意味します:
一部のシステムでは、ディレクトリのset-user-IDビットが、新しいサブファイルの所有権と新しいサブディレクトリのset-user-IDビットに同様の影響を及ぼします。これらのメカニズムにより、chmodまたはchownを使用して新しいファイルを共有する必要性が少なくなるため、ユーザーはファイルをより簡単に共有できます。