2021-08-11 08:14:51
设置文件访问权限可通过chmod命令的数字模式或符号模式实现,核心目的是精细化控制用户对文件的操作权限。
一、数字模式(Octal Mode)数字模式基于八进制表示,通过将读(4)、写(2)、执行(1)权限数值相加,形成三位或四位数字(如755、644),适用于脚本批量设置或重置权限。
权限数值对应关系:
读(r)= 4
写(w)= 2
执行(x)= 1
无权限 = 0
数字组成规则:
三位数字依次代表所有者(u)、所属组(g)、其他用户(o)的权限。
四位数字时,首位为特殊权限位(如SetUID、SetGID、Sticky Bit),后三位为基本权限。
常用示例:
chmod 755 filename:所有者拥有读写执行权限(7=4+2+1),组和其他用户仅读和执行(5=4+1)。常用于可执行文件或脚本。
chmod 644 filename:所有者读写(6=4+2),组和其他用户仅读(4)。常用于普通数据文件。
chmod 777 filename:所有用户拥有读写执行权限(7)。不推荐生产环境使用,存在安全风险。
符号模式通过“谁+操作+权限”的结构(如u+x、go-w)实现权限增减或设置,直观易读,适合手动微调。
结构组成:
谁(who):
u(user):文件所有者
g(group):文件所属组
o(others):其他用户
a(all):所有用户(等同于ugo)
操作符(operator):
+:添加权限
-:移除权限
=:设置权限(覆盖原有权限)
权限(permissions):
r:读
w:写
x:执行
常用示例:
chmod u+x filename:给所有者添加执行权限。
chmod go-w filename:移除组和其他用户的写权限。
chmod a=rw filename:设置所有用户仅读写权限(移除执行权限)。
chmod u=rwx,g=rx,o=r filename:一次性设置所有者为rwx,组为rx,其他用户为r。
除基本权限外,Linux还提供特殊权限位(以八进制第四位表示),用于更细粒度的控制:
SetUID(SUID,4000):
作用:执行文件时,用户暂时获得文件所有者的权限。
场景:如passwd命令需修改/etc/shadow(仅root可写),通过SetUID以root权限运行。
危险性:恶意程序设置SetUID可能导致系统被攻陷。
表示:ls -l输出中,所有者执行权限位显示为s(如-rwsr-xr-x)。
SetGID(SGID,2000):
作用:
文件:执行时用户暂时获得文件所属组的权限。
目录:新创建的文件/子目录继承目录的所属组。
场景:团队协作目录(如/project_data)设置SetGID,确保文件共享。
表示:ls -l输出中,组执行权限位显示为s(如drwxrwsr-x)。
Sticky Bit(1000):
作用:目录下文件仅允许所有者、目录所有者或root删除。
场景:如/tmp目录设置Sticky Bit,防止用户删除他人文件。
表示:ls -l输出中,其他用户执行权限位显示为t(如drwxrwxrwt)。
设置方法:
将特殊权限值与基本权限值相加,通过chmod设置。
示例:
chmod 4755 script.sh:设置SetUID,权限为rwsr-xr-x。
chmod 2775 shared_dir:设置SetGID,权限为rwxrwsr-x。
chmod 1777 /tmp:设置Sticky Bit,权限为rwxrwxrwt。
优势:简洁高效,适合脚本自动化和批量设置。
场景:预设标准权限(如755、644)、重置混乱权限。
优势:直观易懂,适合手动微调。
场景:仅修改特定权限(如g-w)、初学者学习调试。
结合数字模式设置(如4755),需谨慎评估安全风险。
掌握数字模式与符号模式的适用场景,结合特殊权限位的合理使用,可实现高效且安全的文件权限管理。