Shell脚本——su、sudo

本文详细介绍了Shell脚本中的su和sudo命令的使用。su命令用于临时切换到root用户,而sudo则为非root用户赋予执行特定命令的权限,以提高系统安全性。文章深入探讨了sudo的配置,包括一般用户赋权设置和多用户配置,如非同一群组和同一群组用户的不同配置方法,以及如何通过User_Alias、Cmnd_Alias、Host_Alias和Runas_Alias进行更复杂的权限设定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

· su

su命令临时切换到root用户;

su [option] [用户]

其中,

-后接用户名,表示登录并切换到用户环境;

-c后接命令,表示执行该命令再退出所切换的用户环境;


注:

su表示切换到root用户,但不改变root登录环境;

su -表示切换到root用户,并切换到root用户环境;


su命令的安全性低,使用sudo命令执行指定命令,此时输入的密码是用户自己密码,而非root用户密码;但并非所有用户都能使用sudo命令




· sudo

sudo命令为非root用户赋予一些合理的权利,执行一些只有root用户才能执行的命令,以减少root用户的登录次数和管理时间,提高系统安全性;

sudo执行命令的过程是当前用户切换到root用户,再以root用户执行命令,完成后直接退回到当前用户;

使用sudo的前提是通过sudo配置文件/etc/sudoers进行授权,可使用visudo命令编辑该配置文件;


一、一般用户赋权设置

[root@localhost ~]# visudo
... 省略 ...
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
... 省略 ...

其中,第一个字段表示能使用sudo命令的用户;第二个字段中等号左边表示允许使用sudo的主机,括号里表示使用sudo后以什么身份执行命令;第三个字段表示允许sudo执行的命令;

在"root ALL=(ALL) ALL"下一行添加"twc ALL=(root) /usr/sbin/useradd",表示允许twc用户从任何主机登录,以root身份执行useradd命令;


二、sudo深入配置

对于不同需求的用户,可按照一方法依次添加多行,每行对应一个用户;


1 多个用户的设置(非同一群组用户)

对于相同需求的用户,可使用"User_Alias UUU=user1, user2, ..."定义用户别名的方式;

[root@localhost ~]# visudo
... 省略 ...
# User_Alias ADMINS = jsmith, mikem
User_Alisa sudouser=user1,user2,user3,user4
... 省略 ...
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
sudouser   ALL=(root)    /usr/sbin/useradd
... 省略 ...


对于多个命令,可使用"Cmnd_Alias CCC=command1, command2, ..."定义命令别名的方式;

[root@localhost ~]# visudo
... 省略 ...
## Networking
Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool
... 省略 ...
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
sudouser   ALL=(root)    NETWORKING
... 省略 ...


对于多个主机,可使用"Host_Alias HHH=host1, host2, ..."定义主机别名的方式;

对于多个登录用户,可使用"Runas_Alias RRR=role1, role2, ..."定义用户别名的方式;


2 多个用户的设置(同一群组用户)

使用"%GROUP_NAME"作为允许使用sudo命令的用户;

[root@localhost ~]# visudo
... 省略 ...
## Allows people in group wheel to run all commands
%wheel        ALL=(ALL)       ALL
... 省略 ...


注:若希望不需密码验证,则在允许sudo执行的命令前接"NOPASSWORD:"

[root@localhost ~]# visudo
... 省略 ...
## Allows people in group wheel to run all commands
%wheel        ALL=(ALL)       NOPASSWORD: ALL
... 省略 ...


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值