sudo命令

个人知识库

Author: 刘杰文, Date: Unknown, Categories: , Tags:

sudo命令

links:

  1. https://www.runoob.com/linux/linux-comm-sudo.html
  2. https://zhuanlan.zhihu.com/p/137332644

Mine

要明白什么是sudo,首先要明白什么是susudo的意义和目的类似于”su do”,第一个为名词,第二个为动词,含义为“超级管理员做……”,也就是使用管理员权限做某事。

su即管理员的意思,如果我们在终端中输入su并回车,系统会请求我们输入root用户密码,也就是超级管理员密码。此文我们约定root账户就是超级管理员。输入root账户的密码后,我们发现终端的上下文变了,上下方向键、history命令结果都不一样了。如果系统正常,没有被你一不小心乱删了什么系统文件的话,那么行起始提示字符串就变成了[root@localhost ~]$,类似这样。正常来说,假设使用一个账户名为user1,那么提示应为:[user1@localhost ~]$。其中localhost指当前计算机名,如果登入自其他计算机,例如172.168.1.46localhost会被替换成172。这些在可视化安装过程都可以设置的。如果在注册账户的时候没有勾选管理员权限,那么将不在wheel用户组中,也无法使用sudo命令。

不过不同于使用su命令,使用sudo命令并不会改变当前上下文,也不会改变登入的用户。因为能使用sudo命令的用户,其本身已经是管理员了,只是正常情况下不开放管理员权限,这样也避免的不少误操作。这也是为什么说sudo命令比su命令安全。使用sudo命令需要输入当前管理员账号的密码以确认其后的命令使用管理员权限执行,并通常在一段时间后失效、需要重新验证密码。这个时间一般是15分钟,在这15分钟内再次使用sudo命令不需要验证密码。当然,也可以附上-k选项选择指授权这一次,这样下一次使用sudo命令就还是需要确认密码(这不是默认开启的选项)。

需要注意的是,sudo命令后面可以直接附上要执行的命令,例如:sudo vi text.txt。但是su命令一般不可以,只能先登入。因此,sudo命令就是使用当前管理员账户的管理员权限执行后续命令,像是一个修饰符;而su命令更像一条单独的命令,需要单独执行,像是专门用于登入到root账户用的。

在使用后,使用sudo命令的不用考虑什么退出,只要没加sudo来“修饰”命令,就不会试图使用管理员权限;而su命令是登入到了别的账户,典型的是root账户,因此确定不再使用后应当使用exit命令退出登录,这样就会回到原来的账户。

再强调一遍!!只有管理员账户能执行sudo,普通账户不行!使用sudo修饰命令,会赋予管理员权限,但是还是当前(管理员)账户的,账户不会变,而su会改变账户。

题外话,如果要以别的用户的身份执行命令,应当使用su命令登入到其他账户,然后在那个上下文环境中执行,不加su,不加sudo。详见su命令的用法。

本篇文章为何写得这么详细呢?因为我刚开始接触CentOS的时候甚至没开管理员权限给账户,折腾了好久。现在写的这份,足够那时的我理解了。这篇文章,完全是写给小白玩家、Linux萌新,以及Linux“云玩”:sweat_smile:。

1

参数说明

2