日期:2014-05-16  浏览次数:20632 次

Linux/Unix学习笔记-文件及权限
创建文件的用户和他(她)所属于的组拥有该文件。文件的属主可以设定谁具有读、写、执
行该文件的权限。当然,根用户或系统管理员可以改变任何普通用户的设置。一个文件一经
创建,就具有三种访问方式:
1) 读,可以显示该文件的内容。
2) 写,可以编辑或删除它。
3) 执行,如果该文件是一个s h e l l脚本或程序。
按照所针对的用户,文件的权限可分为三类:
1) 文件属主,创建该文件的用户。
2) 同组用户,拥有该文件的用户组中的任何用户。
3) 其他用户,即不属于拥有该文件的用户组的某一用户。

当你创建一个文件的时候,系统保存了有关该文件的全部信息,包括:
? 文件的位置。
? 文件类型。
? 文件长度。
? 哪位用户拥有该文件,哪些用户可以访问该文件。
? i节点。
? 文件的修改时间。
? 文件的权限位。
可用ls -l 命令查看
[root@jstest ~]# ls -l
总用量 40256
-rw-r--r--   1 root    root        12  5月  4 17:07 aaa
-rw-r--r--   1 root    root      1279 2009-09-24  anaconda-ks.cfg
-rwxr--r--   1 root    root        79  4月 23 13:00 boss_imp.sh
-rw-rw-r--   1 app     app       1880  4月 27 11:35 boss_test.sh
drwxrwxr-x  69 htt     users     4096 2008-05-16  db-4.7.25
-rw-r--r--   1 root    root  13124129 2009-11-04  db-4.7.25.tar.tar
drwxrwxr-x  72 htt     users     4096 2009-08-17  db-4.8.24
-rw-r--r--   1 root    root  22900528 2009-11-04  db-4.8.24.tar.tar
drwxr-xr-x   3 root    root      4096 11月 11 12:02 db_data
drwxr-xr-x   2 root    root      4096 2009-09-24  Desktop
……

总用量 40256:这一行告诉我们该目录中所有文件所占的空间。
-rw-r--r--:这是该文件的权限位。如果除去最前面的横杠,这里一共是9个字符,他们
分别对应9个权限位。通过这些权限位,可以设定用户对文件的访问权限。这9个字符可以分
为三组:
rw-:文件属主权限这是前面三位
r--:同组用户权限这是中间三位
r--:其他用户权限这是最后三位
出现在r、w、x位置上的横杠表示相应的访问权限被禁止。
1 该文件硬链接的数目。
root 文件的属主。
root 文件的属主root所在的缺省组(也叫做root)。
12 用字节来表示的文件长度,记住,不是K字节!
5月  4 17:07 文件的更新时间。
aaa 文件名。

文件类型有七种,它可以从ls -l命令所列出的结果的第一位看出,这七种类型是:
d 目录。
l 符号链接(指向另一个文件)。
s 套接字文件。
b 块设备文件。
c 字符设备文件。
p 命名管道文件。
- 普通文件,或者更准确地说,不属于以上几种类型的文件。

权限分三种:
r 读(目录的读权限位意味着可以列出其中的内容)
w 写(目录的写权限位意味着可以在该目录中创建文件)
x 执行(目录的执行权限位则意味着搜索和访问该目录)

chmod命令修改权限
chmod命令的一般格式为:
chmod [who] operator [permission] filename
who的含义是:
u 文件属主权限。
g 同组用户权限。
o 其他用户权限。
a 所有用户(文件属主、同组用户及其他用户)。
operator的含义:
+ 增加权限。
- 取消权限。
= 设定权限。
permission的含义:
r 读权限。
w 写权限。
x 执行权限。
s 文件属主和组set-ID。
t 粘性位*。
l 给文件加锁,使其他用户无法访问。
u,g,o 针对文件属主、同组用户及其他用户的操作。
引用
*在列文件或目录时,有时会遇到“ t”位。“t”代表了粘性位。如果在一个目录上出现
“t”位,这就意味着该目录中的文件只有其属主才可以删除,即使某个同组用户具有和属主
同等的权限。不过有的系统在这一规则上并不十分严格。
如果在文件列表时看到“ t”,那么这就意味着该脚本或程序在执行时会被放在交换区(虚
存)。不过由于当今的内存价格如此之低,大可不必理会文件的“ t”的使用。


chmod例子:
chmod a-x myfile rw- rw- rw- 收回所有用户的执行权限
chmod og-w myfile rw- r-- r- - 收回同组用户和其他用户的写权限
chmod g+w myfile rw- rw- r- - 赋予同组用户写权限
chmod u+x myfile rwx rw- r- - 赋予文件属主执行权限
chmod go+x myfile rwx rwx r- x 赋予同组用户和其他用户执行权限

chmod命令还有绝对模式
chmod [mode] file 其中mode是一个八进制数。
在绝对模式中,权限部分有着不同的含义。每一个权限位用一个八进制数来代表
0 4 0 0 文件属主可读   0 0 1 0 同组用户可执行
0 2 0 0 文件属主可写   0 0 0 4 其他用户可读
0 1 0 0 文件属主可执行 0 0 0 2 其他用户可写
0 0 4 0 同组用户可读   0 0 0 1 其他用户可执行
0 0 2 0 同组用户可写
1代表执行,2代表写,4代表读

命令        结果          含义
chmod 666 rw- rw- rw- 赋予所有用户读和写的权限
chmod 644 rw- r-- r-- 赋予所有文件属主读和写的权限,所有其他用户读权限
chmod 744 rwx r-- r-- 赋予文件属主读、写和执行的权限,所有其他用户读的权限
chmod 664 rw- rw- r-- 赋予文件属主和同组用户读和写的权限,其他用户读权限
chmod 700 rwx --- --- 赋予文件属主读、写和执行的权限
chmod 444 r-- r-- r-- 赋予所有用户读权限

可以通过使用- R选项连同子目录下的文件一起设置:
chmod -R 664 /home/app/test

umask命令
  umask命令确定了你创建文件的缺省模式。这一命令实际上和chmod命令正好相反。你的系统管理员必须要为你设置一个合理的umask值,以确保你创建的文件具有所希望的缺省权限,防止其他非同组用户对你的文件具有写权限。在已经登录之后,可以按照个人的偏好使用umask命令来改变文件创建的缺省权限。相应的改变直到退出该shell或使用另外的umask命令之前一直有效。
  umask命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、
其他用户)存在一个相应的umask值中的数字。对于文件来说,这一数字的最大值分别是6。系
统不允许你在创建一个文本文件时就赋予它执行权限,必须在创建后用chmod命