Linux下 su命令与su - 命令有什么区别?Linux下 su命令与su - 命令的区别:
一、切换root身份不同
1、su命令:su只是切换了root身份,但Shell环境仍然是普通用户的Shell;而su -连用户和Shell环境一起切换成root身份了 。只有切换了Shell环境才不会出现PATH环境变量错误,报command not found的错误 。
2、su - 命令:su切换成root用户以后,pwd一下,发现工作目录仍然是普通用户的工作目录;而用su -命令切换以后,工作目录变成root的工作目录了 。
二、采用su deploy命令后,取目标用户不同
1、su命令:su不会读取目标用户的环境配置文件,如图 。
2、su - 命令:su - 读取目标用户的环境配置文件,如图 。
综上总结:有“-”和无“-”各自的环境变量不同 。
三、service命令
1、su命令:使用 su root 切换到root用户后 , 不可以使用service命令;
2、su - 命令:使用 su - 后 , 就可以使用service命令了 。
四、用echo $PATH命令后,环境量不同
1、su命令:环境量变为usr 。
2、su - 命令:环境量变为oracle 。
Linux入门系列——su和sudo su和sudo这两个命令是Linux运维必须要会的,通常在生产环境中都是使用普通帐号来登录,再使用su或sudo来执行一些管理命令 。
su:run a shell with substitute user and group ids
-,-l,--login 切换后使用指定用户的的shell 。
-c,--command=COMMAND 可以在不切换当前shell的情况下,用指定的用户来执行一个命令;
如果在su的时候没有加”-“或“-l”或“--login”那么默认的会使用 当前用户 的shell来执行 ;
sudo的配置文件是: /etc/sudoers , 该文件可以定义哪个用户可以在哪个机器上以哪个用户的身份来执行哪些命令;
在配置sudo时必须使用 visudo 来编辑配置文件,因为使用visudo可以检查修改后的文件的语法是否正确;
可以将上面的配置行分成四部分:part1 part2 part3 part4
例如:
那么如果用户的数量过多的时候是不是要为每个用户来创建一个条目呢,很显示这样做是不科学的 。所以sudo就引入了别名的概念 , 其实和组也差不多;
alias定义的语法:
要注意的是,这个Alias的名称一定要大写;
user1是一个用户,user2是一个组,所以user2的前面要加上%
可以使用主机名,IP地址,网段(网段的掩码可以写成255.255.255.0,也可以写成/24)
命令必须使用绝对路径 。如果只指定了一个目录,那么用户就可以执行该目录下的所有的文件;上面的“=”右边的都可以使用“!”来取反 。表示除了xxx以外;
例子 :请允许user1,user2,user3在192.168.20.44和192.168.10.0/24网段的机器上使用sudo切换到root用户来执行useradd和setup命令;
然后就可以使用user1,user2,user3这三个用户去测试了;
注意:当用户第一次执行sudo命令的时候是需要用户输入自己的密码的 。当第一次输入正确后,这个密码就会被缓存5分钟,在5分钟内用户再次使用sudo来切换身份执行命令的时候就不需要再次输入自己的密码 。
这样呢有些时候会有一个安全隐患,所以为了去掉这个5分钟 , 可以在使用sudo命令的时候加上“-k”参数,这样用户在每次执行sudo命令的时候都会让用户输入自己的密码 。
如果想让某个用户在执行sudo的时候不需要输入自己的密码,那么可以在命令的前面添加NOPASSWD 。/etc/sudoers的内容如下:
这样的话,user1,user2,user3这三个用户在执行指定的命令的时候就不需要输入自己的密码了 。
如果其中的命令有的需要输入密码,有的不需要输入密码的话,那就把PASSWD:写在那些命令的前面 。或是把NOPASSWD:写在最后一个命令中;
例子:让用户user4使用passwd来管理用户的密码,但是不能给root用户设置密码:
注意:如果最后不加上!/usr/bin/passwd root的话 , 那么会有很大的漏洞,user4可以修改root用户的密码;当添加上后,user4再次执行sudo passwd root的时候就会提示:
linux su和sudo命令的区别su
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没有su命令了怎么切换账号su并不是真正地切换用户,它只是改变身份的一个命令而已,你可以把它当做一种嵌套,当你以root身份执行su yph命令时 , 下面的命令便会以yph用户的身份执行,但是值得注意的一点是当前的环境变量、工作目录等全都没有改变 , 也就是说仍在root使用的环境变量中,此时执行pwd查看当前工作目录应该会输出“/root”,当再以yph身份执行su - root命令后,你便又是以root身份执行命令了,可是此时的情况应该是:
root环境/yph身份/root身份
即当你输入logout时便会返回到:“/root环境/ypt身份”下,在此环境再输入logout则可能会显示“bash: logout: not login shell: use `exit'”,即当前yph用户所用的shell中没有logout,因为logout命令需要以root身份执行,此时正确的做法是执行exit命令,便会到退出到root下 , 即为刚进入root用户时的状态
su在Fedora上有的很多,你只要知道两个就可以了 。
1.su
可以让你从普通账户切换到root账户
【linux没有su命令 linux用户没有su权限】2.su -c '命令'
可以以root身分执行命令
linux没有su命令的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux用户没有su权限、linux没有su命令的信息别忘了在本站进行查找喔 。
推荐阅读
- net开发工程师开发项目描述,net开发项目例子
- 360极速打开HTML5进行拍照,360极速浏览器如何打开摄像头
- jquery获取设置div宽度和高度,jquery获取div的css值
- oracle如何打开服务 如何开启oracle数据库服务
- 制造业erp管理系统k3,制造业erp系统软件有哪些
- 能连招的单机游戏,可以连招的游戏
- 苹果4有什么赛车游戏下载,苹果有哪些赛车游戏
- php更新数据表 php修改数据表内容
- sap用日语,sap如何修改语言为日语