我有这个奇怪的要求,我想限制执行" chmod"命令
#which chmod
/usr/bin/chmod
#ls -lrt /usr/bin/chmod
-r-xr-xr-x 1 bin bin 10700 Jun 20 2012 /usr/bin/chmod
它拥有对所有人的执行权限。我们是否可以创建一个排除组,并以某种方式进行配置,以便仅将权限撤销给这些用户。
我拥有的选项是创建一个包含所有id的组,除了那些我要放在异常中的ID并更改权限,如
-r-xr-xr-- 1 bin New-grp 10700 Jun 20 2012 /usr/bin/chmod
我不想使用此选项,因为在我的服务器中有很多用户,并且需要很长时间才能获得批准。请以任何其他方式建议。
答案 0 :(得分:0)
答案 1 :(得分:0)
我不得不质疑你想要完成的事情。
您可以看到,chmod
二进制文件仅用于挂钩系统调用。在您的操作系统中内置了一个系统调用 - 称为cunningly chmod()
,它可以更改文件权限。
http://man7.org/linux/man-pages/man2/fchmod.2.html
#include <sys/stat.h>
int chmod(const char *pathname, mode_t mode);
int fchmod(int fd, mode_t mode);
#include <fcntl.h> /* Definition of AT_* constants */
#include <sys/stat.h>
int fchmodat(int dirfd, const char *pathname, mode_t mode, int flags);
等
尝试通过更改chmod
命令的permisisons来锁定此功能是一个非常糟糕的主意,因为最多只能获得一种虚假的安全感。 chmod
不需要任何提升的权限来运行,因此任何用户都可以复制自己的版本,然后运行它。
或者使用编译器自己编写。
或使用perl内置。
或者基本上意味着这种情况的各种其他机制除了略微恼人之外不会有太大的成就。
你真正试图完成什么?您可能正在寻找某种强制访问控制,这意味着您需要查看selinux。