ubuntu下sudo cd以及sudo ls /root/*报错的问题

参考至https://blog.youkuaiyun.com/xiaotengyi2012/article/details/6953494

问题描述

:~# sudo cd /root
sudo:cd:command not found
:~# sudo ls /root/*
no such file of directory
:~# sudo ls /root (成功运行)

原因解释

引用一段比较好的英文解释
cd is a shell built-in command. It cannot be run in a child process. The child process simply cannot change the working directory of its parent shell process.

Redirection also does not work with sudo for the same reason (redirection being a shell “thing”)

注:sudo 是一种程序,用于提升用户的权限,在linux中输入sodu就是调用这个程序提升权限,shell是一个命令解析器,sudo cd是错误的,因为cd是shell内置的,不是系统里面的,sudo可以运行系统带的命令,但无法用系统中一个软件中的命令。

解决方法

获取root权限:
+ su root
+ sudo -s
退出:
- exit
- ctrl+D

<think>嗯,用户遇到了在运行APT更新时出现“No system certificates available. Try installing ca-certificates”的错误,以及软件源配置的问题。我需要根据之前的对话和用户提供的引用信息,给出解决方案。 首先,用户之前的问题是关于解决APT证书和仓库错误,现在他们再次遇到了类似的问题,所以可能需要更详细的步骤或补充方法。回顾之前的回答,已经提到了安装ca-certificates、更新证书、检查源配置等方法。但用户可能需要更深入的解释或额外的步骤。 用户提供的引用中提到了mkcert工具,这个工具可以生成本地信任的证书,但用户可能没有直接提到使用它,不过如果系统证书问题无法解决,或许可以考虑手动生成证书。但根据用户当前的错误,主要还是系统证书缺失,所以应该优先修复系统证书。 接下来需要检查用户提到的错误信息:“No system certificates available”和仓库没有Release文件的问题。之前的回答已经覆盖了主要的解决步骤,可能需要强调关键步骤,比如重新安装ca-certificates,或者手动配置证书路径。 另外,用户可能遇到的是因为使用了微软的软件源,如Edge或VSCode的仓库,这些仓库可能需要特定的配置。需要确保软件源URL是否正确,特别是系统版本是否匹配,比如Ubuntu的版本是否正确。 还有,用户可能没有提到是否在代理环境下,如果是企业网络,可能需要配置代理或安装内部CA证书。这点在之前的回答中也提到过,可能需要提醒用户检查网络设置。 可能还需要检查是否有拼写错误或格式错误的软件源文件,比如用户提供的错误信息中有一个截断的URL:“http://packages.microsoft.com/repos/c'http://packages.microsoft.com/repos/code stable Release'”,这可能是配置文件中存在语法错误,导致APT无法正确解析。需要指导用户检查并修正这些文件。 此外,用户可能已经尝试过一些步骤但未成功,需要提供更详细的诊断命令,例如使用curl测试仓库URL的可访问性,或者检查证书路径是否正确。 最后,确保回答结构清晰,分步骤说明,并包含相关问题,帮助用户进一步排查问题。</think>### 分步解决APT证书缺失及软件源配置问题 以下方案整合了系统证书修复、软件源验证和关键配置调整,针对`apt update`报错`No system certificates available`及仓库`Release`文件缺失问题: --- #### 一、核心证书修复(解决SSL验证失败) 1. **强制重装证书包** ```bash sudo apt remove --purge ca-certificates -y sudo apt install ca-certificates --reinstall -y ``` 此操作会重置所有系统CA证书到初始状态[^1] 2. **手动刷新证书链** ```bash sudo update-ca-certificates --verbose # 显示详细加载过程 ls -l /etc/ssl/certs | grep -c .pem # 验证证书数量(正常应有200+) ``` 3. **环境变量覆盖(临时)** ```bash export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt export CURL_CA_BUNDLE=$SSL_CERT_FILE ``` 若系统路径异常时使用(可写入`~/.bashrc`永久生效) --- #### 二、软件源深度修复(针对微软仓库) 1. **检查仓库文件语法** ```bash sudo grep -rhE ^deb /etc/apt/sources.list.d/ # 显示所有启用仓库 ``` 特别注意微软源格式应类似: ```bash deb [arch=amd64] https://packages.microsoft.com/ubuntu/$(lsb_release -rs)/prod $(lsb_release -cs) main ``` 2. **手动验证仓库可达性** ```bash curl -vI https://packages.microsoft.com/repos/edge/dists/stable/InRelease ``` 观察输出中`SSL certificate verify ok`提示 3. **动态生成正确源地址** ```bash echo "deb [arch=amd64] https://packages.microsoft.com/ubuntu/$(lsb_release -rs)/prod $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/microsoft-official.list ``` --- #### 三、综合修复流程 ```bash # 1. 清理旧配置 sudo rm -rf /etc/apt/sources.list.d/microsoft*.list sudo apt clean # 2. 重建证书体系 sudo apt install --reinstall ca-certificates openssl -y sudo update-ca-certificates --fresh # 3. 写入新配置 sudo tee /etc/apt/sources.list.d/microsoft-prod.list <<EOF deb [arch=amd64] https://packages.microsoft.com/ubuntu/$(lsb_release -rs)/prod $(lsb_release -cs) main EOF # 4. 强制刷新 sudo apt update -o Acquire::https::Verify-Peer=true -o Acquire::https::Verify-Host=true ``` --- #### 四、高级调试技巧 1. **查看APT底层通信** ```bash sudo strace -e trace=openat -o apt_debug.log apt update grep 'ca-cert' apt_debug.log # 跟踪证书加载过程 ``` 2. **使用低层级工具验证** ```bash openssl s_client -connect packages.microsoft.com:443 -showcerts 2>/dev/null | openssl x509 -text ``` 检查证书链是否包含`DST Root CA X3`等根证书 3. **降级测试法** ```bash docker run --rm -it ubuntu:20.04 apt update # 在纯净环境中测试是否特定系统问题 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值