Linux--目录权限解析

本文详细解析了Linux系统中文件和目录的权限设置,包括只读、只写和可执行三种基本权限,以及针对文件创建者、同组用户和其他用户的权限分配。同时介绍了如何使用chmod命令进行权限修改,提供了具体的操作实例。

目录:

1.目录权限说明

2.各种操作权限列表

3.使用chmod修改文件权限

 

一. 目录权限说明

(1)linux文件或目录的权限分为,只读“r”、只写“w”、可执行“x”三种权限。文件访问的用户类别分为,文件创建者、与文件创建者同组的用户、其他用户三类。
(2)以文件为例,只读权限表示只允许读其内容,而禁止对其做任何更改操作。可执行权限表示允许将文件作为一个程序执行。文件被创建时,文件所有者自动拥有对文件的读、写和可执行权限,以便于对文件的阅读和修改。

二.各种操作权限列表

操作种类权限
cdx
touchwx
ls xr
rmxw
mvwx
viwx
.................

三. 使用chmod修改文件权限

第一种方式:

修改文件的权限或目录的命令为“chmod 751 test.sh”。751表示“创建者拥有读写可执行权限、同一组用户以拥有读和执行权限、其他用户拥有可执行权限”。

在例如:使用“chmod 777 test.sh”命令能使linux系统上所有的用户拥有相同的“读写可执行权限”。

第二种方式:

linux给文件或目录赋权限还有一种容易理解方法。比如:“chmod a-x”表示所有用户对此文件或目录将没有执行权限。

参数说明:“a”表示所有用户,“u”表示创建者、“g”表示创建者同组用户、“o”表示其他用户;“+”表示添加权限,“-”表示取消权限;“r”表示读权限、“w”表示写权限、“x”表示执行权限。

