可以使用 /etc/cron.d 目录中的以下两个文件来控制对 crontab 命令的访问:cron.deny 和 cron.allow。这些文件只允许指定的用户执行 crontab 命令任务,例如创建、编辑、显示或删除自己的 crontab 文件。
cron.deny 和 cron.allow 文件包含用户名的列表,每行一个用户名。
这些访问控制文件按以下方式协同工作:
如果不存在 cron.allow,则所有用户都可以提交 crontab 文件(cron.deny 中列出的用户除外)。
如果 cron.allow 和 cron.deny 都不存在,则运行 crontab 命令需要超级用户权限。
编辑或创建 cron.deny 和 cron.allow 文件需要超级用户权限。
在 SunOS 软件安装期间创建的 cron.deny 文件包含以下用户名:
$ cat /etc/cron.d/cron.deny daemon bin smtp nuucp listen nobody noaccess |
缺省 cron.deny 文件中的用户名都不能访问 crontab 命令。您可以编辑此文件,以添加被拒绝访问 crontab 命令的其他用户名。
未提供缺省的 cron.allow 文件。因此,在安装 Oracle Solaris 软件后,所有用户(缺省 cron.deny 文件中列出的用户除外)都可以访问 crontab 命令。如果创建 cron.allow 文件,则只有这些用户可以访问 crontab 命令。
成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
编辑 /etc/cron.d/cron.deny 文件并添加用户名,每个用户占据一行。将拒绝访问 crontab 命令的用户包括在内。
daemon bin smtp nuucp listen nobody noaccess username1 username2 username3 . . . |
验证 /etc/cron.d/cron.deny 文件是否包含新项。
# cat /etc/cron.d/cron.deny daemon bin nuucp listen nobody noaccess |
成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
创建 /etc/cron.d/cron.allow 文件。
将 root 用户名添加到 cron.allow 文件中。
如果未将 root 添加到该文件中,则会拒绝超级用户访问 crontab 命令。
添加用户名,每行一个用户名。
将允许使用 crontab 命令的用户包括在内。
root username1 username2 username3 . . . |
以下示例显示一个 cron.deny 文件,该文件用于禁止用户名 jones、temp 和 visitor 访问 crontab 命令。
$ cat /etc/cron.d/cron.deny daemon bin smtp nuucp listen nobody noaccess jones temp visitor |
以下示例显示一个 cron.allow 文件。用户 root、jones、lp 和 smith 是仅有的可以访问 crontab 命令的用户。
$ cat /etc/cron.d/cron.allow root jones lp smith |
要验证特定用户是否可以访问 crontab 命令,请在使用该用户帐户登录后执行 crontab -l 命令。
$ crontab -l |
如果用户可以访问 crontab 命令并已创建 crontab 文件,则会显示该文件。否则,如果用户可以访问 crontab 命令但不存在 crontab 文件,则会显示与以下消息类似的消息:
crontab: can't open your crontab file |
此用户已列在 cron.allow 文件中(如果存在该文件),或者该用户未列在 cron.deny 文件中。
如果用户不能访问 crontab 命令,则无论是否存在以前的 crontab 文件,都会显示以下消息:
crontab: you are not authorized to use cron. Sorry. |
此消息表明,该用户未列在 cron.allow 文件(如果该文件存在)中,或者该用户已列在 cron.deny 文件中。