Linux 命令 su 和 sudo 区别

编程入门 行业动态 更新时间:2024-10-17 22:18:05

Linux <a href=https://www.elefans.com/category/jswz/34/1771323.html style=命令 su 和 sudo 区别"/>

Linux 命令 su 和 sudo 区别

Linux 命令 su 和 sudo 区别

1、su 命令介绍及其主要用法

suswtch 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 区别

本文发布于:2023-07-28 21:39:47,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1325305.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:命令   区别   Linux   sudo   su

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!