Linux文件权限系统是系统安全的重要组成部分。以下是设置和管理文件权限的详细指南:
Linux文件有三种基本权限: - r (read) - 读取权限 - w (write) - 写入权限 - x (execute) - 执行权限
这些权限分别分配给三类用户: 1. 所有者(user) - 文件创建者/所有者 2. 组(group) - 文件所属组的成员 3. 其他用户(other) - 系统上的其他所有用户
使用ls -l
命令查看文件权限:
ls -l filename
输出示例:
-rw-r--r-- 1 user group 1024 Jan 1 10:00 filename
(第一个字段-rw-r--r--
表示权限)
每个权限对应一个数字: - r = 4 - w = 2 - x = 1
组合示例: - 7 (4+2+1) = rwx - 6 (4+2) = rw- - 5 (4+1) = r-x - 4 = r-- - 0 = ---
设置权限命令格式:
chmod [权限数字] 文件名
示例:
chmod 755 filename # 所有者rwx,组和其他用户r-x
chmod 644 filename # 所有者rw-,组和其他用户r--
使用字母表示权限变更: - u = 所有者 - g = 组 - o = 其他用户 - a = 所有用户 - + = 添加权限 - - = 移除权限 - = = 设置精确权限
示例:
chmod u+x filename # 给所有者添加执行权限
chmod g-w filename # 移除组的写入权限
chmod o=r filename # 设置其他用户只有读取权限
chmod a+w filename # 给所有用户添加写入权限
chown 新所有者:新组 文件名
示例:
chown user1:developers filename
SUID (Set User ID) - 以文件所有者身份执行
chmod u+s filename
SGID (Set Group ID) - 以文件所属组身份执行
chmod g+s filename
Sticky Bit - 常用于/tmp目录,防止用户删除他人文件
chmod +t directory
umask决定新创建文件的默认权限:
umask # 查看当前umask
umask 022 # 设置新的umask值
递归修改目录及其内容权限:
chmod -R 755 directory/
仅修改目录权限(不修改文件):
find /path/to/dir -type d -exec chmod 755 {} \;
仅修改文件权限(不修改目录):
find /path/to/dir -type f -exec chmod 644 {} \;
通过合理设置文件权限,您可以有效保护系统安全并确保正确的文件访问控制。