Shell 为权限创建排除用户列表-Unix
我有一个奇怪的要求,我只想限制少数ID执行“chmod”命令Shell 为权限创建排除用户列表-Unix,shell,unix,aix,Shell,Unix,Aix,我有一个奇怪的要求,我只想限制少数ID执行“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-
#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
我不想使用这个选项,因为在我的服务器中有很多用户,需要很长时间才能获得批准。请建议其他方法。您可以为其设置ACL。试试这个:我不得不质疑你想要完成什么 你看,
chmod
二进制文件实际上只存在于钩住系统调用。在操作系统中内置了一个系统调用,名为cunninglychmod()
,用于更改文件权限
#包括
int chmod(常量字符*路径名,模式);
int fchmod(int fd,mode_t mode);
#包括/*AT_*常数的定义*/
#包括
int fchmodat(int dirfd,const char*路径名,mode\u t mode,int标志);
等等
尝试通过更改chmod
命令的权限来锁定此功能是一个非常糟糕的主意,因为充其量只能得到一种错误的安全感chmod
运行时不需要任何提升的权限,因此任何用户都可以复制自己的版本并运行它
或者使用编译器编写自己的
或者使用perl内置程序
或者其他各种机制,基本上意味着这除了有点刺激之外,不会有太大的效果
你到底想完成什么?您可能正在查看某种强制访问控制,这意味着您需要查看selinux 您可以通过创建另一个组并修改其权限,同时从中删除其成员来完成此操作。您可以使用ACL来完成此操作。这将覆盖特定用户或组的权限。这些机制并不是完全标准化的——POSIX.1e团队从未接受过他们提出的标准(假设它达到了实际提出的程度),尽管有些系统确实支持一些相近的标准。感谢Jonathan Leffler,将尝试此选项。也许SELinux可以帮助您?请小心操作-通过限制对
chmod
的访问,您不一定会阻止人们执行chmod
操作,这可以通过系统调用实现。请记住,并非所有文件系统都支持ACL。
#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);