sudo: cd: command not found

事件起因


今天忽然发现的一个问题,执行sudo cd 时出现

sudo: cd: command not found

这里写图片描述

原因


shell

shell是一个命令解析器

所谓shell是一个交互式的应用程序。

shell执行外部命令的 时候,是通过fork/exec叉一个子进程,然后执行这个程序。

sudo


sudo 是一种程序,用于提升用户的权限,在linux中输入sudo就是调用sudo这个程序提升权限
sudo的意思是,以别人的权限叉起一个进程,并运行程序。

cd


cd是shell的内部命令。
也就是说,是直接由shell运行的,不叉子进程。
你在当前进程里当然不能提升进程的权限(其实也可以,不过得编程的时候写到代码里,然后再编译,而我们的 shell没有这个功能,否则岂不是太危险了?黑客.sh

解决办法


但是有一些目录我们普通用户是没有权限进入该目录的,比如/root
这里写图片描述

对目录来说x 可执行权限就是用户拥有进入该目录、复制其中文件的权限

这里写图片描述

那么我们该怎么办呢,
一个有限的办法就是为该目录增加当前用户的可执行权限,但是对我们来说这样并不是很安全
那么还有没有解决办法呢,当然有,Linux下没有什么问题是解决不了的,那就是获取root权限或者文件夹所属用户的权限
使用su 命令即可获取用户的权限,但是root权限怎么获取呢,sudo已经不行了

这里写图片描述

那就是sudo su 或者sudo -sH 默认缺省为获取root 用户
这里写图片描述

### 安装并配置 cosfs 为了确保 `cosfs` 命令能够正常使用,在 CentOS 7 中需要按照特定流程来安装和配置此工具。以下是详细的说明: #### 确认依赖项已安装 在尝试安装 `cosfs` 之前,确认系统已经安装了必要的依赖库,特别是 FUSE 文件系统支持。这可以通过下面的命令完成: ```bash sudo yum install fuse ``` #### 添加 EPEL 源 因为默认情况下 CentOS 的官方源可能不包含最新的 `cosfs` 或其所需的一些组件,因此推荐添加 EPEL 扩展源以获取更广泛的软件包选择: ```bash sudo yum install epel-release ``` #### 下载并编译安装 cosfs 目前并没有直接通过 YUM 可用的 `cosfs` 包,通常需要从 GitHub 上克隆项目仓库自行编译安装。具体操作如下所示: ```bash git clone https://github.com/cosfs/cosfs.git cd cosfs make && make install ``` #### 创建凭证文件 创建 `/etc/passwd-cosfs` 来存储访问腾讯云对象存储服务所需的密钥信息,并设置合适的权限防止其他用户读取敏感数据: ```bash echo "your-bucket-name:your-access-key-id:your-secret-access-key" | sudo tee /etc/passwd-cosfs sudo chmod 600 /etc/passwd-cosfs ``` #### 测试挂载功能 最后一步是验证新安装的 `cosfs` 是否能正常工作。可以试着将其连接到指定的目标目录来进行测试: ```bash mkdir ~/mybucketmountpoint cosfs your-bucket-name ~/mybucketmountpoint ``` 如果一切顺利,则表示 `cosfs` 已经成功安装并且可以被调用了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值