用户组与文件权限

接触Linux约有半年的时间了,感到自己对Linux仍是一无所知,大多数时候只是在Ubuntu软件中心中翻翻有什么有意思的东西装上玩玩,有的地方觉得不方便就又只好切换回Windows。系统出问题的时候完全没辙,只能重装了事。因此找了几本相关的书,决定深入学习Linux。不定期整理一下学习笔记,发到Blog上来,方便自己查阅,也是对自己的督促。


1.用户与用户组

Linux是多用户,多任务的操作系统,这意味着多人可以同时使用一台主机。考虑到每个用户的个人喜好与隐私,文件的所有者就显得尤为重要。将用户分为不同的组别当然是为了方便管理。因此用户与文件之间的关系就有三种:(1User:表示该用户是文件的所有者。(2Group:表示该用户和文件的所有者在同一用户组。(3Others:除了以上两种的其他用户。此外,Linux中还有一个特殊root账户,相当于Windows中的管理员账户,对所有文件具有所有权。

    由于只是自己一个人在自己的机器上使用,对这一部分就没有深入了解。重点在下面的文件权限。


2.文件权限
2.1 Linux文件属性

在终端下执行"ls -l"查看当前目录的文件,l参数用于显示文件的属性,以下是一个例子及对应的属性说明:

—————————————————————————————————————————————

-rw-rw-r--          1             jerry         jerry             100       6 月 28 11:40   hello.c

【用户权限】【连接数】【所有者】【用户组】【文件大小】【修改日期】【文件名】

—————————————————————————————————————————————

注:文件大小的单位是B

开头的那一串"-rw-rw-r--"共有10个字符,第一个表示文件的类型,常见的有:[-]代表文件,[d]代表目录,[l]代表链接文件, [b]代表设备等。后面的九个分为三组,分别代表User,Group,Other这三类用的权限,[r]代表读权限,[w]代表写权限,[x]代表执行权限,[-]就代表没有权限。因此,上面这个例子代表文件的所有者jerry及同组的用户对该文件可读,可写。其他用户则只能读。所有的用户都没有执行权限。

2.2 文件权限的意义

如上所述,用户对于文件有r(read),w(write),x(execute)这三种权限。在Linux中一切皆文件,因而有时候这是令人迷惑的,尤其是对目录来说。以下对目录的这三个权限再做具体的说明:

r:表示用户可以查看该目录下的内容,即可以使用ls”命令

w:表示用户可以修改该目录下的内容,包括增加,删除,重命名等

x:表示用户可以进入该目录,即可以使用cd”命令

而对于我们通常所说的的文件来说,r”和w”容易明白,而x”则令人费解,难道文本文件也可以执行吗?在这一点上,Linux和Windows有很大的区别。在Windows下,可执行文件通常都是以.exe”结尾的。而在Linux下,文件是否可执行与后缀名没有关系,而仅与是否具有x权限有关。不过无论是Linux还是Windows,可执行的只能是二进制文件。因此,虽然在Linux下文本文件加上x权限也可以执行,不过系统只认识二进制的机器语言,因此只可能报错而不会有任何效果。

为了验证这一点可以做一个简单的实验,用gcc编译一个C语言文件,默认会得到一个a.out”文件,将其重命名为a.txt”,然后执行./a.txt”,将会发现程序依然能够执行。

2.3 文件权限的更改

Linux下要更改文件的权限,可以用以下三个命令:

改变所有者:chown      user      filename

改变用户组:chgrp       group   filename

改变权限:chmod,有以下两种用法:

(1)数字法:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/23436.html