su,sudo
2015-06-19 15:23
399 查看
一.su
1.su是最简单的身份切换命令,使用方法:
su [-lm] [-c command] [username]
2.参数
-:单纯使用“-”,代表使用login-shell的变量文件读取方式来登录系统;
-l:与“-”类似,但后面需要加欲切换的用户账号,也是login-shell的方式;
-m:与-p一样,表示使用目前的环境变量,而不读取新用户的配置文件;
-c:仅执行一次命令,所以需要跟上要执行的命令;
不加任何参数时,读取的变量文件方式为non-login shell的方式,所以很多变量还是原先使用环境下的,没有发生改变,包括PATH变量。
所以,想要完整地切换到新用户的环境,必须使用su - username 或su -l username方式。
但是,想要切换到root用户时,就不可避免得需要让该用户取得root密码,这样就会有安全问题,所以,有了sudo这种方式。
二.sudo
1.sudo的执行只需要自己的密码即可,当然,有/etc/sudoers这个文件的限制,并非所有用户都可使用sudo,使用方法:
sudo [-b] [-u 新用户账号] command
2.参数:
-b:将后续的命令让系统自行执行,而不与目前的shell产生影响;
-u:后面可以接欲切换的用户,若无此项则表示切换身份为root;
3.sudo执行的流程:
1)用用户执行sudo时,系统于/etc/sudoers文件中查找该用户是否有权限;
2)若用户具有可执行sudo的权限后,需要用户输入自己的密码(配置/etc/sudoers文件也可免输密码,后面会讲到该文件的配置);
3)若密码输入成功,就可是执行sudo后跟的命令;
4)若欲切换的身份与执行者身份相同,那也不需要输入密码。
4.visudo和/etc/sudoers
1)visudo只是调用vi将/etc/sudoers调出来进行修改,但是会自动检测该文件的语法,如果有错会有提示;
2)/etc/sudoers配置:
root ALL=(ALL)ALL
root:代表sudo用户,若前面有%,则表示用户组;
ALL:代表使用者的来源主机名,这个参数可以指定客户端计算机,可以是IP地址或网络;
ALL:代表可切换的身份,表示可以切换到什么身份来执行后续的命令;
ALL:代表具体的命令(如果命令前有“!”,表示不可执行),务必使用绝对路径(ALL是特殊的关键字,代表任何身份,主机或命令):
为了更好地规划特定用户的特定权限,经常需要有特定的设置,以下三个参数是/etc/sudoers配置中的关键字:
Host_Alias:将主机归类;
User_Alias:将用户归类;
Cmnd_Alias:将命令归类;
最后按以下格式组合,给用户分配权限:
User_Alias Host_Alias=(user)(NOPASSWD:)Cmnd_Alias ===========>若有NOPASSWD,则表示执行命令时不用输入自己的密码。
3)例:
User_Alias ADMINS = zhou,zhou1 ===============>定义用户ADMINS为zhou和zhou1
Cmnd_Alias NETWORKING = !/sbin/route, /sbin/ifconfig ===============>定义一组网络命令,命名为NETWORKING,包括不可执行/sbin/route,可以执行 /sbin/ifconfig
Cmnd_Alias SU = !/usr/bin/su ===============>定义一组命令,命名为SU,即不可执行/usr/bin/su
Cmnd_Alias SOFTWARE = /usr/bin/yum ===============>定义一组命令,命名为SOFTWARE,即可以执行 /usr/bin/yum
ADMINS ALL=(root) NETWORKING,SU ================>指定用户别名为ADMINS的“用户”(实际上就是zhou和zhou1),可以以root用户使用NETWORKING,SU中的命令,即不可执行/sbin/route,可以执行 /sbin/ifconfig,不可执行/usr/bin/su
ADMINS ALL=(ALL) NOPASSWD:SOFTWARE================>运行sudo的用户可以切换至任何身份而不需要输入自己的密码就能使用SOFTWARE中的命令。
结果:
[zhou@localhost ~]$ sudo /sbin/route
Sorry, user zhou is not allowed to execute '/sbin/route' as root on localhost.localdomain.
[zhou@localhost ~]$ sudo /usr/bin/su
Sorry, user zhou is not allowed to execute '/usr/bin/su' as root on localhost.localdomain.
[zhou@localhost ~]$ sudo /usr/bin/yum install -y lrzsz
Loaded plugins: fastestmirror, langpacks
...
[zhou@localhost ~]$ sudo /sbin/ifconfig
[sudo] password for zhou:
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
...
1.su是最简单的身份切换命令,使用方法:
su [-lm] [-c command] [username]
2.参数
-:单纯使用“-”,代表使用login-shell的变量文件读取方式来登录系统;
-l:与“-”类似,但后面需要加欲切换的用户账号,也是login-shell的方式;
-m:与-p一样,表示使用目前的环境变量,而不读取新用户的配置文件;
-c:仅执行一次命令,所以需要跟上要执行的命令;
不加任何参数时,读取的变量文件方式为non-login shell的方式,所以很多变量还是原先使用环境下的,没有发生改变,包括PATH变量。
所以,想要完整地切换到新用户的环境,必须使用su - username 或su -l username方式。
但是,想要切换到root用户时,就不可避免得需要让该用户取得root密码,这样就会有安全问题,所以,有了sudo这种方式。
二.sudo
1.sudo的执行只需要自己的密码即可,当然,有/etc/sudoers这个文件的限制,并非所有用户都可使用sudo,使用方法:
sudo [-b] [-u 新用户账号] command
2.参数:
-b:将后续的命令让系统自行执行,而不与目前的shell产生影响;
-u:后面可以接欲切换的用户,若无此项则表示切换身份为root;
3.sudo执行的流程:
1)用用户执行sudo时,系统于/etc/sudoers文件中查找该用户是否有权限;
2)若用户具有可执行sudo的权限后,需要用户输入自己的密码(配置/etc/sudoers文件也可免输密码,后面会讲到该文件的配置);
3)若密码输入成功,就可是执行sudo后跟的命令;
4)若欲切换的身份与执行者身份相同,那也不需要输入密码。
4.visudo和/etc/sudoers
1)visudo只是调用vi将/etc/sudoers调出来进行修改,但是会自动检测该文件的语法,如果有错会有提示;
2)/etc/sudoers配置:
root ALL=(ALL)ALL
root:代表sudo用户,若前面有%,则表示用户组;
ALL:代表使用者的来源主机名,这个参数可以指定客户端计算机,可以是IP地址或网络;
ALL:代表可切换的身份,表示可以切换到什么身份来执行后续的命令;
ALL:代表具体的命令(如果命令前有“!”,表示不可执行),务必使用绝对路径(ALL是特殊的关键字,代表任何身份,主机或命令):
为了更好地规划特定用户的特定权限,经常需要有特定的设置,以下三个参数是/etc/sudoers配置中的关键字:
Host_Alias:将主机归类;
User_Alias:将用户归类;
Cmnd_Alias:将命令归类;
最后按以下格式组合,给用户分配权限:
User_Alias Host_Alias=(user)(NOPASSWD:)Cmnd_Alias ===========>若有NOPASSWD,则表示执行命令时不用输入自己的密码。
3)例:
User_Alias ADMINS = zhou,zhou1 ===============>定义用户ADMINS为zhou和zhou1
Cmnd_Alias NETWORKING = !/sbin/route, /sbin/ifconfig ===============>定义一组网络命令,命名为NETWORKING,包括不可执行/sbin/route,可以执行 /sbin/ifconfig
Cmnd_Alias SU = !/usr/bin/su ===============>定义一组命令,命名为SU,即不可执行/usr/bin/su
Cmnd_Alias SOFTWARE = /usr/bin/yum ===============>定义一组命令,命名为SOFTWARE,即可以执行 /usr/bin/yum
ADMINS ALL=(root) NETWORKING,SU ================>指定用户别名为ADMINS的“用户”(实际上就是zhou和zhou1),可以以root用户使用NETWORKING,SU中的命令,即不可执行/sbin/route,可以执行 /sbin/ifconfig,不可执行/usr/bin/su
ADMINS ALL=(ALL) NOPASSWD:SOFTWARE================>运行sudo的用户可以切换至任何身份而不需要输入自己的密码就能使用SOFTWARE中的命令。
结果:
[zhou@localhost ~]$ sudo /sbin/route
Sorry, user zhou is not allowed to execute '/sbin/route' as root on localhost.localdomain.
[zhou@localhost ~]$ sudo /usr/bin/su
Sorry, user zhou is not allowed to execute '/usr/bin/su' as root on localhost.localdomain.
[zhou@localhost ~]$ sudo /usr/bin/yum install -y lrzsz
Loaded plugins: fastestmirror, langpacks
...
[zhou@localhost ~]$ sudo /sbin/ifconfig
[sudo] password for zhou:
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
...
相关文章推荐
- Ubuntu的sudo与su命令使用与开启root帐户 2012-04-30
- 冒充su ,perl写的su.pl盗取root密码
- linux系统sudo命令详解
- Linux Tips之 切换用户身份su与sudo的用法与实例
- 关于Linux系统上 SU命令的几点安全建议
- sudo漏洞
- liunx 下su 和sudo 的区别
- sudo
- linux su和su -的区别
- 一篇讲述sudo的好文
- FreeBSD su:sorry 解决办法
- Linux(ubuntu)赋予用户sudo权限
- Linux下让一个普通用户并且获得root权限
- centos sudo设定,不用每次输入密码
- is not in the sudoers file 报错的解决方法
- CentOS设置不需要密码的sudo
- 提示:bash: groupadd: command not found
- 在Linux系统中应用su和sudo
- Linux的su命令,sudo命令和限制root远程登录
- 常用终端命令