文件权限怎么设置

Linux系统中,权限设置的核心命令是chmod。它支持两种模式:符号模式(如u+x表示给所有者添加执行权限)和数字模式(如755)。要修改文件权限,终端输入“chmod 755 文件名”即可让所有者读写执行,组用户和其他用户只能读和执行。如果是目录,通常需要加上-R参数递归修改,例如“chmod -R 755 目录名”会修改目录及其内部所有文件的权限。注意普通文件不需要执行权限时建议设为644更安全。

实际操作中记得先用“ls -l”查看当前权限,输出像“-rw-r--r--”这样10个字符的字符串。第一个字符表示类型(-为文件,d为目录),后面每三个一组分别代表所有者、组用户和其他用户的读(r)写(w)执行(x)权限。如果某个权限位是“-”表示没有该权限。例如想给脚本文件“test.sh”添加执行权限,可以用“chmod +x test.sh”(符号模式)或“chmod 755 test.sh”(数字模式),然后通过“./test.sh”运行。

linux文件权限设置命令_linux 文件权限设置_linux文件权限管理

chmod数字代表什么

数字模式将读、写、执行分别赋予分值:读(r)=4,写(w)=2,执行(x)=1。三个数字对应所有者、组用户、其他用户的权限总和。比如7=4+2+1代表读写执行全开,6=4+2代表读写但不执行,5=4+1代表读和执行,4=仅读,0=无权限。因此755表示所有者权限7(读写执行)、组用户5(读和执行)、其他用户5(读和执行),这是可执行文件的经典设置。

常用数字组合有:644用于普通文档(所有者读写,其他人只读);600用于私密文件(仅所有者读写);700用于私有脚本(仅所有者全权);755用于程序或公共目录;777极不安全,几乎永远不要使用,因为任何用户都能随意修改。当你执行“chmod 644 mydoc.txt”后,ls -l会显示“-rw-r--r--”。记住一个技巧:目录必须至少有执行权限才能被进入,所以公共目录通常设为755而非644。

目录和文件权限区别

linux 文件权限设置_linux文件权限管理_linux文件权限设置命令

文件和目录的权限含义完全不同。对于文件,读权限允许查看内容,写权限允许编辑修改,执行权限允许运行程序。但对于目录,读权限允许列出目录中的文件名(如ls命令),写权限允许在目录中增删或重命名子文件/子目录,而执行权限允许穿过该目录进入其内部(即cd进入)。缺少执行权限时,即使有读权限也无法访问目录下的任何文件,会报“权限不够”错误。

举个例子:假设有个目录“/data”,权限为644(无执行位),你虽然能用ls看文件列表,但无法cd进去。必须改为755或711才能切换进入。另一个常见陷阱:即使你对目录有写权限,但目录中某个文件是只读的,你仍然可以删除该文件(因为删除是对目录的写操作,不是对文件的写操作)。反之,如果你对文件有写权限但对所在目录没有写权限,你无法删除该文件。理解这个区别能避免大量权限引发的故障。

ACL权限怎么用

linux文件权限管理_linux文件权限设置命令_linux 文件权限设置

传统的ugo权限只能同时控制所有者、组和其他三类用户,无法给单个用户或组单独授权。这就要用到ACL(访问控制列表)。安装acl工具包后(ubuntu用“sudo apt install acl”),用setfacl命令为特定用户分配权限。例如想让用户“zhang”读取文件“secret.txt”,而不影响其他组用户:执行“setfacl -m u:zhang:r secret.txt”。再用getfacl secret.txt查看新增的acl条目。

ACL还能赋予嵌套目录的默认权限linux 文件权限设置,让新建文件自动继承规则。比如“setfacl -m d:u:zhang:rwx /share”会使得/share目录下未来生成的所有文件自动给zhang用户读写执行权限。注意修改ACL后,传统ls -l显示的权限末尾会多一个“+”,表示已启用扩展ACL。要删除某个ACL权限使用“setfacl -x u:zhang secret.txt”linux 文件权限设置,彻底清除所有额外规则用“setfacl -b secret.txt”。大型服务器上合理使用ACL能让多团队协作变得井然有序。

umask默认权限

linux文件权限设置命令_linux文件权限管理_linux 文件权限设置

当你用touch新建文件或用mkdir新建目录时,默认权限并非777或666。系统会通过umask值来屏蔽掉某些权限。umask通常是一个三位数字如022,它表示“要减去的权限”。计算方法是:文件默认666减去umask(按位减),目录默认777减去umask。umask为022时,新文件权限=666-022=644(rw-r--r--),新目录=777-022=755(rwxr-xr-x)。若umask为002,则文件664,目录775。

查看当前umask直接在终端输入“umask”,修改临时umask用“umask 027”。如果想永久生效,对于bash用户可以写入~/.bashrc或/etc/profile。注意普通用户默认umask通常是002,root用户默认022。在企业服务器上,为了团队协作安全红帽linux系统下载,常将umask设为027,这样同组用户也能读写但其他用户完全无权限。合理调整umask能让新创建的文件从一开始就符合安全策略,避免后续频繁使用chmod批量修正。

特殊权限是什么

除了基本的rwx,Linux还有三个特殊权限:SUID、SGID和Sticky Bit。SUID作用于可执行文件,当用户执行该文件时会临时获得文件所有者的身份。典型例子是“/usr/bin/passwd”,普通用户运行它时能临时获得root权限去修改/etc/shadow。设置SUID用“chmod u+s 文件名”,权限位会显示为rws而不是rwx。SGID类似,作用于文件时让执行者获得文件所属组的权限;作用于目录时,让目录下新建的文件自动继承目录的组。

Sticky Bit用于目录,通常设置在共享目录如/tmp上。加上Sticky Bit后,即使用户对该目录有写权限,也只能删除属于自己的文件linux内存管理,无法删除他人的文件。设置命令“chmod +t 目录名”,权限显示为t(如drwxrwxrwt)。过度使用SUID/SGID会带来严重安全风险,黑客可能利用有SUID的程序提权。日常运维中定期执行“find / -perm -4000 -type f 2>/dev/null”可以列出所有SUID文件,逐一审查是否必要。特殊权限虽强大,但务必谨慎使用。

你在刚接触Linux文件权限时遇到过哪些百思不解的“坑”?欢迎在评论区分享你的经历,帮助更多新手避开这些陷阱,也别忘了点赞和转发让更多人看到这篇实用指南。

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复