sudo命令和root用户直接执行的区别

了解sudo如何帮助用户在获得root权限的同时保留个人环境变量,避免系统管理员间的配置冲突。

sudo可以用用户的环境,也就是获得root权限时仍然使用用户自己的环境变量
例如,假如我在用户pansz环境中为vim配好了一套很习惯的配置,直接用root的话,那么vim就使用root用户的环境了,我为pansz用户定制的屌炸天的插件都没有了,vim成了原始配置。而用sudo则可以保持用户的环境
同理,当一个主机有多个管理员时,每个人可能都不喜欢别人给root环境中指定的配置,可能导致root用户的配置文件被改来改去,直至发生系统管理员之间的恶性冲突流血事件(逃)。|
有了sudo之后,每个人在root权限下都可以使用自己用户的环境变量,就可以只用定义自己用户的环境不修改root用户的配置文件,从而互相不影响了。

sudo指令
功能:以root的身份执行命令
语法:sudo 指令
用户:被root加入『/etc/sudoers』文件中的用户
1.root的密码除了root本人知道外,不需被其他需要用到root权限用户知道,因为使用sudo时,要求输入的密码是『该用户自己的密码』
2.把所有可执行sudo指令的用户都规范在『/etc/sudoers』这个文件中,root可以很容易地掌控整个系统。

执行sudo su -成为root的用户,和root用户的区别:普通用户使用sudo 来执行只有root才能执行权限的命令,跟用root用户执行是不一样的,因为这时候他用的还是普通用户的环境变量。用su -成root的用户还是有些环境变量是和root登陆是不一样的。另外,它们的uid也是不一样,只有euid是相同的。

PS:修改root密码
请先用该建立的第一个用户登入,使用 sudo passwd root 即可修改 root 密码. ps: 若要输入密码,该密码就是执行sudo该用户的密码。

在Ubuntu系统中,如果用户无法使用 `sudo` 命令切换到 `root` 用户组,这通常与限配置或用户所属组的设置有关。以下是可能导致此问题的常见原因及对应的解决方法。 ### 1. 用户未被添加到 `sudo` 组 Ubuntu 系统默认将 `sudo` 限分配给 `sudo` 组的成员。如果用户不在 `sudo` 组中,则无法使用 `sudo` 命令。可以通过以下步骤解决: - **检查用户所属组** 使用 `id` 命令查看用户是否在 `sudo` 组中: ```bash id username ``` 如果输出中没有 `sudo` 组,则需要将用户添加到该组。 - **将用户添加到 `sudo` 组** 使用以下命令用户添加到 `sudo` 组: ```bash usermod -aG sudo username ``` 添加完成后,用户需要重新登录以使更改生效。 ### 2. `/etc/sudoers` 文件配置错误 如果用户已经添加到 `sudo` 组,但仍然无法使用 `sudo` 命令,则可能是 `/etc/sudoers` 文件配置不正确。 - **检查 `/etc/sudoers` 文件** 使用 `visudo` 命令编辑 `/etc/sudoers` 文件,确保以下行存在: ```bash %sudo ALL=(ALL:ALL) ALL ``` 这行配置允许 `sudo` 组的所有成员使用 `sudo` 命令。 - **修复文件限问题** 如果 `/etc/sudoers` 文件的限被修改,可能会导致 `sudo` 命令无法正常工作。可以使用以下命令恢复默认限: ```bash chmod 440 /etc/sudoers ``` ### 3. root 用户被锁定 Ubuntu 系统默认情况下,`root` 用户是被锁定的,这意味着无法直接使用 `su` 命令切换到 `root` 用户。 - **解锁 `root` 用户** 如果需要直接使用 `root` 用户,可以通过以下命令设置 `root` 用户的密码: ```bash sudo passwd root ``` 设置完成后,可以使用 `su` 命令切换到 `root` 用户: ```bash su - ``` ### 4. 用户限未正确配置 如果用户需要执行特定的命令而无需完整的 `root` 限,可以通过 `/etc/sudoers` 文件进行更细粒度的限配置。 - **编辑 `/etc/sudoers` 文件** 使用 `visudo` 命令添加特定限。例如,允许用户 `username` 无需密码即可执行特定命令: ```bash username ALL=(ALL) NOPASSWD: /path/to/command ``` ### 5. 检查用户环境配置 某些情况下,用户的环境变量或 shell 配置可能会影响 `sudo` 命令执行。 - **检查环境变量** 使用以下命令检查环境变量是否影响 `sudo`: ```bash env | grep -i sudo ``` 如果发现异常的环境变量,可以尝试清除它们或使用 `sudo -i` 切换到 `root` 的环境。 - **使用 `sudo -i` 或 `sudo su` 切换到 `root` 环境** 如果需要临时切换到 `root` 用户的环境,可以使用以下命令: ```bash sudo -i ``` 或者: ```bash sudo su ``` ### 6. 系统更新或修复 如果以上方法均无效,可能是系统文件损坏或软件包缺失。 - **更新系统并修复依赖** 使用以下命令更新系统并修复依赖关系: ```bash sudo apt update && sudo apt upgrade sudo apt install --reinstall sudo ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值