<think>根据用户提供的引用和之前的问题,用户似乎在寻找如何安装或修复缺失的`i386-linux-gnu`目录。这个目录通常用于存放32位兼容库,特别是在64位系统上运行32位程序时。以下将详细说明解决方案。 ### 问题分析 在64位Linux系统(如Ubuntu、Fedora等)中,`/usr/lib/i386-linux-gnu`(Debian/Ubuntu系)或`/usr/lib`(其他发行版)是存放32位库的目录。当运行32位程序时,系统会从这个目录加载所需的32位动态链接库(.so文件)。如果该目录缺失,可能导致32位程序无法运行。 ### 解决方案 #### 1. 安装32位兼容库支持(推荐) 对于基于Debian/Ubuntu的系统: ```bash # 启用多架构支持(如果尚未启用) sudo dpkg --add-architecture i386 sudo apt update # 安装32位基础库 sudo apt install libc6:i386 libstdc++6:i386 ``` 安装后,系统会自动创建`/usr/lib/i386-linux-gnu`目录并填充必要的32位库文件。 对于Fedora/CentOS系统(使用yum/dnf): ```bash # 安装32位基础库 sudo dnf install glibc.i686 libstdc++.i686 ``` 安装后,32位库通常位于`/usr/lib`或`/usr/lib32`。 #### 2. 手动创建目录并修复库链接(如果目录意外删除) 如果目录被误删,但32位库已安装,可以手动重建: ```bash # 重新创建目录 sudo mkdir -p /usr/lib/i386-linux-gnu # 重新安装所有32位库(强制覆盖) sudo apt install --reinstall libc6:i386 libstdc++6:i386 ``` #### 3. 从其他系统复制(不推荐,仅应急) 如果无法通过包管理器修复,可从相同发行版和版本的另一台系统复制整个`/usr/lib/i386-linux-gnu`目录(注意权限和文件完整性): ```bash # 在源机器上打包 tar czvf i386-libs.tar.gz /usr/lib/i386-linux-gnu # 在目标机器解压(需root权限) sudo tar xzvf i386-libs.tar.gz -C / ``` ### 验证修复 ```bash # 检查目录是否存在 ls -l /usr/lib/i386-linux-gnu # 检查32位库是否加载正常 ldd /path/to/your/32bit/program | grep 'not found' ``` ### 引用说明 用户提供的引用[1]中提到将`fcitx`的so文件从`/usr/lib/i386-linux-gnu/fcitx`移动到`/usr/lib/fcitx`,这实际上是因为64位系统默认使用`/usr/lib/x86_64-linux-gnu`存放64位库,而32位库在`/usr/lib/i386-linux-gnu`。通常不需要移动文件,正确安装32位兼容库即可[^1]。 ### 注意事项 - **权限问题**:确保`/usr/lib/i386-linux-gnu`目录权限为`755`(`drwxr-xr-x`),所有者是`root`。 - **符号链接**:库文件通常有版本化命名(如`libmpfr.so.6.1.0`)和软链接(如`libmpfr.so.6`),不要删除这些链接。 - **依赖关系**:安装特定32位程序时,使用`apt install program:i386`或`dnf install program.i686`自动安装依赖库。 §§相关问题§§ 1. 如何在64位Linux系统上运行32位程序? 2. 如何检查Linux系统中的动态库依赖关系? 3. 不同Linux发行版处理多架构库的方式有何差异? 4. 如何修复“找不到共享库文件(.so)”的错误? [^1]: 在64位系统中,32位库通常位于专用目录如`/usr/lib/i386-linux-gnu`(Debian/Ubuntu)或`/usr/lib`(Fedora/CentOS)。</think>### 如何安装或修复缺失的 `/usr/lib/i386-linux-gnu` 目录 #### 问题本质 `/usr/lib/i386-linux-gnu` 是存放 **32位兼容库** 的系统目录,在64位Linux系统中用于支持32位应用程序的运行。该目录缺失通常意味着: 1. 系统未启用多架构支持 2. 32位兼容库未安装 3. 文件系统损坏(罕见) #### 完整解决方案(Ubuntu/Debian系) ##### 步骤1:启用多架构支持 ```bash sudo dpkg --add-architecture i386 sudo apt update ``` ##### 步骤2:安装基础32位库 ```bash sudo apt install libc6:i386 libstdc++6:i386 ``` 这会自动创建 `/usr/lib/i386-linux-gnu` 目录并安装核心库[^1] ##### 步骤3:安装特定32位依赖(根据需求) ```bash # 通用32位支持包 sudo apt install gcc-multilib # 特定库(如libmpfr) sudo apt install libmpfr6:i386 ``` ##### 步骤4:验证目录结构 ```bash ls -l /usr/lib/i386-linux-gnu ``` 预期输出应包含多个 `.so` 库文件,例如: ``` -rw-r--r-- 1 root root ... libmpfr.so.6.1.0 lrwxrwxrwx 1 root root ... libmpfr.so.6 -> libmpfr.so.6.1.0 ``` #### Fedora/CentOS/RHEL解决方案 ```bash # 启用32位支持 sudo dnf install glibc.i686 libstdc++.i686 # 安装特定库 sudo dnf install mpfr.i686 ``` #### 特殊情况处理 **场景1:目录存在但内容缺失** ```bash sudo apt install --reinstall libc6:i386 ``` **场景2:符号链接修复(参考引用[1])** ```bash sudo ln -s /usr/lib/i386-linux-gnu/fcitx/*.so /usr/lib/fcitx/ ``` **场景3:系统升级(参考引用[3])** ```bash sudo apt update && sudo apt full-upgrade ``` #### 验证32位支持 ```bash # 检查动态链接器 ls /lib/ld-linux.so.* # 应有输出:/lib/ld-linux.so.2 (32位版本) # 测试32位程序运行 ./your_32bit_program ``` ### 关键原理 1. **多架构支持**:通过 `dpkg --add-architecture i386` 启用32/64位共存[^1] 2. **库路径优先级**:系统按 `/etc/ld.so.conf` 配置的顺序搜索库 3. **兼容性层**:`i386-linux-gnu` 目录名标识32位库(x86_64系统) > **注意**:不要手动创建此目录!应通过包管理器安装标准库,确保依赖关系正确解析
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值