Ubuntu: Command: 设置root密码

本文详细介绍了如何在Ubuntu系统中设置root超级管理员账户密码的方法。通过使用sudo命令结合passwd进行密码设置,确保了系统的安全性。文章还提供了设置过程中的具体步骤及验证方式。

Ubuntu设置root密码

//终端输入
sudo passwd root,
//输入当前用户的密码
[sudo] password for landry:

//当前用户密码验证通过后
//输入需要设置的root超级管理员账户密码
Enter new UNIX password:
//验证输入的密码
Retype new UNIX password:

//出现passwd: password updated successfully字样,表示超级管理员root账户密码设置成功

//验证:输入su,后输入超级管理员账户的密码,验证通过则成功切换到root账户root@DESKTOP-SUKSNN6:/home/landry#
<think>好的,用户现在遇到了使用Linux的su命令切换用户时出现的两个错误:“Command is not permitted”和“u: command not found”。我需要结合他们提供的引用和之前的回答来找出解决方案。 首先,引用[3]提到,从root切换到其他用户时出现“Command is not permitted”,这可能与CentOS 8的安全策略有关,比如pam的安全模块配置或者sudoers的设置。用户可能需要检查/etc/pam.d/su文件,或者使用sudosu代替su,这可能是由于安全策略限制直接使用su命令。 然后,引用[1]中的问题是在切换用户时出现“-bash: et: command not found”,这可能是因为用户的环境变量配置错误,比如在.bashrc或.profile中有拼写错误,比如将“export”错写成“et”。这时候需要检查用户的环境变量文件,修正拼写错误,并重新加载配置。 关于“u: command not found”的错误,看起来像用户在输入命令时有拼写错误,比如su后面缺少了用户名,或者用户输入了“su -”但环境变量中有错误。例如,可能用户输入了“su -”而没有指定用户名,导致系统尝试执行某个错误命令。另外,也可能是在某个配置文件中误输入了“u”作为命令,导致切换用户时触发这个错误。 现在需要综合这些信息。首先处理“Command is not permitted”的问题,这可能涉及到PAM配置或sudo权限。用户可能需要修改/etc/pam.d/su文件,允许特定用户切换,或者将用户添加到wheel组,并配置sudoers文件。如果系统使用了新的安全策略,如CentOS 8,可能需要使用sudosu命令,或者调整安全策略。 接着处理“u: command not found”,这需要检查用户的环境配置文件,如.bashrc、.bash_profile、/etc/profile等,是否有拼写错误,比如et代替export,或者误输入的“u”命令。例如,在安装Oracle时可能修改了这些文件,导致加载时出错。用户需要使用文本编辑器检查这些文件,修正错误,并source使其生效。 此外,引用[2]中提到权限问题,修改/etc/profile需要root权限,用户可能在使用su时没有正确切换到root,或者在普通用户下尝试修改系统文件导致权限不足,这也可能导致环境变量配置错误,从而引发各种命令找不到的问题。 总结起来,解决方案应该包括以下几个步骤: 1. 处理“Command is not permitted”错误: - 检查PAM配置,确保允许用户切换。 - 配置sudoers文件,允许用户使用sudo su。 - 使用sudosu命令代替su,如果系统策略限制。 2. 处理“u: command not found”错误: - 检查用户的环境变量文件,修正拼写错误。 - 确保su命令的正确使用方式,如su - username。 - 重新加载配置文件或重启shell。 3. 验证和测试: - 确保修改后的配置生效。 - 测试切换用户是否成功,错误是否消失。 需要提醒用户注意权限问题,修改系统文件时使用sudoroot账户,避免权限不足导致配置失败。同时,检查是否有拼写错误,尤其是在环境变量文件中,这通常是导致“command not found”的主要原因。</think>### 逐步解决方案:Linux `su`命令切换用户报错处理 --- #### ▍ 错误类型区分与核心原因 1. **`Command is not permitted`** - **直接原因**:系统安全策略限制(如SELinux、PAM模块、sudoers配置)[^3] - **典型场景**:从root用户切换普通用户时触发安全规则 - **关联现象**:CentOS 8+、Ubuntu 22.04等新版本系统常见 2. **`u: command not found`** - **直接原因**:用户环境变量文件(如`.bashrc`、`.profile`)存在语法错误或命令别名冲突[^1] - **典型场景**:安装Oracle等软件后环境变量被错误修改 --- #### ▍ 解决方案实施步骤 --- ##### 一、修复`Command is not permitted`错误 **▶ 方案1:调整PAM安全策略(推荐)** ```bash # 修改PAM配置文件 sudo vim /etc/pam.d/su # 注释或删除以下行(约第15行): # auth required pam_wheel.so use_uid → 改为: auth sufficient pam_wheel.so trust use_uid ``` ```bash # 将用户加入wheel组 sudo usermod -aG wheel <你的用户名> ``` **▶ 方案2:通过sudoers授权** ```bash # 编辑sudoers文件 sudo visudo # 添加以下配置(允许特定用户无需密码执行su): <你的用户名> ALL=(ALL) NOPASSWD: /bin/su ``` **▶ 方案3:使用安全策略兼容命令** ```bash # 替代直接使用su sudo su - <目标用户> # 通过sudo触发特权验证 ``` --- ##### 二、修复`u: command not found`错误 **▶ 步骤1:检查环境变量文件** ```bash # 排查用户配置文件 grep -rnw '/home/<用户名>' -e 'u:' # 检查.bashrc/.profile中的错误命令 grep -rnw '/etc' -e 'u:' # 检查系统级配置 # 典型错误案例: # 错误行:u: export PATH=... → 应为:export PATH=... ``` **▶ 步骤2:修复Oracle环境配置** ```bash # 定位Oracle安装脚本的残留错误 sudo vim /home/oracle/.bash_profile # 查找并修正以下典型错误: # 错误:et ORACLE_HOME=... → 修正为:export ORACLE_HOME=...[^1] ``` **▶ 步骤3:重载环境配置** ```bash # 普通用户环境 source ~/.bashrc source ~/.bash_profile # 系统级配置(谨慎操作) sudo sysctl --system ``` --- ##### 三、深度验证与防御配置 **▶ 验证用户切换功能** ```bash # 测试从root切换普通用户 sudo su - <目标用户> # 带环境切换 whoami # 验证用户身份 env | grep PATH # 检查环境变量完整性 ``` **▶ 配置环境变量保护** ```bash # 防止配置文件被误修改 sudo chattr +i /etc/profile # 加锁系统级配置文件(慎用!) chmod 644 ~/.bashrc # 设置用户文件只读 ``` **▶ SELinux策略调试(可选)** ```bash # 临时禁用SELinux调试 sudo setenforce 0 # 重现问题后查看日志 sudo ausearch -m AVC -ts recent # 分析安全事件 ``` --- #### ▍ 错误预防建议 1. **环境变量修改规范** - 修改前备份:`cp ~/.bashrc ~/.bashrc.bak` - 使用`export`关键字时避免拼写错误 2. **特权操作最佳实践** - 优先使用`sudo -i`替代直接`su` - 通过`visudo`管理sudo权限而非直接编辑`/etc/sudoers` 3. **系统兼容性检查** - CentOS 8+/RHEL 9需特别注意`pam_wheel.so`模块配置 - Ubuntu系统检查`/etc/pam.d/common-auth`中的策略 [^1]: Oracle安装过程中常因环境变量配置错误导致`su -`异常,需重点检查`.bash_profile`中的`export`命令拼写 [^3]: CentOS 8+默认增强的PAM策略会阻止root直接切换用户,建议通过sudo机制绕过限制 [^2]: 系统级配置文件(如`/etc/profile`)的修改必须使用root权限,普通用户直接编辑会导致权限错误
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值