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

相关推荐
程序员 _孜然3 小时前
Ubuntu/Debian修改网卡名字enP3p49s0为eth0
linux·运维·驱动开发·嵌入式硬件·ubuntu·debian
IDIOT___IDIOT3 小时前
Linux mount 命令
linux·运维·服务器
CTRA王大大4 小时前
【golang】制作linux环境+golang的Dockerfile | 如何下载golang镜像源
linux·开发语言·docker·golang
小张程序人生4 小时前
《VMware 安装 CentOS 7.9 虚拟机详细教程(含图解步骤)》
linux·centos
川石课堂软件测试5 小时前
技术干货|使用Prometheus+Grafana监控Tomcat实例详解
redis·功能测试·单元测试·tomcat·测试用例·grafana·prometheus
泡沫冰@6 小时前
管理 SELinux 安全性
linux
展信佳_daydayup8 小时前
03 基础篇-润和开发板连接过程
linux·开源·嵌入式
两张不够花8 小时前
Shell脚本源码安装Redis、MySQL、Mongodb、PostgreSQL(无报错版)
linux·数据库·redis·mysql·mongodb·postgresql·云计算
tan77º8 小时前
【Linux网络编程】分布式Json-RPC框架 - 项目设计
linux·服务器·网络·分布式·网络协议·rpc·json
Ray Song8 小时前
【Linux】 wget、curl 用法区别
linux·运维·服务器·curl·wget