任何类Unix系统是否都意味着目录上的SUID位?

时间:2009-03-09 20:23:47

标签: linux macos unix freebsd setuid

正如标题所说,任何类Unix系统都会将意义归咎于目录上的SUID位,如果是,那是什么意思?

SVTX(保存的文本或粘滞)位有意义 - 除非您可以写入该文件,否则不得从此目录中删除文件。例如,它用在/ tmp上。

SGID(设置GID)位有一个含义 - 在此目录中创建的文件应属于拥有该目录的组(尽管稍后可通过显式调用chown(2)来更改该分配)。

SUID位怎么样?

4 个答案:

答案 0 :(得分:6)

作为Node的回答的后续内容,我将在FreeBSD man页面中发布以下mount(8):

             suiddir
                 A directory on the mounted file system will respond to
                 the SUID bit being set, by setting the owner of any new
                 files to be the same as the owner of the directory.  New
                 directories will inherit the bit from their parents.
                 Execute bits are removed from the file, and it will not
                 be given to root.

                 This feature is designed for use on fileservers serving
                 PC users via ftp, SAMBA, or netatalk.  It provides secu-
                 rity holes for shell users and as such should not be used
                 on shell machines, especially on home directories.  This
                 option requires the SUIDDIR option in the kernel to work.
                 Only UFS file systems support this option.  See chmod(2)
                 for more information.

chmod(2)手册页部分引用了suid位:

           4000    (the setuid bit).  Executable files with this bit set will
               run with effective uid set to the uid of the file owner.
               Directories with this bit set will force all files and sub-
               directories created in them to be owned by the directory
               owner and not by the uid of the creating process, if the
               underlying file system supports this feature: see chmod(2)
               and the suiddir option to mount(8).

请注意,这是一个安全风险,并且知道在启用它时你在做什么,在FreeBSD中,但我相信Linux也需要启用特殊的mount标志,并且会改变该目录中文件的行为方式。

答案 1 :(得分:4)

here复制:

  

在大多数系统上,如果设置了目录的set-group-ID位,则新创建的子文件将继承与该目录相同的组,并且新创建的子目录将继承父目录的set-group-ID位。在少数系统上,目录的set-user-ID位对新子文件的所有权和新子目录的set-user-ID位具有类似的影响。通过减少使用chmod或chown共享新文件的需要,这些机制可以让用户更轻松地共享文件。

     

这些便利机制依赖于目录的set-user-ID和set-group-ID位。如果像chmod和mkdir这样的命令经常清除目录上的这些位,那么机制将不太方便,并且共享文件会更加困难。因此,像chmod这样的命令不会影响目录的set-user-ID或set-group-ID位,除非用户在符号模式下特别提及它们,或者将它们设置为数字模式。

答案 2 :(得分:1)

在目录上设置时,无论是谁创建了该文件,在此目录中创建的所有文件和目录都将具有与SUID目录本身相同的所有者。这是一个不经常使用的功能,但在某些情况下它可能很有用。 (source

更新:我刚试过Linux 2.6.25.5-1.1-default#1 SMP x86_64 GNU / Linux openSUSE 11.0(X86-64)。

mkdir tmp
chmod 4777 tmp
su othergroup
touch testfile

没有效果。

答案 3 :(得分:0)

SUID位表明,在执行文件时(可执行时),进程将以所述文件的所有者的身份运行,而不是执行该文件的用户。

在某些情况下,实用程序是“suid root”以允许权限提升。

编辑:误读原始问题(指的是目录而不是文件) - 为教育目的保留答案不变;-)