Linux文件属性和权限

首先我们以root用户的身份登陆Linux,执行ls-al查看文件:

Linux文件属性和权限

显示信息详细含义如下:

Linux文件属性和权限

1.   第一列代表这个文件的类型与权限(permission),仔细看可以发现其中总共有10个字符。

Linux文件属性和权限

Linux文件属性和权限

1.1.    第一个字符代表这个文件的具体类型:

任何设备在Linux下都是文件,不仅如此,连数据库的同学接口也有专门的文件负责。

若是[d]则是目录(directory)      

若是[-]则是文件

若是[l]则是链接文件(link)

   类似window系统下的快捷方式。

设备与设备文件[b]、[c]:

    与系统外设和存储等相关的一些文件,通常都集中在/dev这个目录中。分为两种:

A.   块(block)设备文件[b]:就是一些存储数据,以提供系统随机访问的接口设备,例如硬盘、软盘等。你可以随机的在硬盘的不同块读写,这种设备就是成组设备。

演示:cd /dev;然后ls –al sda:

B.   字符(character)设备文件[c]:是一些串行端口的接口设备,例如键盘,鼠标。这些设备的特征就是“一次性读取”的,不能够截断输出。

总结:除了设备文件是我们系统很重要的文件,最好不要随意修改之外(通常它也不会让你修改的);另外一个比较有趣的文件就是连接文件,类似window的桌面快捷方式,同样可以将linux下的连接文件简单的视为一个文件或目录的快捷方式。至于socket与FIFO文件比较难以理解,因为他们与进程比较有关系,这个等到将来了解进程(process)之后再进行理解。

1.2.    余下的字符,三个一组,且均为[rwx]的3个参数组合,

其中[r]代表可读(read),[w]代表可写(write),[x]代表可执行(excute)。

这三个参数的出现顺序不会改变,若没有某个权限,则会以[-]代替。这三组参数中,第一组是文件所有者的权限;第二组是同用户组的权限;第三组是其他用户的权限。这三组权限均是针对某些账号而言的权限。另外,文件权限和目录权限意义不同,这是因为文件与目录记录的数据内容不相同,后面我们会详细叙述。

1.    第二列表示有多少文件名链接到此节点(i-node)

       每个文件都会将他的权限与属性记录到文件系统的i-node中,但是Linux所使用的目录树却是使用文件名来记录,因此每个文件名就会链接到一个i-node。这个属性记录的就是有多少不同的文件名链接到相同的一个i-node号码。我们会在后面详细讲解。

2.   第三列表示这个文件(或目录)的所有者账号

3.   第四列表示这个文件的所属用户组

       在Linux系统下,每个账号会附属于一个或多个用户组中。

4.   第五列表述这个文件的容量大小,默认单位为bytes

5.   第六列为这个文件的创建文件日期或者是最近的修改日期(“ls -l” 等价于“ll”)

如果想要显示完整的时间格式,可以使用ls参数,即”ls -l --full-time”,这样做就可以显示出完整的时间格式。

6.   第七列为该文件名

       注意,我们之前提到了前缀为”.”的是隐藏文件。

Linux文件权限最大的用途实在数据安全性上,它能根据不同用户的不同权限实现对不同文件的操作。为此,在我们设置Linux文件与目录的属性之前,需要弄清到底什么数据是可变的,什么数据是不可变的。

改变文件属性和权限

改变所属用户组:

注意:需要注意的是,要被改的组名必须要在/etc/group文件内存在才行,否则会报错。

语法:chgrp[-R] dirname/filename

参数:-R:如果为目录递归修改组。

作用:使用chgrp命令可以改变一个文件的用户组,它是changegroup的简称。

改变文件所有者

语法:chown[-R] 用户账号dirname/filename

chown[-R]  用户账号:用户组名  dirname/filename

作用:使用chown命令可以改变一个文件的所有者,还可以直接修改群组的名称;它是changeowner的缩写。

注意:用户必须是已经存在于系统中的账号,也就是在/etc/passwd这个文件中有记录的用户名称才能改变。如果要将目录下的所有子文件或目录同时改变文件所有者,加-R参数即可。

改变权限

语法:chmod[-R] mode dirname/filename

作用:文件或目录权限的改变使用的是chmod(change file mode bits)这个命令。

注意:但是权限的设置方法分两种,可以通过数字或符号进行修改。

mode讲解之数字类型改变文件权限:

Linux的基本权限有9个,分别是owner,group,others三种身份各自的read,write,excute权限,各个权限对应的数字如下:

r:4、w:2、x:1

为此每种身份各自的三个权限数字相加即可得出数字表示的权限…例如[-rwxrwx---]可以表示为:

owner= rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7

others= --- = 0+0+0 = 0

范例:所以要修改文件权限,改为770即可:

Linux文件属性和权限

rw-rw-r--   664

mode讲解之符号类型改变文件权限:

另一种改变权限的方法就是通过符号了,上文提到,Linux总共9种权限,对应着三种身份,为此我们可以通过u,g,o代表三种身份,另外a代表全部身份。对应的权限可以写为r,w,x,如下图所示:

Linux文件属性和权限

范例:我们要将一个文件的权限改做[-rwxr-xr-x],具体来说就是:

       user(u):具有可读可写可执行权限;

       group与others(g/o):具有可读可执行权限

Linux文件属性和权限

若要改为[-rwxr-xr--],可以使用[chmod u=rwx,g=rx,o=r filename]来设置:

Linux文件属性和权限

要去掉权限但不修改其他权限,例如去掉全部的可执行权限:

Linux文件属性和权限

如果添加全部的可执行权限:

[[email protected]~]#chmod a+x.bashrc