Linux 文件权限中的 SetUID、SetGID 和粘性位
Linux 环境中的文件权限为所有者或管理员提供执行程序或应用程序的权限。使用带有读、写和执行符号的 chmod 和 chown 命令为文件或目录设置权限。为可执行文件或目录发起setuid、setgid、sticky位等特殊权限;用户在设置这些特殊权限时需要格外注意,因为它们可能会给所有其他用户带来安全风险。目录中存在的每个文件都有文件所有者指定的 userId(称为 uid)和 groupId(称为 gid),为了执行进程,将根据授权用户检查 uid 和 gid,以避免安全风险。为了更好地理解设置 uid、gid 和粘性位(特殊文件权限),应该对基本 Linux 文件权限有一定程度的了解。
设置UID
设置 SetUID 后,程序将以文件所有者设置的权限执行。它不会与当前正在处理它的用户一起执行。应用程序所有者或使用 root 访问权限可以使用 chmod 命令更改此 SetUID。考虑一个示例,当用户执行启用了 SetUID 的文件时,将使用预定义的 root 权限而不是用户权限来执行该文件。
我们可以使用 ls 命令知道 setuid 是否启用
上面的命令会返回
在上面的文件权限中,请注意设置了小写字符“s”,它定义了为密码命令设置的 SetUID 位。该可执行文件具有由文件所有者设置的 UID。
文件的所有者可以使用下面的命令来设置所需文件的uid
要禁用已设置的 uid,请对可执行文件使用以下命令
ls -l /用户/bin/密码
-rwsr-xr-x root root 34487 5月15日20:22 /user/bin/passwd
chmod u+s 文件名
chmod u-s 文件名
设置GID
SetGID 权限属于位于目录中的文件组。对所有可执行文件及其目录启用此权限。当为目录启用 SetGID 时,其中存在的文件属于该目录所在的组,而不属于正在执行该目录的用户。根据向用户提供的对组进行写入和执行的权限,他们可以在目录中创建文件并访问它们。
指定的 file_name 已设置 gid,可以在命令的组权限部分中看到
使用以下命令设置所需文件的 gid
要禁用已设置的 uid,请对可执行文件使用以下命令。
-rwxrwsr-x root root 2433 5 月 15 日 20:22 file_name
chmod g+s 文件名
chmod g-s 文件名
SetUID 和 SetGID 等权限具有更多的安全威胁,并且具有由所有者设置的这些权限的可执行文件可以在获得根目录访问权限时被攻击者追踪。管理员或组的所有者必须经常进行监视,以检测文件权限中的任何可疑活动更改。
粘性位
为目录中的文件提供粘滞位。当为目录设置时,只有该文件或目录的所有者可以删除或删除该文件,其他没有权限的用户无法删除该目录内的文件。这可以防止没有任何文件权限的公共用户意外删除文件。 tmp 目录最常用于粘滞位,设置粘滞位后用户无法删除其他用户的 tmp 文件。
使用ls命令列出给定目录或文件的权限
ls 命令以及给定的目录名称将产生以下结果。
此处设置小写“t”,这意味着为目录中的所有文件启用粘性位,替换通常的执行权限“x”。
使用以下命令设置所需目录的粘滞位。
要禁用已设置的粘滞位,请对相应目录使用以下命令。
ls -ld/目录名
drwxrwxrwt。 10根根539 5月17日15:09/directory_name/
chmod +t 目录_名称
chmod -t 目录_名称
结论
Linux 特殊文件权限是为 root 用户或拥有所有权限的所有者启用的,他们可以定义授予哪些操作(如读、写和执行)访问权限的权限。当使用 uid 和 gid 等特殊权限时,必须监视文件或目录,因为它们可能会被任何非法用户黑客攻击,而不是访问属于 root 或 bin 的文件。