su、su -、sudo 之间的区别

近日有一事一直困扰着我,作为小白之前使用 CentOS 系统,一直使用 root 账户管理和配置服务器,没有使用过标准账户。最近开始学习 Debian 系统使用标准用户登录到系统,随后使用 su 切换到 root 执行命令时提示未找到命令。在命令前加入 sudo 则可以顺利执行。按照我的理解使用 su 命令已经切换到了 root 账户,理应是有 root 权限执行命令的却提示未找到命令。

经过了解原来这并非我想的那么简单,其中还有玄机。其实 su、su -、sudo 之间是区别,了解了之间的区别就明白我的想法有多单纯,下面就是这个几个命令的区别;

su 切换到用户,不改变当前环境变量,不加指定用户是默认切到 root;简单说当前用户是标准用户 devops 使用 su root 切换到 root 用户,其实系统的环境变量还是标准用户 devops 的环境变量;

su - 切换到指定用户环境变量一并切换,简单说当前用户是标准用户 devop 使用 su - root 切换到 root 用户,环境变量也一起切换到 root 用户的环境变量;

sudo 表示获取临时的 root 权限和 root 环境变量;当前用户切换到 root(或其他指定切换到的用户),以root(或其他指定的切换到的用户)身份执行命令,执行完成后,直接退回到当前用户,而这些的前提是要通过 sudo 的配置文件 /etc/sudoers 来进行授权。

相关推荐
python ERROR: Command errored out with exit status 1:
Windows Server 2016 搭建 SMB 共享文件
Windows Server 2019 域环境搭建 SMB 共享文件服务
Parallels Desktop 15.1.3