sudo命令一介绍与使用

  • 1.sudo介绍
  • 2.sudo语法与参数
    • 2.1语法:
    • 2.2参数:
  • 3.实例
    • 3.1让用户liang可以通过sudo执行所有root可执行的命令。
  • 4.sudo配置日志
    • 4.1创建日志文件
    • 4.2配置rsyslog
    • 4.3配置visudo
    • 4.4查看日志

1.sudo介绍

  • Sudo”是Unix/Linux平台上的一个非常有用的工具,它允许系统管理员分配给普通用户一些合理的“权利”,让他们执行一些只有超级用户或其他特许用户才能完成的任务,比如:运行一些像mount,halt,su之类的命令,或者编辑一些系统配置文件,像/etc/mtab,/etc/samba/smb.conf等。这样以来,就不仅减少了root用户的登陆次数和管理时间,也提高了系统安全性。
  • 配置sudo必须通过编辑/etc/sudoers文件,而且只有超级用户才可以修改它,还必须使用visudo编辑。之所以使用visudo有两个原因,一是它能够防止两个用户同时修改它;二是它也能进行有限的语法检查。所以,即使只有你一个超级用户,你也最好用visudo来检查一下语法。

2.sudo语法与参数

2.1语法:

sudo(选项)(参数)

2.2参数:

-b:在后台执行指令;
-h:显示帮助;
-H:将HOME环境变量设为新身份的HOME环境变量;
-k:结束密码的有效期限,也就是下次再执行sudo时便需要输入密码;。
-l:列出目前用户可执行与无法执行的指令;
-p:改变询问密码的提示符号;
-s:执行指定的shell;
-u<用户>:以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份;
-v:延长密码有效期限5分钟;
-V :显示版本信息。

3.实例

3.1让用户liang可以通过sudo执行所有root可执行的命令。

使用root创建文件
[root@zabbix-01 ~]# mkdir /test
[root@zabbix-01 ~]# touch /test/aaa
使用liang用户尝试删除
[liang@zabbix-01 ~]$ rm -rf /test/aaa
rm: cannot remove ‘/test/aaa’: Permission denied
[liang@zabbix-01 ~]$ sudo rm -rf /test/aaa
[sudo] password for liang: 
liang is not in the sudoers file.  This incident will be reported.
======================================================================
配置sudo,以root身份用visudo打开配置文件,第九十八行:
     97 ## Allow root to run any commands anywhere
     98 root    ALL=(ALL)       ALL
root   表示 root 用户。
ALL    表示从任何的主机上都可以执行,也可以这样 192.168.100.0/24。
(ALL:ALL)   是以谁的身份来执行,ALL:ALL 就代表 root可以任何人的身份来执行命令。
ALL     表示任何命令。
======================================================================
我们可以仿照root的格式添加一行
     99 liang   ALL=(ALL)       ALL
======================================================================
测试:
[liang@zabbix-01 ~]$ rm -f /test/aaa 
rm: cannot remove ‘/test/aaa’: Permission denied
[liang@zabbix-01 ~]$ sudo rm -f /test/aaa 
[sudo] password for liang: 
[liang@zabbix-01 ~]$ ls /test/
======================================================================
用户拥有root过于危险,我们可以进行限制

    99 liang   zabbix-01=(root)    /bin/ls,/bin/netstat
表示liang用户可以在zabbix-01主机以root的用户身份执行 ls与netstat命令。
======================================================================
设置 sudo 时不需要输入密码
    99 liang  ALL=(ALL) NOPASSWD: /bin/ls,/bin/netstat

4.sudo配置日志

4.1创建日志文件

[root@zabbix-01 ~]# touch /var/log/sudo.log

4.2配置rsyslog

[root@zabbix-01 ~]# vi /etc/rsyslog.conf 
     74 #sudo log                                             /var/log/boot.log
     75 local2.debug /var/log/sudo.log

4.3配置visudo

[root@zabbix-01 ~]# visudo      
    120 Defaults logfile=/var/log/sudo.log

4.4查看日志

[root@zabbix-01 ~]# cat /var/log/sudo.log 
Aug 25 17:42:42 : liang : user NOT authorized on host ; TTY=pts/1 ;
    PWD=/home/liang ; USER=root ; COMMAND=/bin/ls /root
Aug 25 17:43:10 : liang : user NOT authorized on host ; TTY=pts/1 ;
    PWD=/home/liang ; USER=root ; COMMAND=/bin/ls /root
Aug 25 17:44:30 : liang : TTY=pts/1 ; PWD=/home/liang ; USER=root ;
    COMMAND=/bin/ls /root
Aug 25 17:45:49 : liang : TTY=pts/1 ; PWD=/home/liang ; USER=root ;
    COMMAND=/bin/ls /root
Aug 25 17:46:04 : liang : TTY=pts/1 ; PWD=/home/liang ; USER=root ;
    COMMAND=/bin/netstat -lntupg

你可能感兴趣的:(Linux运维)