Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
在Linux中我们可以使用ll或者ls –l命令来显示一个文件的属性以及文件所属的用户和组,如:
[root@www /]# ls -l
total 64
dr-xr-xr-x 2 root root 4096 Dec 14 2012 bin
dr-xr-xr-x 4 root root 4096 Apr 19 2012 boot
……
实例中,bin文件的第一个属性用"d"表示。"d"在Linux中代表该文件是一个目录文件。
在Linux中第一个字符代表这个文件是目录、文件或链接文件等等。
接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。
每个文件的属性由左边第一部分的10个字符来确定(如下图)。
从左至右用0-9这些数字来表示。
第0位确定文件类型,第1-3位确定属主(该文件的所有者)拥有该文件的权限。
第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。
其中,第1、4、7位表示读权限,如果用"r"字符表示,则有读权限,如果用"-"字符表示,则没有读权限;
第2、5、8位表示写权限,如果用"w"字符表示,则有写权限,如果用"-"字符表示没有写权限;第3、6、9位表示可执行权限,如果用"x"字符表示,则有执行权限,如果用"-"字符表示,则没有执行权限。
语法:
chgrp [-R] 属组名 文件名
参数选项
语法:
chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
进入 /root 目录(~)将install.log的拥有者改为bin这个账号:
[root@www ~]# chown bin install.log
[root@www ~]# ls -l
-rw-r--r-- 1 bin users 68495 Jun 25 08:53 install.log
将install.log的拥有者与群组改回为root:
[root@www ~]# chown root:root install.log
[root@www ~]# ls -l
-rw-r--r-- 1 root root 68495 Jun 25 08:53 install.log
Linux文件属性有两种设置方法,一种是数字,一种是符号。
Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。
先复习一下刚刚上面提到的数据:文件的权限字符为:『-rwxrwxrwx』, 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx---] 分数则是:
所以等一下我们设定权限的变更时,该文件的权限数字就是770啦!变更权限的指令chmod的语法是这样的:
chmod [-R] xyz 文件或目录
选项与参数:
举例来说,如果要将.bashrc这个文件所有的权限都设定启用,那么命令如下:
[root@www ~]# ls -al .bashrc
-rw-r--r-- 1 root root 395 Jul 4 11:45 .bashrc
[root@www ~]# chmod 777 .bashrc
[root@www ~]# ls -al .bashrc
-rwxrwxrwx 1 root root 395 Jul 4 11:45 .bashrc
那如果要将权限变成 -rwxr-xr-- 呢?那么权限的分数就成为 [4+2+1][4+0+1][4+0+0]=754。
还有一个改变权限的方法,从之前的介绍中我们可以发现,基本上就九个权限分别是:
那么我们就可以使用 u, g, o 来代表三种身份的权限!
此外, a 则代表 all ,即全部的身份。读写的权限可以写成 r, w, x ,也就是可以使用下表的方式来看:
<colgroup><col span="1" width="166"><col span="1" width="166"><col span="1" width="166"><col span="1" width="166"><col span="1" width="166"></colgroup>
| chmod | u
g
o
a | +(加入)
-(除去)
=(设定) | r
w
x | 文件或目录 |
如果我们需要将文件权限设置为 -rwxr-xr-- ,可以使用 chmod u=rwx,g=rx,o=r 文件名 来设定:
-rw-r--r-- 1 root root 0 Nov 15 10:32 test1
-rwxr-xr-- 1 root root 0 Nov 15 10:32 test1
而如果是要将权限去掉而不改变其他已存在的权限呢?例如要拿掉全部人的可执行权限,则:
-rw-r--r-- 1 root root 0 Nov 15 10:32 test1
『贰』 LINUX查看文件属性命令是什么
linux lsattr命令: 显示文件属性介绍:x0dx0a文件属性在文件系统的安全管理方面起很重要的作用,linux下lsattr命令用于查看文件属性信息。x0dx0a语法:x0dx0ax0dx0alsattr [-adRvV] [文件或目录...]选项介绍:x0dx0a -a: 显示所有文件和目录,包括隐藏文件;x0dx0a -d: 显示目录名称,而非其内容;x0dx0a -R: 递归处理,将指定目录下的所有文件及子目录一并处理;x0dx0a -v: 显示文件或目录版本;x0dx0a -V: 显示版本信息;x0dx0ax0dx0a执行范例:x0dx0ax0dx0a1 $ chattr +ai text x0dx0ax0dx0a2 $ lsattr x0dx0ax0dx0a3 ----ia------- text x0dx0ax0dx0a扩展阅读:x0dx0achattr命令用于修改文件属性,chattr命令需要root权限。x0dx0ax0dx0a文件属性:x0dx0a a: append only; 系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。x0dx0ax0dx0a c: compressed; 系统以透明的方式压缩这个文件。从这个文件读取时,返回的是解压之后的数据;而向这个文件中写入数据时,数据首先被压缩之后才写入磁盘。x0dx0ax0dx0a d: no mp; 在进行文件系统备份时,mp程序将忽略这个文件。x0dx0ax0dx0a i: immutable; 系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。x0dx0ax0dx0a j: data journalling; 如果一个文件设置了该属性,那么它所有的数据在写入文件本身之前,写入到ext3文件系统日志中,如果该文件系统挂载的时候使用了”data=ordered” 或”data=writeback”选项。当文件系统采用”data=journal”选项挂载时,所有文件数据已经记录日志,因此这个属性不起作用。仅仅超级用户或者拥有CAP_SYS_RESOURCE能力的进程可以设置和删除该属性。x0dx0ax0dx0a s: secure deletion; 让系统在删除这个文件时,使用0填充文件所在的区域。x0dx0ax0dx0a t: no tail-merging; 和其他文件合并时,该文件的末尾不会有部分块碎片(为支持尾部合并的文件系统使用)。x0dx0ax0dx0a u: undeletable; 当一个应用程序请求删除这个文件,系统会保留其数据块以便以后能够恢复删除这个文件。x0dx0ax0dx0a A: no atime updates; 告诉系统不要修改对这个文件的最后访问时间x0dx0ax0dx0a D: synchronous directory updates; 任何改变将同步到磁盘;这等价于mount命令中的dirsync选项:x0dx0ax0dx0a S: synchronous updates; 一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘。x0dx0ax0dx0a T: top of directory hierarchy; 如果一个目录设置了该属性,它将被视为目录结构的顶极目录
『叁』 linux命令如何查看文件的属性
通过ll命令可以查看一个目录下的文件和子目录的属性和大小,以下面的例子讲解:x0dx0a[root@localhost ~]# llx0dx0atotal 88x0dx0a-rw-r--r-- 1 root root 1022 Feb 13 16:07 anaconda-ks.cfgx0dx0adrwxr-xr-x 2 root root 4096 Feb 13 16:07 Desktopx0dx0a-rw-r--r-- 1 root root 49229 Feb 13 16:07 install.logx0dx0a-rw-r--r-- 1 root root 5133 Feb 13 16:06 install.log.syslogx0dx0a-rw-r--r-- 1 root root 7 May 2 05:28 testx0dx0a[root@localhost ~]#x0dx0ax0dx0a我以其中一行讲解:x0dx0a-rw-r--r-- 1 root root 1022 Feb 13 16:07 anaconda-ks.cfgx0dx0a-rw-r--r-- 1 root root 1022这些都是文件的属性,包括文件的属主、属组和其他组的权限,属主和属组的名称,1022表示文件的大小,Feb 13 16:07是文件的修改时间。x0dx0ax0dx0a至于被谁修改过是看不出来的。