《生活宝典shenghuobaodian.com》讯 在UNIX-like的操作系统中,文件可分成几种:
一般文件:纯文本文件、二进制文件。
目录文件:包含文件的活页夹。
设备文件:字符文件、磁盘文件。主要是和周边硬件连接,作为系统和硬件间的沟通接口。
内部进程通信文件:有Socket文件、连接文件(Pipe/FIFO)两种。
特殊文件:符合链接文件。
隐藏文件:文件名的第一个字符是.(半角句号)
代码:
1. d 目录。
2. l 符号链接(指向另一个文件)。
3. s 套接字文件。
4. b 块设备文件。
5. c 字符设备文件。
6. p 连接文件(命名管道文件)。
7. - 普通文件,或者更准确地说,不属于以上几种类型的文件。
创建了一个空文件,现在用ls -l命令查看该目录下文件的属性:
如下:
代码:
1. [root@Linux_chenwy temp]# ls -l
2. 总用量 36
3. -rw-r--r-- 1 root root 34890 10月 19 20:17 httpd.conf
4. -rw-r--r-- 1 root root 0 10月 19 20:16 temp
代码:
1. 总用量 36:是ls所列出的入口占用空间的字节数(以K为单位)。
2. 1该文件硬链接的数目。
3. root:文件属主。
4. root:文件属组(一般是文件属主所在的缺省组。)
5. 34890:字节来表示的文件长度,记住,不是K字节!
6. 10月 19 20:17:件的更新时间。
7. temp or httd.conf :件名。
首先我们要先了解你所用的文件系统的IO BLOCK(中文叫作簇)为多少,在你所使用的这个文件系统的IO BLOCK大小是4096 Bytes。
他意义是文件系统最小的读写及分配单位,每次读写操作你都不能小于这个尺寸。即使你的文件是只有一个 字节。而且文件在硬盘上的存储也是以这个为单位,就是说如果文件尺寸小于这个值,那么它在磁盘上占用的空间就是4096字节。
占用空间的具体算法是:(进一(文件尺寸/4096))×4096。根据这个你就可以计算出你所列举的例子中的文件的空间使用状况:34890除以 4096,大约等于8.5,进一法取得为9,就是说文件在磁盘上占用了9个BLOCk,每个BLOCK为4K,所以这两个文件占用的空间就是36K。
这个规则也适合于目录,不过不会出现为0的目录,即使是空目录
-rw-r--r-- :这是该文件的权限位。
第一个横杠:指定文件类型,表示该文件是一个普通文件。(所创建的文件绝大多数都是普通文件或符号链接文件)。
除去最前面的横杠,一共是9个字符,他们分别对应9个权限位。通过这些权限位,可以设定用户对文件的访问权限。对这两个文件的精确解释是:
代码:
1. rw-:前三位,文件属主可读、写
2. r--:中间三位,组用户可读
3. r--:最后三位,其他用户只可读
在创建的时候并未给属主赋予执行权限,在用户创建文件时,系统不会自动地设置执行权限位。这是出于加强系统安全的考虑
文件的权限位中中每一组字符中含有三个权限位:
代码:
1. r 读权限
2. w 写/更改权限
3. x 执行该脚本或程序的权限
代码:
1. r-- --- --- 文文件属主可读,但不能写或执行
2. r-- r-- --- 文文件属主和属组用户(一般来说,是文件属主所在的缺省组)可读
3. r-- r-- r- - 文任何用户都可读,但不能写或执行
4. rwx r-- r- - 文文件属主可读、写、执行,属组用户和其他用户只可读
5. rwx r-x --- 文文件属主可读、写、执行,属组用户可读、执
6. rwx r-x r- x 文文件属主可读、写、执行,属组用户和其他用户可读、执行
7. rw- rw- --- 文文件属主和属组用户可读、写
8. rw- rw- r- - 文文件属主和属组用户可读、写,其他用户可读
9. rw- rw- --- 文文件属主和属组用户及其他用户读可以读、写,慎用这种权限
10. 设置,因为任何用户都可以写入该文件
在UNIX-like的操作系统中,文件可分成几种:
一般文件:纯文本文件、二进制文件。
目录文件:包含文件的活页夹。
设备文件:字符文件、磁盘文件。主要是和周边硬件连接,作为系统和硬件间的沟通接口。
内部进程通信文件:有Socket文件、连接文件(Pipe/FIFO)两种。
特殊文件:符合链接文件。
隐藏文件:文件名的第一个字符是.(半角句号)
代码:
1. d 目录。
2. l 符号链接(指向另一个文件)。
3. s 套接字文件。
4. b 块设备文件。
5. c 字符设备文件。
6. p 连接文件(命名管道文件)。
7. - 普通文件,或者更准确地说,不属于以上几种类型的文件。
创建了一个空文件,现在用ls -l命令查看该目录下文件的属性:
如下:
代码:
1. [root@Linux_chenwy temp]# ls -l
2. 总用量 36
3. -rw-r--r-- 1 root root 34890 10月 19 20:17 httpd.conf
4. -rw-r--r-- 1 root root 0 10月 19 20:16 temp
代码:
1. 总用量 36:是ls所列出的入口占用空间的字节数(以K为单位)。
2. 1该文件硬链接的数目。
3. root:文件属主。
4. root:文件属组(一般是文件属主所在的缺省组。)
5. 34890:字节来表示的文件长度,记住,不是K字节!
6. 10月 19 20:17:件的更新时间。
7. temp or httd.conf :件名。
首先我们要先了解你所用的文件系统的IO BLOCK(中文叫作簇)为多少,在你所使用的这个文件系统的IO BLOCK大小是4096 Bytes。
他意义是文件系统最小的读写及分配单位,每次读写操作你都不能小于这个尺寸。即使你的文件是只有一个字节。而且文件在硬盘上的存储也是以这个为单位,就是说如果文件尺寸小于这个值,那么它在磁盘上占用的空间就是4096字节。
占用空间的具体算法是:(进一(文件尺寸/4096))×4096。根据这个你就可以计算出你所列举的例子中的文件的空间使用状况:34890除以 4096,大约等于8.5,进一法取得为9,就是说文件在磁盘上占用了9个BLOCk,每个BLOCK为4K,所以这两个文件占用的空间就是36K。
这个规则也适合于目录,不过不会出现为0的目录,即使是空目录
-rw-r--r-- :这是该文件的权限位。
第一个横杠:指定文件类型,表示该文件是一个普通文件。(所创建的文件绝大多数都是普通文件或符号链接文件)。
除去最前面的横杠,一共是9个字符,他们分别对应9个权限位。通过这些权限位,可以设定用户对文件的访问权限。对这两个文件的精确解释是:
代码:
1. rw-:前三位,文件属主可读、写
2. r--:中间三位,组用户可读
3. r--:最后三位,其他用户只可读
在创建的时候并未给属主赋予执行权限,在用户创建文件时,系统不会自动地设置执行权限位。这是出于加强系统安全的考虑
文件的权限位中中每一组字符中含有三个权限位:
代码:
1. r 读权限
2. w 写/更改权限
3. x 执行该脚本或程序的权限
代码:
1. r-- --- --- 文文件属主可读,但不能写或执行
2. r-- r-- --- 文文件属主和属组用户(一般来说,是文件属主所在的缺省组)可读
3. r-- r-- r- - 文任何用户都可读,但不能写或执行
4. rwx r-- r- - 文文件属主可读、写、执行,属组用户和其他用户只可读
5. rwx r-x --- 文文件属主可读、写、执行,属组用户可读、执
6. rwx r-x r- x 文文件属主可读、写、执行,属组用户和其他用户可读、执行
7. rw- rw- --- 文文件属主和属组用户可读、写
8. rw- rw- r- - 文文件属主和属组用户可读、写,其他用户可读
9. rw- rw- --- 文文件属主和属组用户及其他用户读可以读、写,慎用这种权限
10. 设置,因为任何用户都可以写入该文件
000001010011
对应 new file 的 0666:
000110110110
结果, 凡是 umask 1 的位置都设为 0, 得:
000110100100
再转回 8 进位就是:
0644
若你简单用减法来算的话, 是不对的:
0666
-0123
-------
0543 (000101100011)
真的公式可参考这个:
(bitwise_NOT umask) AND default_mode = new_permission
上例:
(bitwise_NOT 0123) AND 0666 = 0644
计算过程如下:
000001010011
bitwise_NOT 得:
111110101100
AND
000110110110
得:
000110100100
换算为 8 进位, 就是:
0644
用 2 进位来算是最接近电脑思维的方法, 也是最准确的.
只是人们一般不习惯 2 进位思维而已, 一旦熟悉之后就万变不离其宗了!
举例:
代码:
chan@chan-Think:~$ touch test //创建test文件
chan@chan-Think:~$ ls -l test
-rw-r--r-- 1 chan chan 0 2010-11-30 18:23 test
chan@chan-Think:~$ chmod a+x test //给所有用户添加执行的权限
chan@chan-Think:~$ ls -l test
-rwxr-xr-x 1 chan chan 0 2010-11-30 18:23 test
chan@chan-Think:~$ chmod go+w test //给组用户和other用户添加写的权限
chan@chan-Think:~$ ls -l test
-rwxrwxrwx 1 chan chan 0 2010-11-30 18:23 test
chan@chan-Think:~$ chmod o-w test //删除other用户写的权限
chan@chan-Think:~$ ls -l test
-rwxrwxr-x 1 chan chan 0 2010-11-30 18:23 test
chmod命令绝对模式的一般形式为:
chmod [mode] file
其中m o d e是一个八进制数。
在绝对模式中,权限部分有着不同的含义。每一个权限位用一个八进制数来代表,如
代码:
1. 0 4 0 0 文件属主可读
2. 0 2 0 0 文件属主可写
3. 0 1 0 0 文件属主可执行
4.
5. 0 0 4 0 属组用户可读
6. 0 0 2 0 属组用户可写
7. 0 0 1 0 属组用户可执行
8.
9. 0 0 0 4 其他用户可读
10. 0 0 0 2 其他用户可写
11. 0 0 0 1 其他用户可执行
有一个计算八进制权限表示的更好办法,如下:
代码:
1. 文件属主:r w x:4 + 2 + 1
2. 属组用户:r w x:4 + 2 + 1
3. 其他用户:r w x:4 + 2 + 1
代码:
-rwx-rw- r-x 1 chan chan 0 2010-11-30 18:23 test
-421-42-4-1
user = 7
group = 6
other = 5
把相应权限位所对应的值加在一起,就是765
代码:
1. chmod 666 rw- rw- rw- 赋予所有用户读和写的权限
2. chmod 644 rw- r-- r- - 赋予所有文件属主读和写的权限,所有其他用户读权限
3. chmod 744 rwx r-- r- - 赋予文件属主读、写和执行的权限,所有其他用户读的权限
4. chmod 664 rw- rw- r- - 赋予文件属主和属组用户读和写的权限,其他用户读权限
5. chmod 700 rwx --- --- 赋予文件属主读、写和执行的权限
6. chmod 444 r-- r-- r- - 赋予所有用户读权限
当你创建一个文件时,你就是该文件的属主。一旦你拥有某个文件,就可以改变它的所有权,把它的所有权交给另外一个/ e t c / p a s s w d文件中存在的合法用户。可以使用用户名或用户I D号来完成这一操作。
在改变一个文件的所有权时,相应的s u i d也将被清除,这是出于安全性的考虑。只有文件的属主和系统管理员可以改变文件的所有权。一旦将文件的所有权交给另外一个用户,就无法再重新收回它的所有权。如果真的需要这样做,那么就只有求助于系统管理员了。
1、c h o w n命令的一般形式为:
代码:
chmod -R -h owner file
引用:
- R选项意味着对所有子目录下的文件也都进行同样的操作。
- h选项意味着在改变符号链接文件的属主时不影响该链接所指向的目标文件。
2、chown举例
代码:
1. 如:
2. # ls -l
3. drwxrwxr-x 2 sam sam 4096 10月 26 19:48 sam
4. # chown gem sam
5. # ls -l
6. drwxrwxr-x 2 gem sam 4096 10月 26 19:48 sam
文件sam的所有权现在由用户sam交给了用户gem。
3、chgrp举例
c h g r p命令和c h o w n命令的格式差不多,下面给出一个例子。
代码:
1. # ls -l
2. drwxrwxr-x 2 gem sam 4096 10月 26 19:48 sam
3. # chgrp group sam
4. # ls -l
5. drwxrwxr-x 2 gem group 4096 10月 26 19:48 sam
现在把该文件sam所属的组由sam变为group。
可以用#cat /etc/passwd和#cat /etc/group直接查看用户和组
代码:
chan@chan-Think:/tmp$ id
uid=1000(chan) gid=1000(chan) 组=1000(chan),4(adm),20(dialout),24(cdrom),46(plugdev),111(lpadmin),119(admin),122(sambashare)
当最初登录到系统中时, u m a s k命令确定了你创建文件的缺省模式。这一命令实际上和c h m o d命令正好相反。你的系统管理员必须要为你设置一个合理的u m a s k值,以确保你创建的文件具有所希望的缺省权限,防止其他非同组用户对你的文件具有写权限。
在已经登录之后,可以按照个人的偏好使用u m a s k命令来改变文件创建的缺省权限。相应的改变直到退出该s h e l l或使用另外的u m a s k命令之前一直有效。
一般来说,u m a s k命令是在/ e t c / p r o f i l e文件中设置的,每个用户在登录时都会引用这个文件,所以如果希望改变所有用户的u m a s k,可以在该文件中加入相应的条目。如果希望永久性地设置自己的u m a s k值,那么就把它放在自己$ H O M E目录下的. p r o f i l e或. b a s h _ p r o f i l e文件中。
代码:
umask nnn
nnn=000~777
u m a s k命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、属组、其他用户)存在一个相应的u m a s k值中的数字。对于文件来说,这一数字的最大值分别是6。系统不允许你在创建一个文本文件时就赋予它执行权限,必须在创建后用c h m o d命令增加这一权限。目录则允许设置执行权限,这样针对目录来说, u m a s k中各个数字最大可以到7。
引用:
1) 文件的最大权限rwx rwx rwx (777)
2) umask值为0 0 2 - - - - - - -w-
3) 目录权限rwx rwx r-x (775) 这就是目录创建缺省权限
4) 文件权限rw- rw- r-- (664) 这就是文件创建缺省权限
引用:
1) 文件的最大权限rwx rwx rwx (777)
2 ) u m a s k值为0 2 2 - - - -w- -w-
3) 目录权限rwx r-x r-x (755) 这就是目录创建缺省权限
4) 文件权限rw- r-- r-- (644) 这就是文件创建缺省权限
可以看出来umask是一个取反的运算,跟IP的掩码相似 从手机浏览器访问《生活宝典》 |