Ubuntu Linux中的两个命令:visudo以及update-alternatives

本文介绍了Ubuntu系统中sudoers文件的重要性及权限修正方法,并详细解释了如何通过visudo命令来安全地修改sudoers文件。此外,还提供了启用root用户的方法及调整grub启动菜单显示时间的步骤。

现在Ubuntu下将root帐号禁用了,所以需要超级用户权限执行的命令必须借助于sudo命令,而/etc/sudoers就是该命令的配置文件,但是该配置文件是0440,任何修改其权限的结果都会使sudo命令无法执行出现如“/etc/sudoers is mode 0640, should be 0440”的问题。此时只能通过进入Ubuntu恢复模式,或者通过desktop版本的启动盘来进入使用试用的状态后Mount磁盘再用root权限去吧sudoers的状态改回0440才行。因此对visudoers的修改——如使某用户成为超级用户,只能通过专门的visudo命令来进行。visudo是调用缺省的editor来进行修改的。


update-alternatives则是在系统对某个功能有多个软件时时,设置这些软件的缺省调用,例如editor。它的原理是在/usr/bin中建立一个link,指向/etc/alternatives中的一个文件,而些文件又是一个link,指向当前使用的命令。具体命令大家可以从网上查,这里不再赘述,具体例子可以参见前面http://blog.youkuaiyun.com/MagicAlbert/archive/2011/05/12/6414565.aspx的《ubuntu 下的java 环境的配置、简单的编译与运行》。


PS:

1.启用root用户

 如果想启用root用户,则最简单的办法是用“sudo passwd root”来修改root的密码即可。


2.启动grub菜单

缺省的情况下grub菜单是隐藏的,因此为了确保能够用Shift打开grub菜单,需要:

      0、/etc/init.d/gdm中的第28行,确定定义的是shift键;

      1、你需要修改/etc/default/grub其中的第5行:sudo gedit /etc/default/grubGRUB_HIDDEN_TIMEOUT=0(默认是0,修要修改成大于0的值,比如10)保存后退出!

      2、再执行:sudo update-grub3、然后重启后在开机时按一下shift键就可以看到grub菜单了!

     为了出现紧急情况下能够进入grub菜单,最好安装完Ubuntu后就取消对grub菜单的隐藏。

