第四章:Linux文件的权限

2010年01月30日 Linux视频 暂无评论 阅读 8,781 views 次

课程内容简介
linux系统下的文件类型
linux系统中用颜色表示文件类型
改变linux文件权限的一些常用命令
简要说明一下UMASK

Linux下用字符表示的文件类型
linux中文件名最大为255个字符
.开头的文件为隐藏文件
-:普通文件
d:目录文件
l:链接文件
b:块设备文件 ls -l /dev/hda3
c:字符设备文件 ls -l /dev/mice
p:管道文件 ls -l /dev/initctl
s: 网络文件 (套接口文件) ls -l /dev/gpmctl 当我们启动MySQL服务器时,会产生一个mysql.sock的文件。

-:普通文件
我们用 ls -lh 来查看某个文件的属性,可以看到有类似 -rw-r--r-- ,值得注意的是第一个符号是 - ,这样的文件在Linux中就是普通文件。这些文件一般是用一些相关的应用程序创建,比如图像工具、文档工具、归档工具... .... 或 cp工具等。这类文件的删除方式是用rm 命令;
d:目录文件
当我们在某个目录下执行,看到有类似 drwxr-xr-x ,这样的文件就是目录,目录在Linux是一个比较特殊的文件。注意它的第一个字符是d。创建目录的命令可以用 mkdir 命令,或cp命令,cp可以把一个目录复制为另一个目录。删除用rm 或rmdir命令。
l:链接文件
当我们查看文件属性时,会看到有类似 lrwxrwxrwx,注意第一个字符是l,这类文件是链接文件。是通过ln -s 源文件名 新文件名 。怎么理解呢?这和Windows操作系统中的快捷方式有点相似。
b:块设备文件
我们看到/dev/tty的属性是 crw-rw-rw- ,注意前面第一个字符是 c ,这表示字符设备文件。比如猫等串口设备。我们看到 /dev/hda1 的属性是 brw-r----- ,注意前面的第一个字符是b,这表示块设备,比如硬盘,光驱等设备;这个种类的文件,是用mknode来创建,用rm来删除。目前在最新的Linux发行版本中,我们一般不用自己来创建设备文件。因为这些文件是和内核相关联的。
c:字符设备文件
与块设备文件的区别在于,一般块设备的数据是以一定大小一定的块操作,而字符设备文件是可能一个字节一个操作,不需要分块。通常linux系统将设备文件放在/DEV目录下,设备文件使用设备的主设备号和次设备号来指定某外部设备。根据访问的方式不同,设备文件又可以细分为块设备和字符设备文件。
p:管道文件
管道文件是一种特殊的文件,主要用于不同进程间的信息传递。当两个进程间需要进行数据或信息传递时,可能通过管道文件。一个进程将需要传递的数据或信息写入管道的一端,另一进程则从管道的另一端取得所需要的数据或信息,通常管道是建立在调整缓存中。
s: 套接口文件。网络类型文件,一般会在/TMP目录中能发现他的身影,是系统进行网络通信时使用的socket。如当我们启动MySQL服务器时,会产生一个mysql.sock的文件。

Linux系统中用不再的颜色来表示不同的文件类型
ls -al 文件类型 权限 链接数 文件拥有者 文件拥有组 内容大小 更改时间 文件名
蓝色文件----------目录
白色文件----------一般性文件,如文本文件,配置文件,源码文件等
浅蓝色文件----------链接文件,主要是使用ln命令建立的文件
绿色文件----------可执行文件,可执行的程序
红色文件-----------压缩文件或者包文件

