青岛市文章资讯

Unix系统中文件管理和文件权限设置教程

2026-04-02 11:50:02 浏览次数:0
详细信息

Unix 文件管理与权限设置教程

一、文件系统基础

1. 文件系统结构

/           # 根目录
├── bin     # 基本命令程序
├── etc     # 系统配置文件
├── home    # 用户主目录
├── usr     # 用户程序和数据
├── var     # 可变数据(日志等)
├── tmp     # 临时文件
└── ...

2. 路径类型

二、基本文件管理命令

1. 目录操作

# 查看当前目录
pwd

# 切换目录
cd /path/to/directory
cd ..           # 上级目录
cd ~            # 返回家目录
cd -            # 返回上一个目录

# 列出目录内容
ls              # 简单列表
ls -l           # 详细列表
ls -a           # 显示隐藏文件
ls -lh          # 人类可读的文件大小
ls -lt          # 按时间排序

# 创建目录
mkdir dirname
mkdir -p dir1/dir2/dir3  # 创建多级目录

# 删除目录
rmdir dirname            # 删除空目录
rm -r dirname            # 递归删除非空目录

2. 文件操作

# 创建文件
touch filename.txt
echo "content" > filename.txt

# 查看文件
cat filename.txt         # 显示整个文件
less filename.txt        # 分页查看
head -n 10 filename.txt  # 查看前10行
tail -n 10 filename.txt  # 查看后10行
tail -f filename.txt     # 实时查看日志文件

# 复制文件
cp source.txt dest.txt
cp -r sourcedir/ destdir/  # 复制目录

# 移动/重命名文件
mv oldname.txt newname.txt
mv file.txt /target/directory/

# 删除文件
rm filename.txt
rm -i filename.txt      # 删除前确认
rm -f filename.txt      # 强制删除

三、文件权限系统

1. 权限表示法

a) 符号表示法(rwx)
-rwxr-xr--  1 user group  1024 Jan 1 12:00 file.txt
↑ ↑↑↑↑↑↑↑↑
│ │└─其他用户权限
│ └───同组用户权限
└─────所有者权限

权限字符含义:

b) 数字表示法(八进制)
rwx r-x r--  =  7  5  4
421 401 400
↓   ↓   ↓
7   5   4

常见权限组合:

2. 查看文件权限

ls -l filename.txt
stat filename.txt

输出示例:

-rwxr-xr--  1 alice  staff  1024 Jan 1 12:00 script.sh
drwxr-xr-x  2 bob    dev    4096 Jan 1 12:00 mydir/

3. 修改文件权限

a) chmod - 修改权限
# 符号模式
chmod u+x file.txt          # 给所有者添加执行权限
chmod g-w file.txt          # 移除同组用户的写权限
chmod o=r file.txt          # 设置其他用户只读
chmod a+x file.txt          # 所有人添加执行权限
chmod u=rwx,g=rx,o=r file.txt

# 数字模式
chmod 755 file.txt
chmod 644 file.txt
chmod 700 file.txt          # 仅所有者完全访问

# 递归修改目录
chmod -R 755 directory/
b) chown - 修改所有者和组
# 修改所有者
chown username file.txt

# 修改组
chown :groupname file.txt

# 同时修改所有者和组
chown username:groupname file.txt

# 递归修改目录
chown -R username:groupname directory/
c) chgrp - 修改组(替代方案)
chgrp groupname file.txt
chgrp -R groupname directory/

四、特殊权限

1. SetUID (SUID)

# 设置SUID:用户执行文件时,以文件所有者的身份运行
chmod u+s /usr/bin/passwd
chmod 4755 /usr/bin/passwd

# 查看SUID(显示为 s 而不是 x)
ls -l /usr/bin/passwd
# -rwsr-xr-x 1 root root ...

2. SetGID (SGID)

# 设置SGID:目录中新创建的文件继承目录的组
chmod g+s directory/
chmod 2755 directory/

