vlambda博客
学习文章列表

【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可读,现想修改该文件为所有人可读,那如何修改呢?【Linux】修改文件属性与权限

test.txt文件当前的权限:-rw-r--r--,权限的数字表示为:644

修改后的文件权限应该为:-rw-rw-rw-,数字表示为:666

命令操作为:chmod 666 test.txt

666表示修改后的文件权限数字表示,test.txt为要修改权限的文件或目录【Linux】修改文件属性与权限

如果在一个目录里有多个文件或目录,如何一次性修改该目录及其子目录和文件权限?

例如,test目录里包含若干文件及子目录,权限如下【Linux】修改文件属性与权限

现想将test目录及其子目录和文件权限改为可读、可写、可执行

命令操作为:chmod -R 777 test【Linux】修改文件属性与权限

-R:表示递归修改,连同文件下的子目录和文件一同修改


符号格式修改文件权限

符号格式修改文件权限时,利用u、g、o分别表示user(owner)、group和others三种身份,利用all表示全部分身,r、w、x分别表示每个身份下的读、写、执行权限,用+表示添加权限,-表示减少权限,=表示设置权限,表示如下表

【Linux】修改文件属性与权限

例如:设置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

【Linux】修改文件属性与权限

-R 递归修改目录及子目录和文件的拥有者或所属组

例如,修改test目录及其子目录和文件的拥有者为lv,修改所属组为ly

[root@centos ~]# chown -R ly:ly test/

【Linux】修改文件属性与权限

修改文件所属组,chgrp

chgrp修改文件或目录所属组的使用规则

chgrp  组名  文件或目录         — — —需保证组名是真实存在的,也就是在/etc/group里面存在的

例如,修改test1.txt所属的组为ly

centos test]# chgrp ly test1.txt

-R 递归修改目录及子目录和文件的所属组

例如,修改test目录及其子目录和文件的所属组为ly

[root@centos ~]# chgrp -R ly test/