linux su和sudo命令的区别
su
网站的建设成都创新互联公司专注网站定制,经验丰富,不做模板,主营网站定制开发.小程序定制开发,H5页面制作!给你焕然一新的设计体验!已为阳台护栏等企业提供专业服务。
su的全称并不是super user,而是switch user,是不是就突然明白了?是切换用户的意思。su的一般使用方法是su或者su -,两种方法虽然只差了1个字符,但也是有比较大的差异的。
加入了-参数,就是login-shell的方式,也就是说切换到另一个用户之后,当前的shell会加载对应的环境变量和各种设置;
如果没有加入-参数,就是non-login-shell的方式,也就是说当前的shell还是加载切换之前的那个用户的环境变量以及各种设置。
如果不想因为切换到另一个用户导致自己在当前用户下的设置不可用,那么就可以用non-login-shell的方式;如果切换用户后,需要用到该用户的各种环境变量,那么使用login-shell方式即可。
sudo
全称为super user do,即以超级用户的方式执行命令,这里的超级用户指的就是root用户,我们在Linux中有时会遇到permission
denied的情况,如以ubuntu用户的身份查看/etc/shadow的内容,因为它是只有root用户才能查看的,这个时候就可以使用sudo。
两者的区别在于:
使用su - 提供root账号的密码,可以切换到root用户;
使用sudo su -,提供当前用户的密码,也可以切换到root用户。
如果我们的Linux系统有很多用户需要使用的话,前者要求所有用户都知道root用户的密码,显然是非常危险的;后者是不需要暴露root账户密码的,用户只需要输入自己的账户密码就可以。
linux sudo用法
一种约束用户执行系统管理命令方面的安全机制,允许指定的用户以root身份执行指定的命令而不需要提供root密码。用过Ubuntu(Debian系)的小伙伴很有发言权。
当用户要执行比如systemctl stop httpd时,如果该用户不被允许使用systemctl stop命令,则命令无法运行,从而实现只允许指定用户(信任的小伙伴)才可运行相关系统、服务管理方面的命令;如果用户被允许使用该命令,sudo机制也会提醒用户输入其账号密码,从而存在一个缓冲的时间,可以让命令执行者脑袋清醒一下,确认无误后敲下回车。
Sudo应该是Switch User Do的简写(尚未考证),简单粗暴的翻译就是“切换用户干”,当指定sudo systemctl stop httpd命令时,事实上是以root用户的身份运行的。下面以Redha系CentOS7.6来介绍一下sudo的使用,通过visudo直接回车可看到:
图中可以看出默认有8个命令别名,每一个别名分别对应一些命令,比如PROCESS,是nice、kill、killall三个命令的别名。之所以要有别名,是因为将命令分门别类后便于后面的引用。
看懂语法,基本就可以搞定了。每个框框中注释部分说的很清楚。比如“%wheel ALL=(LL) NOPASSWD:ALL”表示wheel这个群组中的用户可以在任何主机上执行任何命令且不需要输入密码。
用户名:ds
群组: testgroup
要求:只允许testgroup群组用户执行跟networking相关的命令
步骤:
1、 [endif]命令行中输入visudo回车—编辑/etc/sudoers文件
2、 [endif]去掉“Cmnd_Alias NETWORKING…“一行的的注释
3、 加入下面一行
4、 测试
可以看到ds用户执行ping是可以的,但是执行kill命令就不行了,即使使用sudo尝试使用root身份执行也不行:
通过/var/log/secure日志文件可以看的更详细:
常用实例讲解
1 .oracle用户可以在任何地点以任何的身份执行所有命令,等同于root。
oracle ALL=(ALL) ALL
2. oracle2用户可以在任何地点以root的身份执行命令useradd(无需密码)和usermod(需要密码).
这样oracle2就可以免密码useradd,有密码(密码为oracle2的自身密码)使用userdel。
oracle2 ALL=(root) NOPASSWD:/usr/sbin/useradd, PASSWD:/usr/sbin/userdel
使用方式如下
[oracle2@centos74 ~]$ useradd test001 # 直接使用命令是不可以的。
-bash: /usr/sbin/useradd: Permission denied
[oracle2@centos74 ~]$ sudo useradd test001 # 必须加sudo
[oracle2@centos74 ~]$ id test001 # 查看添加的用户信息
uid=1031(test001) gid=1032(test001) groups=1032(test001)
3. oracle3用户只能在192.168.1.120主机远程登录并以root身份执行ifconfig eth0命令。
Cmnd_Alias NETCMND = /sbin/ifconfig eth0
oracle3 192.168.1.120 = (root) NOPASSWD:NETCMND
4. oracle4用户可以执行/usr/sbin下的所有命令除了/usr/sbin/userdel
oracle4 ALL=(ALL) /usr/sbin/,!/usr/sbin/userdel
5. oracle5用户可以cat /var/log/secure*的文件
oracle5 ALL=(ALL) /bin/cat /var/log/secure*,!/bin/cat /var/log/secure* *
Linux sudo操作免密码
sudo是以管理员权限进行操作,但是需要输入密码,如果想在用sudo时不用输入密码,需要修改 /etc/sudoers 文件。
首先需要备份一下 sudoers 文件,万一改崩了还有救。
使用 sudo visudo 命令打开, 如果失败了用 sudo vi /etc/sudoers
在最下面一行加上,下面的 username 需要改成自己的用户名:
如果要指定哪些操作不需要输入密码,需要在 NOPASSWD 后面加上指定命令:
保存退出之后,重新登录一次就可以了。
参考:
Linux 中不输入密码运行 sudo 命令的方法
新闻标题:linux命令sufo linux命令su权限不够
网页链接:http://scgulin.cn/article/doesics.html