linux里怎么禁用 其他用户使用sudo添加定时器,例如创建的tomcat用户禁止使用 sudo crontab -u tomcat -e 添加定时器

要禁止 tomcat 用户通过 sudo crontab -u tomcat -e 添加定时任务,需从 sudo 权限控制crontab 访问限制两方面入手。以下是具体步骤:


一、核心思路

  1. 禁止 tomcat 用户使用 sudo 提权执行 crontab
    • 修改 /etc/sudoers 配置,移除 tomcat 用户执行 crontab 的权限。
  2. 全局限制 tomcat 用户的 crontab 访问
    • 通过 /etc/cron.deny 文件或权限控制,彻底禁止该用户使用定时任务。

二、操作步骤

1. 检查当前 sudo 权限

首先确认 tomcat 用户在 /etc/sudoers 中的配置:

bash 复制代码
sudo grep "tomcat" /etc/sudoers /etc/sudoers.d/*

如果输出包含类似以下内容,说明该用户拥有 crontab 的提权权限:

复制代码
tomcat ALL=(ALL) NOPASSWD: /usr/bin/crontab
2. 移除 sudo 权限

通过 visudo 安全编辑配置,移除相关权限:

bash 复制代码
sudo visudo

找到与 tomcat 相关的行(如 tomcat ALL=(ALL) NOPASSWD: ...),删除或注释掉允许执行 crontab 的部分:

bash 复制代码
# tomcat ALL=(ALL) NOPASSWD: /usr/bin/crontab  # 注释此行
3. 使用更精细的 sudo 权限控制

如果需保留其他 sudo 权限,仅禁止 crontab,可添加如下规则:

bash 复制代码
# 允许 tomcat 执行其他命令,但禁止 crontab
tomcat ALL=(ALL) ALL, !/usr/bin/crontab

或针对特定参数禁止(更严格):

bash 复制代码
tomcat ALL=(ALL) ALL, !/usr/bin/crontab -u tomcat*
4. 全局禁止 crontab 访问

通过 /etc/cron.deny 确保 tomcat 用户无法直接使用 crontab

bash 复制代码
sudo sh -c 'echo "tomcat" >> /etc/cron.deny'
5. 验证配置

切换到 tomcat 用户测试:

bash 复制代码
sudo su - tomcat

# 尝试使用 sudo 执行 crontab(应失败)
sudo crontab -u tomcat -e
# 预期输出:
# Sorry, user tomcat is not allowed to execute '/usr/bin/crontab -u tomcat -e' as root.

三、其他安全加固

1. 检查现有定时任务

清理 tomcat 用户可能已添加的任务:

bash 复制代码
# 查看任务列表
sudo crontab -u tomcat -l

# 删除所有任务
sudo crontab -u tomcat -r
2. 审计可疑活动

检查系统日志,确认是否有异常操作:

bash 复制代码
sudo grep "tomcat" /var/log/auth.log
# 或(CentOS/RHEL)
sudo grep "tomcat" /var/log/secure
3. 限制用户 Shell 访问

tomcat 用户仅用于服务运行(非交互式登录),可将其 Shell 设置为 /sbin/nologin

bash 复制代码
sudo usermod -s /sbin/nologin tomcat

四、总结

操作目标 实现方法
移除 sudo crontab 权限 修改 /etc/sudoers,禁止执行 /usr/bin/crontab
禁止普通 crontab 使用 添加 tomcat/etc/cron.deny
清理残留任务 使用 crontab -u tomcat -r 删除现有任务
防止提权后门 审计 sudoers 文件,限制用户权限粒度

通过以上步骤,可彻底禁止 tomcat 用户通过 sudo 或普通权限操作定时任务。

相关推荐
liuyunluoxiao14 分钟前
基于生产者消费者模型的线程池【Linux操作系统】
linux
Otaku love travel1 小时前
老系统改造增加初始化,自动化数据源配置(tomcat+jsp+springmvc)
java·tomcat·初始化·动态数据源
程序员黄老师1 小时前
Ubuntu 24.04上安装 Intelligent Pinyin 中文输入法
linux·运维·ubuntu
HONG_YANG2 小时前
ERPNext 介绍、安装和维护建议
linux
HONG_YANG2 小时前
ERPNext 搭建教程:Linux 一键部署与维护
linux
晨岳2 小时前
CentOS 安装 JDK+ NGINX+ Tomcat + Redis + MySQL搭建项目环境
java·redis·mysql·nginx·centos·tomcat
Enti7c2 小时前
什么是void,什么时候使用void类型?never和void的区别
linux·运维·ubuntu
scilwb3 小时前
基于Isaac Sim场景的Coverage Path Planning 项目部署完整指南
linux
知北游天4 小时前
Linux:多线程---同步&&生产者消费者模型
java·linux·网络
kfepiza4 小时前
`nmcli con add type vlan`中的: `ifname` , `dev` ,`vlan.parent`, `id`,`vlan.id`
linux·网络协议·tcp/ip