Linux下目录权限以及目录/proc, /sys, /SElinux, /bin, /usr/lib, /usr/local, /var, /tmp作用,安装gcc,gdb,vim

Linux下的文件权限分为r(可读/可浏览)、w(可写/可创建删除)、x(可执行/可进入)。
文件操作用户分为:u(文件所有者)、g(文件所属组)、o(其他用户)、a(所有人)。
创建一个目录的默认权限为775。执行ls需要r(可读/可浏览)权限,执行mkdir、cd、rm、mv均需要x(可执行/可进入)权限。

/proc 文件系统是一种内核和内核模块用来向进程(process) 发送信息的机制
在这里插入图片描述
这些带数字的文件夹每个都对应一个进程ID

/sys目录下是全局设备结构体系,包含所有被发现的注册在各种总线上的各种物理设备。
在这里插入图片描述
SELinux是一种基于域-类型模型(domain-type)的强制访问控制(MAC)安全系统。

/bin目录主要放置一些系统的必备执行文件。
在这里插入图片描述

/usr/local目录提供给普通用户的/usr目录,/usr/local 这里适合安装软件,存放软件升级包。
在这里插入图片描述

/var目录下一般为所有服务的登录的文件或错误信息文件与一些数据库等。
在这里插入图片描述

/tmp目录用以存放一些临时文件用的,定时系统会自动清理。
在这里插入图片描述
top:查看CPU资源
fdisk:查看磁盘
df:查看磁盘使用情况
free:查看内存使用情况
du:查看文件占用空间大小

su:切换用户的工具
sudo是一种权限管理机制,依赖于/etc/sudoers,其定义了授权给哪个用户可以以管理员的身份能够执行什么样的管理命令
su -,su -l或su --login 命令改变身份时,也同时变更工作目录,以及HOME,SHELL,USER,LOGNAME。此外,也会变更PATH变量。用su -命令则默认转换成成root用户了。
adduser命令用于新增使用者帐号或更新预设的使用者资料,需要root权限。
password:修改密码。

输入命令yum -y install gcc进行gcc的安装,yum -y install gcc-c++进行g++安装,yum install vim安装vim。
从网络上下载一个gdb的压缩包,输入网址:http://ftp.gnu.org/gnu/gdb/,将下载的压缩包解压,./configure,make将gdb编译,make install进行gdb安装,gdb-v查看gdb的版本号。

<think>好的,我需要帮助用户解决为什么执行`which`和`sudo find`命令找不到`dbus-launch`的问题,尽管它存在于`/usr/bin`目录并且权限正确。首先,我应该先理解用户的问题背景。 用户提到`dbus-launch`确实在`/usr/bin`下,权限正确,但`which`和`find`命令找不到。可能的原因有很多,我需要逐步分析。 首先,`which`命令的问题。`which`会在用户的`PATH`环境变量指定的目录中查找可执行文件。如果`/usr/bin`不在当前用户的`PATH`中,`which`就无法找到。所以,我应该建议用户检查`echo $PATH`的输出,确认是否包含`/usr/bin`。另外,用户可能使用了非登录shell,导致环境变量不同,或者有别名覆盖了`which`命令的行为。 接下来是`sudo find`的问题。`sudo`默认以root权限运行命令,而root的`PATH`可能与普通用户不同。可能root的`PATH`不包含`/usr/bin`,或者用户在使用`sudo find`时没有指定正确的路径。例如,用户可能执行的是`sudo find / -name dbus-launch`,但如果没有指定正确的起始目录,可能会在别的路径下查找。 另外,文件系统的问题也有可能,比如虽然文件存在,但可能存在符号链接的问题,或者文件系统挂载问题导致某些目录不可见。此外,权限方面,虽然用户说权限正确,但需要确认是否有执行权限,或者SELinux等安全模块限制了访问。 可能的解决步骤包括: 1. 检查`PATH`环境变量是否包含`/usr/bin`。 2. 确认`which`命令是否被别名覆盖,使用`\which dbus-launch`绕过别名。 3. 使用`type -P dbus-launch`来查看路径。 4. 检查`sudo`的环境变量,使用`sudo -i which dbus-launch`或`sudo env PATH=$PATH which dbus-launch`来保留用户PATH。 5. 确认`find`命令的使用是否正确,比如`sudo find /usr/bin -name dbus-launch`。 6. 检查文件系统是否有异常,如使用`ls -l /usr/bin/dbus-launch`确认文件存在性和权限。 7. 查看安全策略如SELinux或AppArmor是否阻止访问。 还需要考虑用户是否在容器或受限环境中执行命令,这可能导致路径不同。引用中的内容提到了Kubernetes配置和安全漏洞,可能与当前问题无关,但如果有相关环境因素,也可能影响命令的执行。 总结来说,可能的问题点在于环境变量配置、sudo的PATH设置、命令别名或文件系统问题。需要用户逐步排查这些方面。</think>根据系统环境和权限配置差异,`which`和`sudo find`命令找不到`dbus-launch`可能由以下原因导致: --- ### 一、`which`命令失效分析 1. **PATH环境变量缺失** - `which`命令依赖当前用户的`$PATH`变量搜索路径 - 检查是否包含`/usr/bin`: ```bash echo $PATH | grep "/usr/bin" ``` - 若未包含,需修改shell配置文件添加路径: ```bash export PATH=$PATH:/usr/bin ``` 2. **Shell别名覆盖** - 检查是否存在`which`命令别名: ```bash alias which ``` - 使用原生命令验证: ```bash \which dbus-launch # 反斜杠绕过别名 ``` 3. **非交互式Shell限制** - 在脚本或远程会话中可能使用受限PATH - 直接指定绝对路径验证: ```bash /usr/bin/which dbus-launch ``` --- ### 二、`sudo find`失效分析 1. **Root用户PATH差异** - `sudo`默认使用安全路径(如`/sbin:/usr/sbin`) - 查看root的PATH配置: ```bash sudo -i echo $PATH ``` - 解决方法:保持用户PATH传递 ```bash sudo env PATH=$PATH find /usr/bin -name dbus-launch ``` 2. **文件系统层级限制** - `find`命令搜索范围错误(如未指定`/usr`目录) - 明确指定搜索路径: ```bash sudo find /usr/bin -name dbus-launch ``` --- ### 三、权限与安全机制 1. **文件权限深度检查** - 确认执行权限(即使文件存在): ```bash ls -l /usr/bin/dbus-launch ``` - 需要至少包含`-r-xr-xr-x`权限(示例:`-rwxr-xr-x 1 root root`) 2. **SELinux/AppArmor拦截** - 检查安全日志: ```bash sudo dmesg | grep avc: # SELinux journalctl -u apparmor # AppArmor ``` - 临时禁用测试: ```bash sudo setenforce 0 # 仅用于诊断,生产环境慎用 ``` --- ### 四、特殊环境因素 1. **容器/虚拟化环境** - 检查是否在容器内执行(挂载点隔离): ```bash cat /proc/1/cgroup | grep docker ``` - 引用[1]提到的Kubernetes配置可能影响路径映射 2. **文件系统损坏** - 校验文件完整性: ```bash sudo dpkg -S /usr/bin/dbus-launch # Debian/Ubuntu sudo rpm -qf /usr/bin/dbus-launch # RHEL/CentOS ``` --- ### 验证步骤示例 ```bash # 1. 验证普通用户路径 type -P dbus-launch # 显示绝对路径 # 2. 验证sudo环境 sudo -i type -P dbus-launch # 3. 强制使用完整路径 sudo /usr/bin/find /usr/bin -name dbus-launch ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值