命令 su 和 sudo 区别"/>
Linux 命令 su 和 sudo 区别
Linux 命令 su 和 sudo 区别
1、su 命令介绍及其主要用法
su
是 swtch user
,顾名思义:就是切换用户
1、参数
su <user_name>
或者 su - <user_name>
-
是一种login-shell
的方式,切换另一个用户之后,会加入对应的环境变量和各种设置。- 不加
-
,是一种 no-login-shell, 当前的shell还是加载切换之前的用户的。
2、切换到指定用户
su
后面不跟 <user_name> 默认切换到 root用户
3、 -c参数
前面的方法中,我们都是先切换到另一个用户(root 或者 test_user),在哪个用户的状态下执行命令,最后输入 exit 返回当前 ubuntu 用户。
还有一种方式是:不需要先切换用户再执行命令,可以直接在当前用户下,以另一个用户的方式执行命令,执行结束后就返回当前用户。这就得用到 -c 参数。
具体使用方法:
su - -c "指令串" # 以 root 用户以及对应的环境变量来执行命令
这种执行方式和后面要介绍的 sudo 很像,都是临时申请一下 root 用户的权限。但还是有差异,我们接着往后看。
2、sudo 命令及其主要用法
sudo
英文全称是 super user do
以超级用户的方式执行命令。
输入(root 用户):
root@VM-0-14-ubuntu:~# visudo
输出:
# User privilege specification
root ALL=(ALL:ALL) ALL# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
ubuntu ALL=(ALL:ALL) NOPASSWD: ALL
解释下每一行的格式:
- 第一个表示用户名,如 root 、ubuntu 等;
- 接下来等号左边的 ALL 表示允许从任何主机登录当前的用户账户;
- 等号右边的 ALL 表示:这一行行首对一个的用户可以切换到系统中任何一个其它用户;
- 行尾的 ALL 表示:当前行首的用户,能以 root 用户的身份下达什么命令,ALL 表示可以下达任何命令。
我们还注意到 ubuntu 对应的那一行有个 NOPASSWD 关键字,这就是表明 ubuntu 这个用户在请求 sudo 时不需要输入密码,到这里就解释了前面的问题。
同时我们注意到,这个文件里并没有 test_user 对应的行,这也就解释了为什么 test_user 无法使用 sudo 命令。
接下来,我们尝试将 test_user 添加到 /etc/sudoers 文件中,使 test_user 也能使用 sudo 命令。我们在最后一行添加:
test_user ALL=(ALL:ALL) ALL # test_user
使用 sudo 需要提供 test_user 的密码
更多推荐
Linux 命令 su 和 sudo 区别
发布评论