sudo cd提示命令无法找到或无任何提示却不执行的情况

本文深入解析了sudo命令的工作原理及其与cd命令交互时的常见问题。详细解释了为什么sudo不能直接执行cd命令,以及如何通过sudo-s或sudo-i以root用户身份运行shell来解决这一问题。同时,文章还探讨了当root用户名被修改后,如何正确使用sudo切换到新的root用户。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sudo命令执行过程解析:

用sudo执行某一命令时,是在原进程(parent process)的基础上fork出来一个子进程(child process),这个子进程是以root权限执行的。然后在子进程中,执行你在sudo后面跟的命令。
在子进程中是无法调用涉及到父进程的状态的一些命令的,所以非系统内置命令会被拒绝。这就是为什么会出现command not found的提示。

cd命令解析:

cd属于bash(shell)内置命令,并不属于系统命令
[root@shvpuppet01 inventory]# whatis cd
cd [builtins]        (1)  - bash built-in commands, see bash(1)

问题一:sudo cd时,提示command not found

原因:sudo不能执行非系统命令
解决方法:
    a.sudo -s:以目标用户身份运行shell
    b.sudo -i:以目标用户身份运行登录shell

问题二:sudo cd时,无任何提示却不执行

原因:还是问题一的原因
解决方法:
    a.对要进入的目录加x权限,不要加-R参数,修改后即可进入
    b.按照问题一的解决方法处理

问题三:root的用户名修改之后,如何使用sudo切换到root

原因:
    sudo的使用语法:sudo -u username COMMAND
    当username为root时,-u root可以省略;
    当username不为root时,-u username一定要加上的;
解决方法:
    当root用户名更改时,只需要加上`-u root的新名字`即可

转载于:https://blog.51cto.com/liuzhengwei521/2320365

### 修复麒麟操作系统中 `sudo` 权限问题 在麒麟操作系统中,如果 `/etc/sudoers` 文件的权限被错误地更改为可写状态(如 `777`),这将导致 `sudo` 命令无法正常使用。以下是具体的解决方案: #### 方法一:使用 `pkexec` 恢复权限 可以利用 `pkexec` 工具以超级用户身份运行命令来修正 `/etc/sudoers` 的权限。 ```bash pkexec chmod 0440 /etc/sudoers ``` 此命令会将 `/etc/sudoers` 文件的权限设置为只允许根用户读取和执行,从而恢复其默认的安全配置[^2]。 #### 方法二:通过单用户模式修复 如果 `pkexec` 可用者系统未安装该工具,则可以通过进入单用户模式来进行修复。 1. **重启系统并进入 GRUB 菜单** - 启动过程中按下键盘上的 `Esc` `Shift` 键,直到显示 GRUB 引导菜单。 2. **编辑启动项** - 使用方向键选中默认的启动选项,按 `e` 编辑启动参数。 - 找到以 `linux16` 开头的一行,在这一行的末尾追加 `init=/bin/bash` 参数。 3. **挂载文件系统为可写入** - 系统将以单用户模式启动,并自动加载根 shell。 - 输入以下命令使文件系统变为可写: ```bash mount -o remount,rw / ``` 4. **修复 `/etc/sudoers` 权限** - 更改 `/etc/sudoers` 文件的权限为 `0440`: ```bash chmod 0440 /etc/sudoers ``` 5. **重新启动系统** - 完成以上操作后输入以下命令重启系统: ```bash exec /sbin/init ``` 此时,系统的 `sudo` 功能应已恢复正常工作[^3]。 #### 方法三:借助 Live CD/USB 进行修复 当本地系统完全无法访问时,还可以考虑使用麒麟系统的 Live CD/USB 版本引导计算机进行修复。 1. **制作 Live USB/CDDVD** - 下载最新的麒麟操作系统镜像文件,并将其刻录至 U盘光盘。 2. **从 Live USB/CDDVD 启动** - 插入准备好的介质,调整 BIOS 设置以便优先从外部设备启动。 3. **挂载受损分区** - 登陆到 Live 环境之后,打开终端窗口,确认目标磁盘位置(通常位于 `/dev/sdXn` 中)。接着创建临时目录用于挂载: ```bash mkdir /mnt/system mount /dev/sdaX /mnt/system ``` 4. **更改 Sudoers 文件权限** - 导航至挂载点下的相应路径,修改 `/etc/sudoers` 文件权限: ```bash cd /mnt/system/etc/ chmod 0440 sudoers ``` 完成这些步骤后再安全卸载硬盘并正常重启即可[^5]。 --- ### 注意事项 - 在任何情况下都建议随意改变重要系统文件(例如 `/etc/sudoers`)的权限,因为这样可能会破坏系统的安全性以及功能完整性。 - 如果确定如何操作某些高级指令,请先备份数据以防万一发生意外情况影响整个系统稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值