专栏首页运维前线Linux中设置'sudo'的10个小技巧

Linux中设置'sudo'的10个小技巧

在Linux和其他类Unix操作系统中,只有root用户可以运行所有命令并在系统上执行某些关键操作,如安装和更新,删除包,创建用户和组,修改重要的系统配置文件等。 然而,承担root用户角色的系统管理员可以允许其他正常系统用户在sudo命令和几个配置的帮助下运行某些命令以及执行包括上述的一些重要系统操作。

或者,系统管理员可以共享root用户密码(这不是推荐的方法),以便正常系统用户可以通过su命令访问root用户帐户。

sudo允许用户以root用户身份(或另一个用户)执行安全策略指定的命令:

  • 它读取并解析/etc sudoers,查找调用的用户及其权限,
  • 然后提示调用用户输入密码(通常是用户的密码,但也可以是目标用户的密码,也可以使用NOPASSWD取消密码验证),
  • 之后,sudo创建一个子进程,在其中调用setuid()切换到目标用户
  • next,它执行一个shell或在上面的子进程中作为参数给出的命令。

以下是十个/etc/sudoers文件配置,以使用Defaults条目修改sudo命令的行为。

sudo cat /etc/sudoers | less

1.设置安全路径

这是用于每个使用sudo运行的命令的路径,它有两个重要性:

  • 在系统管理员不信任sudo用户具有安全的PATH环境变量时使用
  • 要分离“根路径”和“用户路径”,只有由exempt_group定义的用户不受此设置的影响。

要设置它,请添加行:

Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

2.在TTY用户登录会话上启用sudo

要启用从真实tty调用sudo,而不是通过cron或cgi-bin脚本等方法调用,请添加以下行:

Defaults  requiretty   

3.运行Sudo命令使用pty

有些时候,攻击者可以使用sudo运行恶意程序(例如病毒或恶意软件),这将再次分叉保留在用户的终端设备上的后台进程,即使在主程序已经完成执行时。 为了避免这种情况,您可以将sudo配置为仅使用use_pty参数从psuedo-pty运​​行其他命令,无论I /O日志是否已打开,如下所示:

Defaults  use_pty

4.创建Sudo日志文件

默认情况下,sudo日志通过syslog(3)。但是,要指定自定义日志文件,请使用logfile参数,如:

Defaults  logfile="/var/log/sudo.log"

要在自定义日志文件中记录主机名和四位数年份,请分别使用log_host和log_year参数,如下所示:

Defaults  log_host, log_year, logfile="/var/log/sudo.log"

可以看出sudo.log已经生效

5.记录Sudo命令输入/输出

log_input和log_output参数允许sudo在伪tty中运行命令,并记录所有用户输入和所有输出发送到屏幕。 默认I / O日志目录为/var/log/sudo-io,如果有会话序列号,则存储在此目录中。您可以通过iolog_dir参数指定自定义目录。

Defaults   log_input, log_output

支持一些转义序列,例如%{seq},其扩展为单调递增的基础36序列号,例如000001,其中每两个数字用于形成新的目录,例如。00/00/01,如下例所示:

[root@linuxprobe ~]# cd /var/log/sudo-io/
[root@linuxprobe sudo-io]# ll
total 8
drwx------ 3 root root 4096 Jan 12 18:58 00
-rw------- 1 root root    7 Jan 12 19:08 seq
[root@linuxprobe sudo-io]# cd 00/00/06/
[root@linuxprobe 06]# ls
log  stderr  stdin  stdout  timing  ttyin  ttyout
[root@linuxprobe 06]# cat log 
1484219333:root:root::/dev/pts/0
/root
/bin/bash

6.讲解​​Sudo用户

要讲授sudo用户关于系统上的密码使用,请使用如下所示的lecture参数。 它有3个可能的值:

  • always - 总是讲一个用户。
  • once - 只在用户第一次执行sudo命令时使用(当没有指定值时使用)
  • never - 从不讲授用户。
Defaults  lecture="always"

此外,您可以使用lecture_file参数设置自定义讲义文件,在文件中键入相应的消息:

Defaults  lecture_file="/path/to/file"

7.输入错误的sudo密码时显示自定义消息

当用户输入错误的密码时,命令行上将显示特定的消息。默认消息是“sorry,try again”,您可以使用badpass_message参数修改消息,如下所示:

Defaults  badpass_message="Password is wrong, please try again,thank you!"

8.增加sudo密码尝试限制

参数passwd_tries用于指定用户尝试输入密码的次数。 默认值为3:

Defaults   passwd_tries=5 

9.让Sudo输入错误的密码时输入提示

Defaults  insults 

10.了解更多Sudo配置

http://blog.csdn.net/wh211212/article/details/52923673

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • CentOS7安装openshift3.9集群

    版权声明:本文为木偶人shaon原创文章,转载请注明原文地址,非常感谢。 https://b...

    shaonbean
  • CentOS 7 配置Python语言开发环境

    CentOS 7 配置Python语言开发环境 初始化设置参考:http://blog.csdn.net/wh211212/article/details/5...

    shaonbean
  • CentOS 7 部署saltstack服务

    版权声明:本文为木偶人shaon原创文章,转载请注明原文地址,非常感谢。 https://b...

    shaonbean
  • Linux(sudo情景分析)

    Linux 下使用 sudo 命令,可以让普通用户也能执行一些或者全部的 root 命令。本文就对我们常用到 sudo 操作情景进行简单分析,通过一些例子来了解...

    用户2617681
  • CNC数控机床参数的设置,以及报警解除方法,干货

    在三菱CNC的硬件连接检查与设置执行完毕向系统送电后,显示器上的READY绿灯仍然不亮。而且在〔诊断〕――〔报警〕 画面上显示很多报警内容,让初次使用三菱CNC...

    UG数控编程
  • Python - logging模块

    logger = logging.getLogger() 不带参数默认是root用户。

    py3study
  • 如何在 Ubuntu 上修改 Root 用户密码

    root 用户(或者 超级用户)是所有 Linux 和 Unix 系统上的一个特殊的用户账号。它拥有系统上所有命令和所有资源的访问权限,没有任何限制。

    雪梦科技
  • update语句到 redo log深入理解

    前面我们分析过一个查询语句的执行流程,并且解释了执行过程中涉及的模块。一条查询语句一般是经过连接器、分析器、优化器、执行器等功能模块,最后到达存储引擎。

    公号-MageByte
  • RDBMS与DBMS区别

    大多数现代商业和开源数据库应用程序本质上是相关的。最重要的关系数据库功能包括在维护和实施某些数据关系的同时使用表进行数据存储的能力。

    葆宁
  • 日媒总结中国发展AI的三大优势,称后者将超越美国 | 热点

    镁客网

扫码关注云+社区

领取腾讯云代金券