Java教程

8.文件权限

本文主要是介绍8.文件权限,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

8.1 一般权限

  文件 目录
可读(r) 读取文件内容 显示文件列表
可写(w) 修改文件内容 新建剪切删除文件
可执行(w) 执行脚本文件 进入到该目录

 

 rwxrwxrwx:777

会根据权限换算成数字,根据数字确定文件的权限

 

文件信息

 

 上图包含了文件的类型、访问权限、所有者(属主)、所属组(属组)、占用的磁盘大小、最后修改时间和文件名称等信息。通过分析可知,该文件的类型为普通文件,所有者权限为可读、可写(rw-),所属组权限为可读(r--),除此以外的其他人也只有可读权限(r--),文件的磁盘占用大小是34298字节,最近一次的修改时间为4月2日的0:23,文件的名称为install.log。

常见的文件类型包括普通文件(-)、目录文件(d)、链接文件(l)、管道文件(p)、块设备文件(b)以及字符设备文件(c)。

 

8.2 特殊权限

管理员不受一般权限控制

SUID:SUID是一种对二进制程序进行设置的特殊权限,能够让二进制程序的执行者临时拥有所有者的权限(仅对拥有执行权限的二进制程序有效)

SGID:SGID特殊权限有两种应用场景:当对二进制程序进行设置时,能够让执行者临时获取文件所属组的权限;当对目录进行设置时,则是让目录内新创建的文件自动继承该目录原有用户组的名称。

SBIT:保护位,SBIT特殊权限位可确保用户只能删除自己的文件,而不能删除其他用户的文件

 

SUID和SGID:如果原先权限位上没有x执行权限,那么被赋予特殊权限后将变成大写的S,如果有执行权限,赋予特殊权限后变成小写的s

SBIT:原本有x执行权限则会写成t,原本没有x执行权限则会被写成T

文件的权限最大为7777,第一位为特殊权限,后面三位为一般权限

rwsrwsrwt:7777

rwsrwSr--:6764

 

 

chmod 设置文件的一般权限和特殊权限

chmod 权限 文件名

chown 设置文件的所有者和所有组

chown 属主:属组  文件名(冒号换成 . 也可以)

针对目录的话chown +R 

 

8.3 隐藏属性

隐藏权限的专用设置命令是chattr,专用查看命令是lsattr。

chattr +a   仅允许补充(追加)内容,无法覆盖/删除内容(Append Only),一般会将-a参数设置到日志文件

chattr +i    无法对文件进行修改;若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件

chattr +s   彻底从硬盘中删除,不可恢复(用0填充原文件所在硬盘区域)

chattr +A  不再修改这个文件或目录的最后访问时间(atime)

 

文件的隐藏权限必须使用lsattr命令来查看,平时使用的ls之类的命令则看不出端倪

  

8.4 文件访问控制列表

使用setfacl命令可以针对单一用户或用户组、单一文件或目录来进行读/写/执行权限的控制。

针对目录文件需要使用-R递归参数;针对普通文件则使用-m参数;如果想要删除某个文件的ACL,则可以使用-b参数。

文件权限的最后一个点(.)变成了加号(+

 

 getfacl命令用于查看文件的ACL权限规则,英文全称为“get files ACL”,语法格式为“getfacl [参数] 文件名称”

 清空全部ACL权限:setfacl -b /XXX

 

8.5 su和sudo

su - 用户   完全切换到新的用户,即把环境变量信息也变更为新用户的相应信息,而不是保留原始的信息。强烈建议在切换用户身份时添加这个减号(-)

从root管理员切换到普通用户时是不需要密码验证的,而从普通用户切换成root管理员就需要进行密码验证

 

sudo   精准SUID,用于给普通用户提供额外的权限,语法格式为“sudo [参数] 用户名”

visudo命令用于编辑、配置用户sudo的权限文件

或者

vim /etc/sudoers

 

这篇关于8.文件权限的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!