Linux文件的扩展名;
一谈到文件类型,大家就能想到Windows的文件类型,比如file.txt、file.doc、file.sys、file.mp3、file.exe等,根据文件的后缀就能判断文件的类型。但在Linux一个文件是否能被执行,和后缀名没有太大的关系,主要看文件的属性有关。但我们了解一下Linux文件的后缀名还是有必要的,特别是我们自己创建一些文件,最好还是加后缀名,这样做的目的是仅仅是为了我们的在应用时方便。
现在的Linux桌面环境和Windows一样智能化,文件的类型是和相应的程序关联的。在我们打开某个文件时,系统会自动判断用哪个应用程序打开。如果从这方面来说,Linux桌面环境和Windows桌面没有太大的区别。
在Linux中,带有扩展名的文件,只能代表程序的关联,并不能说明文件是可以执行,从这方面来说,Linux的扩展名没有太大的意义。
file.tar.gz file.tgz file.tar.bz2 file.rar file.gz file.zip ... ... 这些大家都熟悉,是归档文件。要通过相应的工具来解压或提取;
file.php 这个大家都知道吧,是能用php语言解释器进行解释,能用浏览器打开的文件;
file.so 这类是库文件;
file.doc file.obt 这是OpenOffice 能打开的文件;
... ...
用一些工具创建的文件,其后缀也不相同,就看我们用什么工具了,比如 Gimp,gedit,OpenOffice 等工具,创建出来的文件后缀名也不一样。

改变linux文件权限的一些常用命令
chmod(change mode)
功能说明:变更文件或目录的权限。
语  法:chmod [-cfRv][--help][--version][<权限范围>+/-/=<权限设置...>][文件或目录...] 或 chmod [-cfRv][--help][--version][数字代号][文件或目录...] 或 chmod [-cfRv][--help][--reference=<参考文件或目录>][--version][文件或目录...]
补充说明:在UNIX系统家族里,文件或目录权限的控制分别以读取,写入,执行3种一般权限来区分,另有3种特殊权限可供运用,再搭配拥有者与所属群组管理权限范围。您可以使用chmod指令去变更文件与目录的权限,设置方式采用文字或数字代号皆可。符号连接的权限无法变更,如果您对符号连接修改权限,其改变会作用在被连接的原始文件。权限范围的表示法如下:
 u:User,即文件或目录的拥有者。
 g:Group,即文件或目录的所属群组。
 o:Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围。
 a:All,即全部的用户,包含拥有者,所属群组以及其他用户。

有关权限代号的部分,列表于下:
 r:读取权限,数字代号为"4"。
 w:写入权限,数字代号为"2"。
 x:执行或切换权限,数字代号为"1"。
 -:不具任何权限,数字代号为"0"。

数字设定的关键是mode的取值,一开始许多初学者会被搞糊涂,其实很简单,我们将rwx看成二进制数,如果有则有1表示,没有则有0表示,那么rwx r-x r- -则可以表示成为:
  111 101 100
 再将其每三位转换成为一个十进制数,就是754。
  例如,我们想让a.txt这个文件的权限为:
  自己 同组用户 其他用户
  可读 是 是 是
  可写 是 是
可执行
那么,我们先根据上表得到权限串为:rw-rw-r--,那么转换成二进制数就是110 110 100,再每三位转换成为一个十进制数,就得到664,因此我 们执行命令:
[root@localhost ~]# chmod 664 a.txt

使用chmod访问权限看图

chmod u+s file
chmod -R g+w file

chmod
功能说明:变更文件或目录的权限。
参  数:
 -c或--changes  效果类似"-v"参数,但仅回报更改的部分。
 -f或--quiet或--silent  不显示错误信息。
 -R或--recursive  递归处理,将指定目录下的所有文件及子目录一并处理。
 -v或--verbose  显示指令执行过程。
 --help  在线帮助。
 --reference=<参考文件或目录>  把指定文件或目录的权限全部设成和参考文件或目录的权限相同
 --version  显示版本信息。
 <权限范围>+<权限设置>  开启权限范围的文件或目录的该项权限设置。
 <权限范围>-<权限设置>  关闭权限范围的文件或目录的该项权限设置。
 <权限范围>=<权限设置>  指定权限范围的文件或目录的该项权限设置。

