前言
环境:CentOS7.9
Linux下一切皆文件,不同的用户对文件拥有不同的权限。
文件的3种权限
rwx 可读可写可执行,转换为数字就是 421
针对文件 | 针对目录 | |
---|---|---|
r 读权限 | 是否可以查看文件内容 | 是否能够列出ls目录内容 |
w 写权限 | 是否可以编辑文件内容 | 是否能够创建、删除、复制、移动文档 |
x执行权限 | 可执行权限就是能够执行该文件 | 是否可以进入目录和获得目录下文件的列表,要对目录下存在的文件进行读取和修改,必须要能进入目录,所以必须要目录有执行权限 |
一般的,我们给目录r权限的时候也会给x权限,因为既然你都给了列出目录内容的权限了还没有进入目录的权限?
注意:一个用户能否创建、删除、复制、移动一个文件,不是看该用户对该文件有没有对应的权限,而是看该用户是否对该文件的上一层目录是否具有写权限,比如:创建一个目录test和在test目录下创建一个aa.txt文件,test目录权限为:drwxrwxr-x ,aa.txt文件权限为:-rwxrwxrwx,test用户属于其它人,test用户能打开编辑aa.txt文件,但不能删除aa.txt文件,原因在于tets用户对test目录没有写权限。
查看文件的属性
基本的文件属性格式如下:
-rwxr-xr-x 2 root root 83 Mar 2 18:35 appveyor
类型 权限 链接数 属主 属组 大小 日期 文件名
第一列:开头10位字符表示含义如下:
- rwx r-x r-x
第1列表示文件类型,其中d表示为目录,-表示为普通文件,l表示为软链接;
第2列rwx, 表示属主拥有的权限为可读可写可执行;
第3列r-x , 表示组用户所拥有的权限;
第4列r-x , 表示其它用户拥有的权限;
注意:以上如果表示某个用户没有权限的话就用-表示,如 rw- 就表示可读可写不可执行。
小计总结:能使用文件的人可分为3类,属主,即文件的主人;组用户,即和属主同在一个group组的用户;其它用户,即既不是属主也不是同组用户的其它人。
第二列:有多少文件名链接到此节点(i-node)
每个文件都会将它的权限与属性记录到文件系统的i-node中,不过我们使用的目录树却是使用文件名来记录,因此每个文件名就会连接到一个i-node,这个属性记录的就是有多少不同的文件名链接到相同的一个i-node号码。
第三列:所有者
第四列:文件所属用户组
第五列:容量大小,默认单位B
第六列:创建或最近修改日期
第七列:文件名
chmod 命令更改文件权限
chmod 选项 文件名
方法一、文件的权限分为 rwx 读写执行,rwx 对应数字 421
每一个用户有421,即可读可写可执行,把具有的权限相加起来得到一个数值即可表示该用户对文件具有的权限,示例:属主具有可读可写可执行权限,4+2+1=7,组用户具有可读可写权限,4+2+0=6,其他用户具有可读权限,4+0+0=4,则对该文件更改权限如下:
chmod 764 filename
方法二、
给谁设置:
u 表示文件属主用户(user)
g 表示组用户(group)
o 表示其它人 (other)
a 表示全部 (all,默认值)
权限字符:
r 读
w 写
x 执行
分配方式:
+ 表示新增
- 表示删除
= 表示设置
示例如下:
chmod a=rwx filename #给全部人都加可读可写可执行权限
chmod a-rwx filename #全部人都取消加可读可写可执行权限,等价于chmod 000 filename 或 chmod a=--- filename
chmod u+rwx,g+rw,o+r filename #给属主新增可读可写可执行权限,组用户新增读写权限,其它人新增读权限
chmod u=rwx,g=rw,o=r filename #与上一条等价
chmod u+x ,g-x filename #给属主可执行文件权限,组用户不可执行
chmod +x filename #默认值是a,表示给全部人加可执行权限
注意:不要设置奇葩的权限,比如能w不能读r的。这样权限就不合理,能写入不能打开是什么含义。对于系统的最高用户root用户来说,root能修改删除任何具有任意权限的文件,谁叫人家root是整个Linux的最高用户呢。
chown命令更改文件属主及属组
修改属主命令:
chown [选项] 用户名 文件名
常用选项:
-R 表示级联修改,常用用于文件是目录时,级联修改目录下的所有文件
修改文件的所属用户组命令:
chgrp [选项] 用户组名 文件名
常用选项:
-R 表示级联修改,常用用于文件是目录时,级联修改目录下的所有文件
为了方便,Linux将两个命令合在了一起,命令格式如下:
chown [选项] 用户名:用户组名 文件名
示例:chown -R mysql:mysql mysql 即将mysql目录及目录下的文件属主和所属用户组都改为mysql用户和mysql用户组