Linux权限管理

linux服务器上有严格的权限等级,如果权限过高导致误操作会增加服务器的风险。

每个文件的权限针对三类对象进行定义

  • 它的所有者(由u表示)
  • 它的所有组(由g代表),代表该组的所有成员
  • 其他(由o表示,除所有者和所有组的用户)

每个文件针对每类访问者定义了三种主要权限

读(由r表示)、写(或修改,用w表示)、执行(由x表示)

用户对文件的操作权限分为读、写和执行三种,分别用r、w、x表示。若用户没有某个权限,则在相应权限位用"-"占位,代表无此权限。
若文件具有x属性,是可执行的文件。具有x属性的文件一般是二进制程序文件或可执行的脚本文件。若目录具有x属性,则表示允许打开该目录中的文件,并且可用cd命令进入该目录。

只有root用户和文件拥有者才可以修改文件访问权限。

image-20220417163155643

image-20220417163247479

第一位代表文件类型,d代表文件夹,-代表普通文件

后面每三位一组

第一组表示文件拥有者、第二组表示文件所有组、第三组代表其他(除所有者和所有组的用户)

1、Linux权限操作相关命令

以下三个命令控制与文件关联的权限:

  • chmod 更改文件的权限
  • chown 更改文件的所有者
  • chgrp 更改所有者组

chmod修改文件权限

选项
-R 对目标目录下的所有文件与子目录进行相同的权限变更(以递归的方式逐个变更)
示例:
chmod o=w file 表示给其他人授予写入file这个文件的权限
chmod go-rw file 表示删除file中组群和其他人的读和写的权限

当chmod u=rw g=rw o=r (赋予拥有者读写权限、所在组读写权限、其他人只读权限)失败了,因此使用一种数学方法

r对应4,w对应2,x对应1

image-20220417164541454

image-20220417164849128

对一个目录进行权限修改时,它的子目录权限不变,加上参数-r时可以递归赋权

chown 更改文件的所有者

语法格式

chown 选项 username filename

选项

-R 进行递归的持续变更,连同子目录下的所有档案都变更

chgrp 更改所有者组

语法格式

chgrp 选项 username filename

选项

-R 进行递归的持续变更,连同子目录下的所有档案都变更

2、Linux隐藏权限

chattr命令用于设置文件的隐藏权限,格式为"chattr [参数] 文件"。如果想要把某个隐藏功能添加到文件上,则需要在命令后面追加"+参数",如果想要把某个隐藏功能移出文件,则需要追加"-参数"。

参数:
a 仅允许补充(追加)内容,无法覆盖/删除内容

man chattr 查看其他隐藏权限参数

lsattr命令用于显示文件的隐藏权限,格式为"lsattr [参数] 文件"。
在Linux系统中,文件的隐藏权限必须使用lsattr命令来查看,而Is之类的命令则看不出来,一旦使用lsattr命令后,文件上被赋予的隐藏权限马上就会原形毕露。此时可以按照显示的隐藏权限的类型(字母),使用chattr命令将其去掉:
#chattr +a test
#lsattr test
—a------./test
#rm -f test rm:无法删除"test" ,不允许的操作
#chattr -a test
#rm -f test