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
【Linux命令行su linux命令行锁屏】 例如:
那么如果用户的数量过多的时候是不是要为每个用户来创建一个条目呢,很显示这样做是不科学的 。所以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命令与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是什么意思su的全称并不是super user,而是switch user,是不是就突然明白了?是切换用户的意思 。su的一般使用方法是su或者su -,两种方法虽然只差了1个字符,但也是有比较大的差异的 。
加入了-参数,就是login-shell的方式 , 也就是说切换到另一个用户之后,当前的shell会加载对应的环境变量和各种设置;
如果没有加入-参数,就是non-login-shell的方式,也就是说当前的shell还是加载切换之前的那个用户的环境变量以及各种设置 。
如果不想因为切换到另一个用户导致自己在当前用户下的设置不可用,那么就可以用non-login-shell的方式;如果切换用户后,需要用到该用户的各种环境变量 , 那么使用login-shell方式即可 。
linux su和sudo命令的区别1、内容不同
su命令:用于切换用户,substitute英文含义“代替”的意思 。
sudo命令:为superuser do 的简写,即使用超级用户来执行命令,一般是指root用户 。
2、用法不同
su命令:不加用户名默认是切换为root用户 , 切当前目录不改变,其他环境变量不变 。
sudo命令:查看当前用户可以用sudo执行的命令都有哪些 。
3、环境不同
su命令:切换到root用户,但是并没有转到root用户家目录下,即没有改变用户的环境 。
sudo命令:是当前用户切换到root,然后以root身份执行命令 , 执行完成后,直接退回到当前用户,而这些的前提是要通过sudo的配置文件/etc/sudoers来进行授权 。
su和sudo各有优点 , 适当用于预期的用例时,两者都表现不俗 。我偏爱用su处理自己的大部分工作,因为它最适合我和我的工作流程 。
Linux下su命令怎么使用Linux su,全拼:switch user,命令用于变更为其他使用者的身份 , 除root外,需要键入使用者的密码 。
使用权限:所有使用者
语法:
su [参数] [-] [用户帐号]
参数说明:
-f或者--fast不必读启动档,仅用于csh或tcsh
-m -p或者-preserve-environment执行su时不改变环境变数
-c command或者--command=command变更为账号为USER的使用者并执行指令后再变回原来使用者
-s shell或者--shell=shell指定要执行的shell,预设值为/etc/passwd内的该使用者shell
-help 显示说明文件
--version 显示版本资讯
-
-l或者--login这个参数加了之后,就好像是重新login为该使用者一样,大部分环境变数都是以该使用者为主 , 并且工作目录也会改变 , 如果没有指定USER,内定是root
USER 欲变更的使用者账号
ARG 传入新的shell参数
关于Linux命令行su和linux命令行锁屏的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- 实体经济如何营销,金融如何支持实体经济
- 如何看钉钉直播的评论,钉钉直播怎样看
- linux下测网速的命令 linux 测试网络
- 手机中_是什么意思,手机+是什么意思
- 原神算休闲游戏吗,原神算网络游戏吗
- 快手直播中国美食,快手直播中国美食节目
- c语言子函数型参数用法 c语言子函数变量
- html中div标签的详解,html中div标签里的内容怎么居中
- 鸿蒙3.0荣耀play系列,荣耀play鸿蒙升级在第几批