在 Linux 中,如何暂时删除我与某个群组的关联?

在 Linux 中,如何暂时删除我与某个群组的关联?

我需要测试存储库上的 Linux 组权限。如何在一个 shell 中临时删除我的一个组关联?

例如
如果我的组定义为:

 % groups
 foo bar baz

我怎样才能使它只返回foo bar而不返回baz

答案1

有可能的。

查看此代码(有效的 C89,呵呵)我花了 25 分钟写完。用法示例:

whitequark@forth:~/skipgroup$ ls
skipgroup.c
whitequark@forth:~/skipgroup$ gcc skipgroup.c -o skipgroup
whitequark@forth:~/skipgroup$ sudo chown root:root skipgroup
whitequark@forth:~/skipgroup$ sudo chmod u+s skipgroup
whitequark@forth:~/skipgroup$ groups
whitequark adm dialout cdrom plugdev lpadmin admin sambashare
whitequark@forth:~/skipgroup$ ./skipgroup 
Usage: ./skipgroup <group to remove>
Must be SUID. Launches shell.
whitequark@forth:~/skipgroup$ ./skipgroup cdrom
$ id
uid=1000(whitequark) gid=1000(whitequark)
groups=4(adm),20(dialout),46(plugdev),104(lpadmin),114(admin),118(sambashare),1000(whitequark)

警告此代码无效!

虽然正如您在 id 的输出中看到的那样,它会降低权限,但它可能是危险的。Dixi。

答案2

我认为这是不可能的,因为文件(和 POSIX ACL)可以为某些组指定减性权限。允许人们逃离某个组将是一个安全漏洞。

当然,如果你有 root 权限,你可以简单地将自己从组中移除,然后执行

sudo su - $USER

相关内容