# 查看SGID
ls -ld directory/
# drwxr-sr-x 2 user group ...

3. Sticky Bit

# 设置粘滞位:只有文件所有者才能删除/tmp目录中的文件
chmod +t /tmp
chmod 1777 /tmp

# 查看粘滞位
ls -ld /tmp
# drwxrwxrwt 2 root root ...

五、默认权限与umask

1. 查看当前umask

umask          # 显示当前掩码
umask -S       # 符号格式显示

2. 设置umask

# 临时设置
umask 022

# 永久设置(添加到 ~/.bashrc 或 ~/.bash_profile)
echo "umask 022" >> ~/.bashrc

3. 权限计算

文件默认权限 = 666 - umask
目录默认权限 = 777 - umask

示例:umask 022
文件权限 = 666 - 022 = 644 (rw-r--r--)
目录权限 = 777 - 022 = 755 (rwxr-xr-x)

六、访问控制列表(ACL)

1. 检查ACL支持

# 检查文件系统是否支持ACL
mount | grep acl

# 检查文件ACL
getfacl filename.txt

2. 设置ACL

# 给特定用户添加权限
setfacl -m u:username:rwx file.txt

# 给特定组添加权限
setfacl -m g:groupname:rx file.txt

# 设置默认ACL(对新创建的文件有效)
setfacl -d -m u:username:rwx directory/

# 删除特定ACL条目
setfacl -x u:username file.txt

# 删除所有ACL条目
setfacl -b file.txt

七、实用示例

示例1:安全脚本配置

# 1. 创建脚本
echo '#!/bin/bash' > backup.sh
echo 'echo "Backup completed"' >> backup.sh

# 2. 设置安全权限
chmod 750 backup.sh        # 所有者完全,同组读执行,其他人无权限
chown root:admin backup.sh # 设置所有者和组

# 3. 设置SUID(如果需要以root运行)
chmod 4750 backup.sh

示例2:项目目录权限设置

# 创建项目目录结构
mkdir -p project/{src,doc,bin,log}

# 设置目录权限
chmod 755 project/          # 所有人可进入
chmod 770 project/src/      # 团队成员可读写
chmod 750 project/bin/      # 团队成员可执行
chmod 777 project/log/      # 所有人可写日志

# 设置SGID使新文件继承组
chmod 2770 project/src/

示例3:批量修改权限

# 所有.sh文件添加执行权限
find . -name "*.sh" -exec chmod +x {} \;

# 修改所有目录权限为755
find . -type d -exec chmod 755 {} \;

# 修改所有文件权限为644
find . -type f -exec chmod 644 {} \;

八、权限检查与调试

1. 检查当前用户权限

# 检查当前用户对文件的权限
[ -r file.txt ] && echo "可读"
[ -w file.txt ] && echo "可写"
[ -x file.txt ] && echo "可执行"
[ -d directory ] && echo "是目录"

2. 查看用户身份

whoami          # 当前用户名
id              # 用户ID和组信息
groups          # 当前用户所属组

九、最佳实践

最小权限原则:只授予必要的最小权限 避免使用777:尽量使用更严格的权限 定期审计:定期检查关键文件的权限 使用组管理:通过组管理权限而不是个人用户 敏感文件保护:配置文件通常设置为600或640 脚本安全:需要执行的脚本设置为755,不需要执行的设置为644

十、问题排查

# 如果遇到权限问题:

# 1. 查看文件详细信息
ls -la file.txt

# 2. 检查用户所属组
id username

# 3. 测试权限
sudo -u otheruser ls file.txt

# 4. 检查父目录权限(需要目录的x权限才能访问)
ls -ld /path/to/parent/

# 5. 检查SELinux/AppArmor(如果启用)
getenforce          # SELinux状态
sestatus            # SELinux详细信息

这个教程涵盖了Unix/Linux系统中最常用的文件管理和权限设置操作。记住,正确的权限管理是系统安全的基础!

相关推荐