Linux入门:文件权限、用户、用户组
单个文件名或目录名长度不超过255字符;文件或目录的绝对路径长度不超过4096字符;
一、文件所有者与用户组
一个文件有很多属性,包括文件类型、文件权限、文件隐藏权限、文件所有者、用户组、文件大小、创建日期、修改日期、访问日期等,比如下面是/etc/inittab文件的属性:
1.文件类型
(1)d:目录;(2)-:一般文件;(3)l:链接文件;(4)b:块设备,即存储设备,比如/dev/sda;(5)c:字符设备,即串行端口设备,如键盘,比如/dev/zero;(6)s:socket,比如/var/run/acpid.socket;(7)p:pipe文件,比如我们可以通过mknod mypipe p 创建pipe文件;
2.文件所有者与用户组
首先说明一点:文件所有者与用户组本身没有什么关系,比如用户组可以是root,但是文件所有者为xiazdong;案例分析:(1)一个文件的文件所有者为xiazdong,用户组为root,当前登录用户为xiazdong,如果想要让文件的所有者变成root,能成功吗?不能;(2)一个文件的文件所有者为xiazdong,用户组为root,当前登录用户为root,如果想要让文件的所有者变成root,能成功吗?能;总结一点:改文件的所有者、用户组应该是root的职责;
再说明一点:一个用户总会归属于一个或多个用户组,一个用户组里可以有多个用户,比如root用户归属于root用户组,但是我们也可以创建一个用户xzdong,及归属于group1用户组,又归属于group2用户组;
命令
chgrp、chown命令用来设置文件的所有者、用户组;(1)chgrp xiazdong test.txt:将test.txt的文件用户组设置为xiazdong;(2)chgrp xiazdong dir:将dir的文件用户组设置为xiazdong;(3)chown xiazdong test.txt:将test.txt的文件所有者设置为xiazdong;(4)chown xiazdong:root test.txt:将test.txt的文件所有者设置为xiazdong,用户组设置为root;
二、文件权限
文件权限规定了文件所有者对文件/目录的权限、文件所属用户组的成员对文件/目录的权限、其他人对于文件/目录的权限;(1)r:可读权限;(2)w:可写权限;(3)x:可执行权限;
对于目录和文件来说,这些权限代表的意义是不同的。对于文件来说:(1)r:可以读取文件的内容;(2)w:可以写入文件内容,但是不能删除文件,如果要赋予删除文件的权限,则需要指定目录权限;(3)x:执行文件,不是每个文件都需要这个权限的,比如txt文件不需要;
对于目录来说:(1)r:可以读取目录下的目录结构,即能够执行ls查看目录下的文件名;(2)w:能够改变目录的结构,即添加、删除目录下的文件、对文件重命名;(3)x:能够进入目录,即cd到该目录;但是请注意:如果目录只有r,但没有x权限,则只能ls出文件名,而不能显示文件属性,如下图所示:
注:如果dir目录下存在test.txt文件,如果xiazdong用户没有dir的写权限,则就算对test.txt有rwx权限,也不能删除test.txt;
最要注意的是:不管文件权限设置成什么样了(此处只讨论一般的权限,特殊权限不算),root都能够对文件或目录rwx;
案例:-rwxr--r-- 表示(1)文件所有者能够对该文件可读、可写、可执行;(2)所属用户组能够对该文件可读;(3)其他人能够对该文件可读;
命令
chmod命令可以设置文件的权限;注意:我们可以通过数字或符号设置权限;如果是数字,则4代表r,2代表w,1代表x,如果是5代表r-x,6代表rw-,7代表rwx;如果是符号,则a代表全部人,u代表owner,g代表group,o代表others,r就是r,w就是w,x就是x,什么都不写表示一个权限都没有;(1)chmod 755 test.txt:赋予test.txt rwxr-xr-x(2)chmod u=rwx,go=r test.txt:赋予test.txt rwxr--r--(3)chmod a=r test.txt:赋予test.txt r--r--r--(4)chmod a+x test.txt:给test.txt全部的人添加x权限;(5)chmod a-x test.txt:给test.txt全部的人删除x权限;(6)chmod u=rwx,go= test.txt:赋予test.txt rwx------