linux的文件属性与权限设置
今天停电,正好把一直没空看的《鸟哥的linux私房菜》摸出来接着上次的继续看,看的是关于linux文件属性与权限设置,终于明白了很多问题,比如有时候ls列出来的文件有一大串-还有rwx之类的字符,比如在上传某些网站程序到*nix主机的时候要设置文件目录为777等。
关于linux的文件属性
当用ls -al列出文件列表的时候,所列出的表差不多如下所示:
drwx------ 2 root root 4096 Feb 10 00:44 .ssh
第一个组表示文件属性,第二组的2表示节点数,第一个root表示文件拥有者,第二个root表示拥有者所属的群组,4096表示文件大小,后面的时间表示文件创建或最后修改的时间,最后的.ssh表示文件名,文件名前有.表示该文件为隐藏文件,平时用ls列表的时候不会显示出来,要用ls -al才会列出,
前面的drwx——就是文件的属性,其实每个文件的属性都是由十位字符表示,第一位字符表示文件的类型,d表示为文件夹,-表示为文件,l表示为链接文件,也就相当于windows的快捷方式,另外还有b表示可储存周边设备,简单的说就是硬盘啦,c表示序列设备,例如键盘鼠标什么的;另外九位分为三组,内容都为rwx或-,分别表示文件拥有者的权限,用户所属组的权限和其他用户的权限,r表示可读,w表示可写,x表示可执行,另外特别注意的是如果是目录,光有r权限可不行,必须要有x权限才能进入,因为如果没有可执行的权限,连cd命令都无法执行,当然就进不去了。在windows下文件是否可执行取决于文件扩展名,如.exe、.bat、.com,但linux下文件是否可执行取决于是否拥有x权限。
关于改变文件的属性
1、改变文件所属群组
格式为:chgrp 群组名 文件或目录名
其中群组名必须已经存在于/etc/group文件中了,否则会提示出错。
chgrp是change group的缩写
2、改变文件拥有者
格式为:chown [-R] 用户名 文件或目录名
chown [-R] 用户名:群组名 文件或目录名
其中用户名必须已经存在于/etc/passwd文件中
chown是change owner的缩写,-R属性表示同时将目录下的子目录和文件的拥有者也同时改掉。
改变文件拥有者有什么意义呢?比如你要复制一个文件给其他人,但文件的拥有者是你,如果文件本身的属性是其他人无访问权限,那么复制给人家的文件人家就无法使用了,所以你要将文件拥有者更改掉。
3、改变权限的属性
格式为:chmod [-R] xyz 文件或目录名 (xyz为三位数字)
第一个数字表示拥有者的权限,第二个数字表示群组权限,第三个数字表示其他用户的权限
rwx ---
111 000
这点我有点表达不出来了,其实三种权限,用一个三位的二进制表示,如果拥有该权限,则对应的数值为1,如只拥有r属性,则为100,只拥有w属性,则为010,只拥有x属性,则为001,如拥有rwx属性,则为111,换为十进制,就是r:4,w:2,x:1,也就是说拥有rwx属性,则该数字为7
这也就是为什么在ftp的时候要改变某些文件的属性为777的原因了,就是让该文件或文件夹任何用户都拥有读写执行的权限。
另外改变属性还有一种用字符的方式,就像dos下改变文件属性用的attrib file +s +r -w一样
chmod | u g
o a |
+ –
= |
r w
x |
文件名 |
u表示拥有者user,g表示群组group,o表示其他用户other,a表示全部all
+表示添加,-表示去掉,=表示设定
可能开始有些看不懂,我也看了老半天才明白,用几个例子来实现
chmod u=rwx,go=r filename
chmod ug+x,o-w filename
chmod a=rw filename
第一个表示给filename文件设定属性拥有者为rwx,群组和其他为r属性,用=不管你文件之前有什么属性,一律改为你现在所设的属性,这个例子就是不管你之前文件是什么属性,如rwxrwxrwx,现在改为rwxr–r–
第二个表示给filename文件的拥有者和群组加上x属性,其他用户去掉w属性,如之前为rw-rw-rw-,现在为rwxrwxr–,用+-跟dos下的attrib命令有点像了。
第三个表示给filename文件设定属性为rw-rw-rw-
看看这些东西其实收获蛮大的,以前ftp的时候用flashfxp设定属性也知道777、775之类,每设定一个不同的数字则打不同的勾,现在终于明白了它的意思