为了更改文件的所有者和组,我们可以这样做:
chown trump file
chgrp trump file
Run Code Online (Sandbox Code Playgroud)
但是我可以用一种方法或一种命令来执行这两个命令吗?
我们有基于 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 消失了
我刚刚将我的主目录中的所有文件/子目录复制到另一个用户的主目录中。
然后我对他的主目录进行了递归chown
,以便他成为所有文件/子目录的所有者。
我需要做的最后一件事是chgrp
对他的主目录进行递归,以便他的用户名将是他所有文件/子目录的组,而不是我的用户名。
问题是有几个子目录的组是“docker”。在这些子目录中,有一些文件/目录的组是我的用户名,还有一些文件/目录的组是“docker”。
我如何chgrp
在他的主目录上递归运行,以便将我的用户名所在组的每个文件/子目录更改为他的用户名,但组为“docker”的每个文件/子目录仍保留“docker”?
我有一个名为homeperms
Ubuntu 系统的小组,有几个用户:
$ cat /etc/group | grep "homeperms"
homeperms:x:1004:jorik,tim.wijma,vanveenjorik,jorik_c
Run Code Online (Sandbox Code Playgroud)
我已经做到了$ sudo chgrp -R homeperms /home
。但当我尝试
md /home/flask.
Run Code Online (Sandbox Code Playgroud)
我得到一个permission denied
错误(任何其他文件夹名称也会发生)。
我不想对文件夹进行 777,因为我要处理 Web 服务器的内容。
home
的权限/
drwxr-xr-x 12 vanveenjorik homeperms 4096 Jul 6 09:06 home
Run Code Online (Sandbox Code Playgroud)
里面的权限/home
:
drwxr-xr-x 6 vanveenjorik homeperms 4096 Jul 3 20:08 19150
drwxr-xr-x 3 codeanywhere-ssh-key homeperms 4096 Jul 6 08:00 codeanywhere-ssh-key
drwxr-xr-x 2 vanveenjorik homeperms 4096 Jul 6 09:13 downloads
drwxr-xr-x 5 vanveenjorik homeperms 4096 Jul 4 08:43 jorik …
Run Code Online (Sandbox Code Playgroud) [root@localhost ~]# getfattr -m - -d /bin/tcpm\ngetfattr: Removing leading '/' from absolute path names\n# file: bin/tcpm\nsecurity.capability=0sAQAAAgAUAAAAAAAAAAAAAAAAAAA=\nsecurity.selinux="system_u:object_r:bin_t:s0"\n\n[root@localhost ~]# chgrp 951 /bin/tcpm\n[root@localhost ~]# getfattr -m - -d /bin/tcpm\ngetfattr: Removing leading '/' from absolute path names\n# file: bin/tcpm\nsecurity.selinux="system_u:object_r:bin_t:s0"\n
Run Code Online (Sandbox Code Playgroud)\nchown
uid
/bin/tcpm
或chgrp
gid
/bin/tcpm
\xef\xbc\x8c/bin/tcpm
丢失 xattr(security.capability)之后
#/bin/tcpm
提供者tcpm-kmod
我正在分析一个脚本,但在网上找不到chgrp 0
以下行的含义:
find $1 -follow -exec chgrp 0 {}
Run Code Online (Sandbox Code Playgroud)
所以
find $1
接受参数,
-follow
导致 find 遵循符号链接,
-exec
执行命令,
chgrp 0
更改组所有权,但 0 怎么办?,
{}
对于 find 命令找到的所有项目。
如果我有什么不对的地方,请纠正我。