我是我老板的自愿者,是我们生产Redhat服务器的系统管理员。他要求我加强安全措施,以避免rm -f *
不久前发生的不幸事件。
目前,我们有53位用户在机器上打气,这是审核的噩梦。我想知道是否可能只允许用户在一周的特定日期访问。
例如,是否可以让用户“ Joe”仅在星期二和星期四登录,而仅允许“ Jane”在星期日登录?可以etc/sudoers
定制以允许这样做吗?
有没有比使用sudoers更好的方法?
rm -rf /
。
我是我老板的自愿者,是我们生产Redhat服务器的系统管理员。他要求我加强安全措施,以避免rm -f *
不久前发生的不幸事件。
目前,我们有53位用户在机器上打气,这是审核的噩梦。我想知道是否可能只允许用户在一周的特定日期访问。
例如,是否可以让用户“ Joe”仅在星期二和星期四登录,而仅允许“ Jane”在星期日登录?可以etc/sudoers
定制以允许这样做吗?
有没有比使用sudoers更好的方法?
rm -rf /
。
Answers:
sudo
通过PAM进行身份验证,就像Linux机器上的几乎所有其他内容一样。
因此,您应该能够使用pam_time.so
它。
默认情况下,至少在Debian上,该模块未启用。您需要添加如下所示的行:
account requisite pam_time.so
要么/etc/pam.d/sudo
仅启用sudo ,要么启用/etc/pam.d/common-account
(在pam-auth-update块之后)以启用系统上的所有程序。
然后编辑/etc/security/time.conf
以设置您的限制。服务名称应为sudo
。例如,要允许Fred sudo
仅在星期五的下午3点至下午5点之间使用:
sudo;*;fred;Fr1500-1700
(注意:我尚未对此进行测试。)
编辑:明确地说,我同意其他答案和各种评论者的意见,您似乎有太多的人以root用户身份运行了太多命令,因此您确实需要解决该问题。当然,如果他们可以成为根用户,则可以编辑pam配置...
我会问为什么53个用户需要sudo来完成日常工作-对于大多数用户(甚至是开发人员)来说,sudo应该是一个罕见的例外,而不是某人会随便运行sudo rm -rf *
命令的例行事情。
您是否可以使用组权限(或什至更高级的ACL)来使人们访问完成工作所需的文件,也许使用一些setuid或sudo'ed脚本或二进制文件来使他们执行重启服务之类的事情?(请注意,编写安全的setuid / sudo脚本很困难,因此,诚实的人要诚实得多。)
即使您可以将某人限制为每周有一天进行sudo访问,但仍然有53个人在一周的时间内拥有sudo访问权限,因此这对解决您的核心问题并没有真正的帮助。
就此而言,我想问是否有那么多用户需要访问生产服务器?您可以将日志或需要的任何数据/文件运送到非生产计算机吗?
vi/cp/mv/rm
。只有cd
和more
。没有其他的。
最简单的方法是使用suders.d(通过inludedir)进行配置。然后,您可以拥有cron作业,这些作业可以将每个用户的规则放入您所需时间的目录中。
可以在/ etc / sudoers中使用#includedir指令来创建sudo.d目录,您可以将sudoers规则作为规则的一部分放入其中。例如,给定:
#includedir /etc/sudoers.d
sudo将读取/etc/sudoers.d中的每个文件,跳过以'〜'结尾或包含'。'的文件名。字符,以避免引起程序包管理器或编辑器临时/备份文件出现问题。文件按排序的词法顺序进行解析。也就是说,/etc/sudoers.d/01_first将在/etc/sudoers.d/10_second之前解析。请注意,由于排序是按词法而不是数字排序的,因此/etc/sudoers.d/1_whoops将在/etc/sudoers.d/10_second之后加载。在文件名中使用一致数量的前导零可以避免此类问题。
请注意,与通过#include包含的文件不同,visudo不会编辑#includedir目录中的文件,除非其中之一包含语法错误。仍然可以使用带有-f标志的visudo来直接编辑文件。
当您希望joe具有访问权限时,将出现/etc/sudoers.d/joe,您只需删除文件即可取消访问权限。