linux命令行学习(32):用sudo命令以不同用户身份执行命令

sudo命令在很多方面都类似于su命令,但是它另外还有一些重要的功能。

一、命令格式

sudo [-bhHpV][-s ][-u <用户>][指令]

sudo [-klv]

参数

  -b  在后台执行指令。

  -h  显示帮助。

  -H  将HOME环境变量设为新身份的HOME环境变量。

  -k  结束密码的有效期限,也就是下次再执行sudo时便需要输入密码。

  -l  列出目前用户可执行与无法执行的指令。

  -p  改变询问密码的提示符号。

  -s  执行指定的shell。

  -u  <用户>  以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份。

  -v  延长密码有效期限5分钟。

  -V  显示版本信息。

  -S  从标准输入流替代终端来获取密码

最简单的格式是:sudo <命令>

这是以超级用户身份执行指定的命令。

注意,与su命令不一样,sudo后面的命令不需要加单引号。

加-u选项,以其他普通用户身份执行命令。

在第一次以某一用户身份执行命令时,需要输入密码,以后不需要输入密码。注意,输入的是自己的密码。这与su命令不一样,在那里要求输入对方的密码。

在输入sudo命令后,系统将提示输入用户自己的密码(而不是超级用户或指定用户的密码),而且一旦认证通过,指定的命令就被执行。

su命令和sudo命令之间的一个重要区别在于sudo命令并不需要启动一 个新的shell环境,而且也不需要加载另一个用户的运行环境。这意味着,使用sudo命令的时候并不需要用单引号把命令行引起来。

二、is not in the sudoer file问题怎么解决?

在执行sudo时,可能会出现当前用户名is not in the sudoers file的提示。这样就无法执行sudo命令。

这时,首先切换到root用户,执行下面命令:

sudo visudo

这个命令会打开一个文本文件,在打开的文件的最后一行添加:

user ALL=(ALL) ALL

其中user是当前用户名。存盘后退出。

这个文件就是sudoers文件。我们将user加进了这个文件,就可以在user中执行sudo命令了。

三、查看sudo命令可以授予的权限

要想知道sudo命令可以授予哪些权限,可以使用-l选项来查看:

$sudo -l

你可能感兴趣的:(linux命令行学习(32):用sudo命令以不同用户身份执行命令)