相关疑难解决方法(0)

chown(1) POSIX 规范的解释

chown实用程序的 POSIX 规范在其基本原理部分中提到了有关chown user:group语法(以前的chown user.group)(强调我的):

POSIX.1-2008 的这一卷中包含了 4.3 BSD 指定所有者和组的方法,因为:

  • 在某些情况下,使用 chgrp 和 chown(仅更改用户 ID)实用程序无法实现所需的结束条件。(如果当前所有者不是所需组的成员,并且所需所有者不是当前组的成员,则除非所有者和组同时更改,否则 chown() 函数可能会失败。)

我认为user:group语法是一个方便的东西。现在,上述暗示有事情可以做chown user:group,你不能用chgrp group; chown user

现在那个文本对我来说没有意义。在 4.3BSD 中,只有 root 可以更改文件的所有者,因此在任何情况下他都可以做什么没有限制。

SysV 和其他一些系统允许(或曾经允许)文件的所有者将文件的用户和组更改为任何内容,但即使在这些系统中,上面的文本对我来说也没有意义。好的,如果有人做了 a chown someone-else the-filechgrp something-else the-file之后就不能再做,因为他不再是文件的所有者,但是没有什么可以阻止他/她做第chgrp一个(保持文件的所有者)和chown之后的事情,这不是上面的文字正是说。

我不明白什么和所需的所有者不是当前组的成员与问题有什么关系。

那么在什么情况下chown() 函数可能会失败,除非所有者和组同时更改,以及在什么系统上?

posix chown

19
推荐指数
2
解决办法
1955
查看次数

如何防止chgrp清除“setuid位”?

我们有基于 RH 的 Linux 镜像;我必须“应用”一些“特殊档案”,以便将它们升级到我们产品的最新开发版本。

创建档案的人认为在我们的基础映像中,某些权限是错误的;所以我们被告知要跑

sudo chgrp -R nobody /whatever
Run Code Online (Sandbox Code Playgroud)

我们做到了;后来,当我们的应用程序运行时,出现了一些晦涩的问题。

我后来发现:调用chgrp清除/whatever 中二进制文件的 setuid 位信息。

实际问题是:我们的一些二进制文件必须设置 setuid 位才能正常运行。

长话短说:有没有办法在杀死我的 setuid 位的情况下运行“chgrp”命令?

我只是在本地 Ubuntu 上运行了以下命令;导致相同的结果:

mkdir sticky
cd sticky/
touch blub
chmod 4755 blub 
ls -al blub 
Run Code Online (Sandbox Code Playgroud)

--> 显示红色背景的文件名 --> 所以,是的,setuid

chgrp -R myuser .
ls -al blub 
Run Code Online (Sandbox Code Playgroud)

--> 显示没有红色背景的文件名 --> setuid 消失了

linux setuid chgrp

11
推荐指数
3
解决办法
1828
查看次数

标签 统计

chgrp ×1

chown ×1

linux ×1

posix ×1

setuid ×1