Linux文件权限

在 Linux 里面,任何一个文件都具有『User, Group 及 Others』三种身份的个别
权限。

默认的情况下,所有的系统上的账号与一般身份使用者,还有那个 root 的相关信息, 都是记录在/etc/passwd 这个文件内的。至于个人的密码则是记在/etc/shadow 这个文件下。此外, Linux 所有的组名都纪录在/etc/group 内!这三个文件可以说是 Linux 系统里面账号、密码、群组信息的集中地。

Linux文件属性

ls -al

看到如下的文件属性信息

第一栏代表这个文件的类型与权限(permission)
  • 第一个字符代表这个文件是『目录、 文件或链接文件等等』
    当为[ d ]则是目录,例如上表档名为『.config』的那一行;
    当为[ - ]则是文件,例如上表档名为『initial-setup-ks.cfg』那一行;
    若是[ l ]则表示为连结档(link file);
    若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
    若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
  • 接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。其中, [ r ]代表可读(read)、 [ w ]代表可写(write)、 [ x ]代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。
    第一组为『文件拥有者可具备的权限』,以『initial-setup-ks.cfg』那个文件为例, 该文件的拥有者可以读写,但不可执行;
    第二组为『加入此群组之账号的权限』;
    第三组为『非本人且没有加入本群组之其他账号的权限』
第二栏表示有多少档名连结到此节点(i-node)

每个文件都会将他的权限与属性记录到文件系统的 i-node 中,不过,我们使用的目录树却是使用文件名来记录, 因此每个档名就会连结到一个 i-node!这个属性记录的,就是有多少不同的档名连结到相同的一个 i-node

第三栏表示这个文件(或目录)的『拥有者账号』
第四栏表示这个文件的所属群组
第五栏为这个文件的容量大小,默认单位为 bytes
第六栏为这个文件的建档日期或者是最近的修改日期

如果想要显示完整的时间格式,可以利用 ls 的选项,亦即:

ls -l --full-time

就能够显示出完整的时间格式了

第七栏为这个文件的档名

如果档名之前多一个“.” ,则代表这个文件为隐藏档

如何改变文件属性与权限

  • chgrp :改变文件所属群组
  • chown :改变文件拥有者
  • chmod :改变文件的权限, SUID, SGID, SBIT 等等的特性

chgrp

chgrp [-R] dirname/filename ...

选项与参数:
-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件、目录
都更新成为这个群组之意。常常用在变更某一目录内所有的文件之情况。

chown

chown [-R] 账号名称 文件或目录
chown [-R] 账号名称:组名 文件或目录

选项与参数:
-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都变更

chmod

数字类型改变文件权限

Linux 文件的基本权限就有九个,分别是 owner/group/others三种身份各有自己的 read/write/execute权限,这九个权限是三个三个一组的,各权限的分数对照表如下

r:4
w:2
x:1

每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx---] 分数
则是:

owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others= --- = 0+0+0 = 0
chmod [-R] xyz 文件或目录
选项与参数:
xyz : 就是刚刚提到的数字类型的权限属性, 为 rwx 属性数值的相加。
-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更
符号类型改变文件权限

u, g, o 来代表三种身份的权限,此外, a 则代表 all,即全部的身份,读写的权限就可以写成 r, w, x

的身份!那么读写的权限就可以写成 r, w, x 啰!也就是可以使用底下的方式来看:

chmod  u/g/o/a  +/-/= r/w/x 文件或目录
[root@study ~]# chmod u=rwx,go=rx .bashrc
# 注意.那个 u=rwx,go=rx 是连在一起的,中间并没有任何空格符!
[root@study ~]# ls -al .bashrc
-rwxr-xr-x. 1 root root 176 Dec 29 2013 .bashrc

[root@study ~]# ls -al .bashrc
-rwxr-xr-x. 1 root root 176 Dec 29 2013 .bashrc
[root@study ~]# chmod a+w .bashrc
[root@study ~]# ls -al .bashrc
-rwxrwxrwx. 1 root root 176 Dec 29 2013 .bashrc

文件权限的意义

权限对文件的重要性

文件是实际含有数据的地方,包括一般文本文件、数据库内容文件、二进制可执行文件(binary program)等等。 因此,权限对于文件来说,他的意义是这样的:

  • r (read):可读取此一文件的实际内容,如读取文本文件的文字内容等;
  • w (write):可以编辑、新增或者是修改该文件的内容(但不含删除该文件);
  • x (eXecute):该文件具有可以被系统执行的权限。

文件是否能被执行,则是由是否具有『x』这个权限来决定的!跟档名是没有绝对的关系的!

当你对一个文件具有w权限时,你可以具有写入/编辑/新增/修改文件的内容的权限, 但并不具备有删除该文件本身的权限

权限对目录的重要性

  • r (read contents in directory):
    表示具有读取目录结构列表的权限,所以当你具有读取(r)一个目录的权限时,表示你可以查询该目录下的文件名数据。 所以你就可以利用ls这个指令将该目录的内容列表显示出来!

  • w (modify contents of directory):
    表示你具有异动该目录结构列表的权限,也就是底下这些权限:
    1、建立新的文件与目录;
    2、删除已经存在的文件与目录(不论该文件的权限为何! )
    3、将已存在的文件或目录进行更名;
    4、搬移该目录内的文件、目录位置。

  • x (access directory):
    目录的 x 代表的是用户能否进入该目录成为工作目录的用途。所谓的工作目录(work directory)就是你目前所在的目录。

如果你在某目录下不具有 x 的权限, 那么你就无法切换到该目录下,也就无法执行该目录下的任何指令,即使你具有该目录的 r 或 w 的权限

你可能感兴趣的:(Linux文件权限)