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 或普通权限操作定时任务。

相关推荐
明晚十点睡16 分钟前
Vscode (Windows端)免密登录linux集群服务器
linux·服务器·vscode
努力的搬砖人.39 分钟前
maven如何搭建自己的私服(LINUX版)?
java·linux·maven
天夏已微凉1 小时前
1.2 Linux音频系统发展历程与关键技术演进
linux·c语言·驱动开发·音视频
binary思维1 小时前
cat、more和less的区别
linux·less
想成为大佬的每一天1 小时前
Linux网络编程day7 线程池and UDP
linux·开发语言
云边有个稻草人2 小时前
【Linux系统】第三节—权限
linux·粘滞位·linux权限·shell命令以及运行原理·文件权限的相关设置方法·使用sudo分配权限·file指令
vortex52 小时前
浅谈 Shell 脚本编程中引号的妙用
linux·命令行
余辉zmh2 小时前
【Linux系统篇】:Linux线程控制基础---线程的创建,等待与终止
linux·运维·服务器
大白的编程日记.3 小时前
【Linux学习笔记】基础IO之理解文件
linux·笔记·学习
东南门吹雪4 小时前
Debian系统上PostgreSQL15版本安装调试插件及DBeaver相应配置
linux·运维·postgresql·debian