我们有基于 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 消失了