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