chown(change owner)
功能说明:变更文件或目录的拥有者或所属群组。
语  法:chown [-cfhRv][--dereference][--help][--version][拥有者.<所属群组>][文件或目录..] 或chown [-chfRv][--dereference][--help][--version][.所属群组][文件或目录... ...] 或chown [-cfhRv][--dereference][--help][--reference=<参考文件或目录>][--version][文件或目录...]
补充说明:在UNIX系统家族里,文件或目录权限的掌控以拥有者及所属群组来管理。您可以使用chown指令去变更文件与目录的拥有者或所属群组,设置方式采用用户名称或用户识别码皆可,设置群组则用群组名称或群组识别码。
参  数:
 -c或--changes  效果类似"-v"参数,但仅回报更改的部分。
 -f或--quite或--silent  不显示错误信息。
 -h或--no-dereference  之对符号连接的文件作修改,而不更动其他任何相关文件。
 -R或--recursive  递归处理,将指定目录下的所有文件及子目录一并处理。
 -v或--version  显示指令执行过程。
 --dereference  效果和"-h"参数相同。
 --help  在线帮助。
 --reference=<参考文件或目录>  把指定文件或目录的拥有者与所属群组全部设成和参考文件或目 录的拥有者与所属群组相同。
 --version  显示版本信息。

chgrp(change group)
功能说明:变更文件或目录的所属群组。
语  法:chgrp [-cfhRv][--help][--version][所属群组][文件或目录...] 或 chgrp [-cfhRv][--help][--reference=<参考文件或目录>][--version][文件或目录...]
补充说明:在UNIX系统家族里,文件或目录权限的掌控以拥有者及所属群组来管理。您可以使用chgrp指令去变更文件与目录的所属群组,设置方式采用群组名称或群组识别码皆可。
参  数:
 -c或--changes 效果类似"-v"参数,但仅回报更改的部分。
 -f或--quiet或--silent  不显示错误信息。
 -h或--no-dereference  只对符号连接的文件作修改,而不更动其他任何相关文件。
 -R或--recursive  递归处理,将指定目录下的所有文件及子目录一并处理。
 -v或--verbose  显示指令执行过程。
 --help  在线帮助。
 --reference=<参考文件或目录>  把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同。
 --version  显示版本信息。

为什么系统最初建立的文件是644,目录为755呢?这就是我们下面要讲到的umask
功能说明:指定在建立文件时预设的权限掩码。
语  法:umask [-S][权限掩码]
补充说明:umask可用来设定[权限掩码]。[权限掩码]是由3个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限。
参  数:
-S  以文字的方式来表示权限掩码。
s或S(SUID,Set UID):可执行的文件搭配这个权限,便能得到特权,任意存取该文件的所有者能使用的全部系统资源。请注意具备SUID权限的文件,黑客经常利用这种权限,以SUID配上root帐号拥有者,无声无息地在系统中开扇后门,供日后进出使用。
s或S(SGID,Set GID):设置在文件上面,其效果与SUID相同,只不过将文件所有者换成用户组,该文件就可以任意存取整个用户组所能使用的系统资源。
T或T(Sticky):/tmp和 /var/tmp目录供所有用户暂时存取文件,亦即每位用户皆拥有完整的权限进入该目录,去浏览、删除和移动文件。
因为SUID、SGID、Sticky占用x的位置来表示,所以在表示上会有大小写之分。加入同时开启执行权限和SUID、SGID、Sticky,则权限表示字符是小写的:
-rwsr-sr-t 1 root root 4096 6月 23 08:17 conf
如果关闭执行权限,则表示字符会变成大写:
-rwSr-Sr-T 1 root root 4096 6月 23 08:17 conf
如果要加上特殊权限,就必须使用4位数字才能表示。特殊权限的对应数值为:
s或 S (SUID):对应数值4。
s或 S (SGID):对应数值2。
t或 T :对应数值1。

在umask中对文件来说,最大的数值是6,对文件夹来说,最大的数值是7。
大家看一下面的公式就明白了
666-umask值=文件的权限
777- umask值=文件夹的权限
普通用户是002,其建立的文件默认权限是666-002=664
其建立的文件夹默认权限是777-002=775
普通用户是022,其建立的文件默认权限是666-022=644
其建立的文件夹默认权限是777-042=755
★★★★★★★★★★★★★★★★★视频观看地址★★★★★★★★★★★★★★★★★★
http://www.boobooke.com/v/bbk1540
http://www.boobooke.com/v/bbk1541

给我留言

Copyright © 羽飞博客 保留所有权利.   Ality主题 皖ICP备14013844号-1

用户登录