<think>我们面对的问题是:在Linux系统中执行`sudo update-ca-certificates`和`sudo apt-get update`命令时提示找不到命令。这通常是因为系统缺少必要的软件包或环境变量配置不正确。以下将逐步分析并提供解决方案。 ### 问题分析 1. **`update-ca-certificates`命令缺失**:该命令由`ca-certificates`软件包提供,如果未安装该包,则无法使用此命令[^1][^2]。 2. **`apt-get`命令缺失**:这通常发生在最小化安装的系统或系统环境损坏的情况下,需要修复`apt`相关包[^4]。 ### 解决方案 #### 步骤1: 修复基础命令环境 如果`apt-get`命令本身不可用,需要先修复基本包管理工具: ```bash # 尝试使用apt命令(如果可用) sudo apt update sudo apt install --reinstall apt ca-certificates -y ``` 如果`apt`也不可用,则需手动下载安装包(以Ubuntu为例): 1. 从其他正常系统或官方仓库下载以下依赖包: - `apt` - `libapt-pkg-dev` - `apt-transport-https` 2. 使用`dpkg`手动安装: ```bash sudo dpkg -i apt_*.deb libapt-pkg*.deb apt-transport-https*.deb sudo apt-get install -f # 修复依赖 ``` #### 步骤2: 安装`ca-certificates` ```bash sudo apt-get update # 更新软件源列表 sudo apt-get install ca-certificates -y # 安装证书管理包 ``` 安装后验证命令路径: ```bash which update-ca-certificates # 正常应返回/usr/sbin/update-ca-certificates ``` #### 步骤3: 添加CA证书并更新 ```bash sudo cp /etc/kubernetes/pki/ca.crt /usr/local/share/ca-certificates/kubernetes-ca.crt sudo update-ca-certificates --fresh # 强制刷新证书库 ``` 成功输出示例: ``` Updating certificates in /etc/ssl/certs... 1 added, 0 removed; done. ``` #### 步骤4: 环境变量检查(备用方案) 若命令仍提示找不到,检查`sudo`的环境变量配置: ```bash sudo env | grep PATH # 查看sudo环境下的PATH ``` 若缺少`/usr/sbin`,可通过以下命令临时修复: ```bash sudo env "PATH=$PATH:/usr/sbin" update-ca-certificates ``` 永久修复需编辑`/etc/sudoers`: ```bash sudo visudo # 在Defaults secure_path后添加:/usr/sbin Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" ``` ### 证书管理原理 Linux系统通过层级结构管理CA证书: $$ \begin{array}{c} \text{用户证书} \\ \downarrow \\ \text{中间CA} \\ \downarrow \\ \text{根CA} \rightarrow \text{存储于 } \texttt{/etc/ssl/certs} \end{array} $$ `update-ca-certificates`的任务是同步`/usr/local/share/ca-certificates`中的证书到系统信任库[^1][^2]。 ### 验证流程图 ```mermaid graph TD A[命令缺失] --> B{基础命令是否可用?} B -->|apt不可用| C[手动下载安装包] B -->|apt可用| D[安装ca-certificates] C --> E[dpkg安装核心包] E --> D D --> F[更新CA证书] F --> G[检查PATH配置] G --> H[验证命令执行] ``` §§相关问题§§ 1. 如何手动修复损坏的`apt`软件包? 2. 系统根证书存储机制是怎样的? 3. 如何诊断命令缺失的根本原因? </think>### 解决 `sudo update-ca-certificates` 和 `sudo apt-get update` 命令找不到的问题 #### 问题原因分析 1. **核心组件缺失** - `update-ca-certificates` 依赖 `ca-certificates` 包[^1] - `apt-get` 依赖 `apt` 和 `apt-transport-https` 包[^4] - 最小化安装系统可能未包含这些基础工具 2. **环境变量异常** `/usr/sbin` 和 `/usr/bin` 路径未包含在 `sudo` 的安全路径中 3. **软件源损坏** 缺少有效软件源会导致无法正确安装依赖(通过 `apt-key` 废弃可见系统兼容性问题[^2]) --- ### 解决方案分步指南 #### 步骤1:修复基础命令环境 ```bash # 尝试使用较低级包管理器 sudo dpkg --configure -a # 修复损坏的包 # 手动安装核心组件 (需提前下载deb包) sudo dpkg -i apt_*.deb libapt-pkg*.deb apt-transport-https*.deb # 修复依赖关系 sudo apt-get install -f ``` > 包下载地址: > Ubuntu: [https://packages.ubuntu.com](https://packages.ubuntu.com) > CentOS: 使用 `yum install epel-release` #### 步骤2:安装必需软件包 ```bash # 更新软件源元数据 (关键步骤[^3]) sudo apt update # 安装核心组件 sudo apt install -y \ apt-transport-https \ ca-certificates \ software-properties-common ``` 安装验证: ```bash which update-ca-certificates # 应返回 /usr/sbin/update-ca-certificates ``` #### 步骤3:修复环境变量 ```bash # 临时解决方案 (当前会话有效) sudo env "PATH=$PATH:/usr/sbin:/usr/bin" update-ca-certificates # 永久解决方案 sudo visudo ``` 在打开的文件中添加: ```ini Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" ``` #### 步骤4:添加K8s证书(原需求) ```bash sudo mkdir -p /usr/local/share/ca-certificates/ sudo cp /etc/kubernetes/pki/ca.crt /usr/local/share/ca-certificates/kubernetes-ca.crt sudo update-ca-certificates --fresh # 强制刷新证书库 ``` 成功输出示例: ``` Updating certificates in /etc/ssl/certs... 1 added, 0 removed; done. ``` --- ### 关键技术原理 1. **证书信任链机制** $$ \begin{array}{c} \text{用户证书} \\ \downarrow \\ \text{中间CA} \\ \downarrow \\ \text{根CA} \rightarrow \text{存储在 } \texttt{/etc/ssl/certs} \end{array} $$ `update-ca-certificates` 维护信任链[^1] 2. **APT工作原理** | 步骤 | 命令 | 作用 | |---|---|---| | 1 | `apt update` | 下载源metadata[^3] | | 2 | `apt install` | 解析依赖树 | | 3 | `dpkg -i` | 底层包安装 | --- ### 操作验证流程图 ```mermaid graph TD A[命令缺失] --> B{检查PATH} B -->|路径正常| C[安装 ca-certificates] B -->|路径异常| D[修改/etc/sudoers] C --> E[执行证书更新] D --> E E --> F{成功?} F -->|是| G[完成] F -->|否| H[手动下载deb包] H --> I[dpkg安装] I --> C ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值