在Linux和其余类Unix操做系统中,只有root用户能够运行全部命令并在系统上执行某些关键操做,如安装和更新,删除包,建立用户和组,修改重要的系统配置文件等。然而,承担root用户角色的系统管理员能够容许其余正常系统用户在sudo命令和几个配置的帮助下运行某些命令以及执行包括上述的一些重要系统操做。或者,系统管理员能够共享root用户密码(这不是推荐的方法),以便正常系统用户能够经过su命令访问root用户账户。 |
sudo容许用户以root用户身份(或另外一个用户)执行安全策略指定的命令:它读取并解析/etc sudoers,查找调用的用户及其权限,而后提示调用用户输入密码(一般是用户的密码,但也能够是目标用户的密码,也可使用NOPASSWD取消密码验证),以后,sudo建立一个子进程,在其中调用setuid()切换到目标用户next,它执行一个shell或在上面的子进程中做为参数给出的命令。
如下是十个/etc/sudoers文件配置,以使用Defaults条目修改sudo命令的行为。linux
sudo cat /etc/sudoers | less
1.设置安全路径shell
这是用于每一个使用sudo运行的命令的路径,它有两个重要性:
在系统管理员不信任sudo用户具备安全的PATH环境变量时使用
要分离“根路径”和“用户路径”,只有由exempt_group定义的用户不受此设置的影响。
要设置它,请添加行:安全
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
2.在TTY用户登陆会话上启用sudobash
要启用从真实tty调用sudo,而不是经过cron或cgi-bin脚本等方法调用,请添加如下行:less
Defaults requiretty
3.运行Sudo命令使用ptyui
有些时候,攻击者可使用sudo运行恶意程序(例如病毒或恶意软件),这将再次分叉保留在用户的终端设备上的后台进程,即便在主程序已经完成执行时。操作系统
为了不这种状况,您能够将sudo配置为仅使用use_pty参数从psuedo-pty运行其余命令,不管I /O日志是否已打开,以下所示:.net
Defaults use_pty1
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"
5.记录Sudo命令输入/输出
log_input和log_output参数容许sudo在伪tty中运行命令,并记录全部用户输入和全部输出发送到屏幕。
默认I / O日志目录为/var/log/sudo-io,若是有会话序列号,则存储在此目录中。您能够经过iolog_dir参数指定自定义目录。
Defaults log_input, log_output1
支持一些转义序列,例如%{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配置