【Linux】修改文件属性与权限
通过ls -l查看某文件的属性时,第一栏位表示的是文件的权限,第三、四两个栏位表示的是该文件的拥有者和所属组,对于一个文件的权限、拥有者及所属组都是可以修改的
修改文件权限:chmod
修改文件拥有者:chown
修改文件所属组:chgrp
修改权限,chmod
文件权限的设置方式有两种:数字格式和符号格式
数字格式修改文件权限
Linux文件权限的9个字符,每3个分成一组,表示拥有者(owner)、所属群组(group)和其他人(others)三种身份,每个身份有读(read)、写(write)和执行(execute)权限,这三个权限可以分别用4、2、1三个数字来表示,即
r : 4
w : 2
x : 1
-: 0 (-表示没有相应位置的权限)
每种身份(owner、group、others)用各自的三个权限(r:4 , w:2 , x:1)数字的加和表示该身份的权限,
例如:一文件的权限为:-rwxr-xr-x
owner = rwx = 4 + 2+ 1 = 7
group = r-x = 4 + 0 + 1 = 5
others = r-x = 4 + 0 + 1 = 5
该文件的数字表示法为:755
如何通过数字表示法使用chmod修改文件的权限呢?
如下test.txt文件权限为-rw-r--r--,即,owner可读可写、group可读、others可读,现想修改该文件为所有人可读,那如何修改呢?
test.txt文件当前的权限:-rw-r--r--,权限的数字表示为:644
修改后的文件权限应该为:-rw-rw-rw-,数字表示为:666
命令操作为:chmod 666 test.txt
666表示修改后的文件权限数字表示,test.txt为要修改权限的文件或目录
如果在一个目录里有多个文件或目录,如何一次性修改该目录及其子目录和文件权限?
例如,test目录里包含若干文件及子目录,权限如下
现想将test目录及其子目录和文件权限改为可读、可写、可执行
命令操作为:chmod -R 777 test
-R:表示递归修改,连同文件下的子目录和文件一同修改
符号格式修改文件权限
符号格式修改文件权限时,利用u、g、o分别表示user(owner)、group和others三种身份,利用all表示全部分身,r、w、x分别表示每个身份下的读、写、执行权限,用+表示添加权限,-表示减少权限,=表示设置权限,表示如下表
例如:设置test1.txt文件的权限为-rwxr-xr-x,也就是user(woner)具有读、写、执行权限,group和others具有读和执行权限
命令操作为:[root@centos test]# chmod u=rwx,go=rx test1.txt
为test1.txt的group增加写权限,命令操作为:[root@centos test]# chmod g+w test1.txt
为test1.txt的others移除执行权限,命令操作为:[root@centos test]# chmod o-x test1.txt
符号格式修改文件权限时,-R(表示递归修改)依然生效
修改文件拥有者,chown
chown修改文件拥有者使用规则:
chown 用户名 文件或目录 修改文件或目录的拥有者
chown 用户名:所属组 文件或目录 修改文件或目录的拥有者和所属组
例如:修改test1.txt文件的拥有者为ly,[root@centos test]# chown ly test1.txt
修改test2.txt文件的拥有者为ly,所属组为ly, [root@centos test]# chown ly:ly test2.txt
-R 递归修改目录及子目录和文件的拥有者或所属组
例如,修改test目录及其子目录和文件的拥有者为lv,修改所属组为ly
[root@centos ~]# chown -R ly:ly test/
修改文件所属组,chgrp
chgrp修改文件或目录所属组的使用规则
chgrp 组名 文件或目录 — — —需保证组名是真实存在的,也就是在/etc/group里面存在的
例如,修改test1.txt所属的组为ly
centos test]# chgrp ly test1.txt
-R 递归修改目录及子目录和文件的所属组
例如,修改test目录及其子目录和文件的所属组为ly
[root@centos ~]# chgrp -R ly test/