接触Linux的朋友应该都接触sudo这个命令,特别是刚一接触ubuntu朋友,只要进入系统执行特殊的命令都需要在命令前加+sudo命令才能执行命令,sudo到到底是个什么神器呢?sudo是个统管一切的命令。它的字面意思是代表“超级用户才能做!”(super user do!) 也可以使用 su - "switch user",但是使用su方式容易将系统用户密码泄露,导致系统不安全,由于root用户权限过大,在实际生产过程中很少使用root用户直接登录系统,而是使用普通用户登录系统;但是如果普通用户要对系统进行日常维护操作时需要su到root用户,为了提高安全性,可以使用sudo授权某一用户在某一主机以某一用户身份运行某些命令;从而减少root用户密码知晓人,提高系统安全性。
sudo的优势:
①授权指定用户在指定的主机上运行指定的管理命令;
②sudo审计安全性:将一些管理命令授权给某些普通用户使用,并且还能限定其仅能够在某些主机上执行此类的命令,操作过程还会被记录与日志中,以便于日后审计;
③"检票系统":时效性认证,用户第一次执行sudo命令时会要求输入密码来验证用户身份,成功后用户会获得一个有固定存活时长的"令牌"(令牌默认存活时长为5分钟)
sudo常用参数:
##参数 -V 显示版本编号 -h 会显示版本编号及指令的使用方式说明 -l 会显示出自己(执行sudo的使用者)的权限 -v 因为sudo在第一次执行时或是在N分钟内没有执行(N预设为五)会问密码,这个参数是重新做一次确认,如果超过N 分钟,也会问密码 -k 将会强迫使用者在下一次执行sudo时问密码(不论有没有超过N分钟) -b 将要执行的指令放在后台后台执行
使用sudo的过程:
sudo的授权文件:/etc/sudoers,只有管理员能够编辑
1、实现sudo授权的方法
①使用vim打开编辑:
可以实现文本着色,但是不能检测语法错误,不建议使用
②visudo:专用的sudoers文本编辑工具
配置完成后能够检测提示语法错误,建议使用此编辑工具进行/etc/sudoers进行编辑
帮助文档:man visudo;man visudoers
③定义sudo授权,/etc/sudoers
语法: who which_host=(whom) command
谁能以谁的身份,在那些主机上执行那些命令
sudo配置文件别名应用:
别名:Alias(都以大写字母定义)
Host_Alias:定义主机别名,使用,分隔
User_Alias:定义用户别名,可以是用户名,也可以是组名(%组名)
Cmnd_Alias:定义命令别名,可以定义不能执行的命令,使用!/usr/bin/passwd root
Runas_Alias:定义以那些用户执行
NOPASSWD:定义用户执行命令时可以不输入密码
PASSWD:定义用户执行命令时需要输入密码
sudo案例应用:
授权samlee用户拥有添加用户权限、修改密码权限,但不能修改root密码(防止用户修改root密码):
[root@rsyncmaster ~]# visudo samlee ALL=(root) /usr/sbin/useradd, /usr/bin/passwd, ! /usr/bin/passwd root
使用samlee登录测试:
[samlee@rsyncmaster ~]$ sudo useradd samleetest #创建用户没有问题 [sudo] password for samlee: [samlee@rsyncmaster ~]$ sudo passwd root #无法修改root密码 Sorry, user samlee is not allowed to execute '/usr/bin/passwd root' as root on rsyncmaster.samlee.com. [samlee@rsyncmaster ~]$ tail /etc/passwd | grep samleetest #查看添加的用户 samleetest:x:503:503::/home/samleetest:/bin/bash
2.sudo别名定义及别名调用
[root@rsyncmaster ~]# visudo User_Alias USERADMIN = samlee,%admin Host_Alias HOST = 172.16.0.0/16,127.0.0.1 Runas_Alias ADMIN = root Cmnd_Alias COMMAND = /sbin/ifconfig,/bin/ping USERADMIN HOST=(ADMIN) COMMAND
测试;samlee用户登录测试指定的相关命令:
#建立测试用户及测试组 [root@rsyncmaster ~]# groupadd admin [root@rsyncmaster ~]# useradd -g admin admin [root@rsyncmaster ~]# passwd admin #使用samlee用户测试: [samlee@rsyncmaster ~]$ sudo ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:D3:E4:53 inet addr:172.16.100.7 Bcast:172.16.255.255 Mask:255.255.0.0 inet6 addr: fe80::20c:29ff:fed3:e453/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:61839 errors:0 dropped:0 overruns:0 frame:0 TX packets:60930 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:6300546 (6.0 MiB) TX bytes:11935948 (11.3 MiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:4 errors:0 dropped:0 overruns:0 frame:0 TX packets:4 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:240 (240.0 b) TX bytes:240 (240.0 b) #使用admin组用户测试: [admin@rsyncmaster ~]$ sudo ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:D3:E4:53 inet addr:172.16.100.7 Bcast:172.16.255.255 Mask:255.255.0.0 inet6 addr: fe80::20c:29ff:fed3:e453/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:62130 errors:0 dropped:0 overruns:0 frame:0 TX packets:61216 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:6324018 (6.0 MiB) TX bytes:11965210 (11.4 MiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:4 errors:0 dropped:0 overruns:0 frame:0 TX packets:4 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:240 (240.0 b) TX bytes:240 (240.0 b)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。