第五章 Linux 的文件权限与目录配置
5.1 使用者与群组
- 1.文件拥有者 User
- 2.群组概念 Group
- 3.其他人的概念 Others
5.2 Linux文件属性
列出当前目录下的所有文件及目录
ls -ah
5.2.1 Linux 文件属性
输出结果:
-rw-r--r-- 1 root root 2494 7月 23 21:40 weather_test.py
1.第一个字符代表这个文件是『目录、文件或链接文件等等』:
- 当为[ d ]则是目录;
- 当为[ - ]则是文件;
- 若是[ l ]则表示为连结档(link file);
- 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
- 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)
2.接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表 可写(write)、[ x ]代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。
- 第一组为『文件拥有者可具备的权限』;
- 第二组为『加入此群组之账号的权限』;
- 第三组为『非本人且没有加入本群组之其他账号的权限』。
3.第二栏表示有多少档名连结到此节点(i-node):
4.第三栏表示这个文件(或目录)的『拥有者账号』
5.第四栏表示这个文件的所属群组
6.第五栏为这个文件的容量大小,默认单位为bytes
7.第六栏为这个文件的建档日期或者是最近的修改日期
8.第七栏为这个文件的档名
- 如果档名之前多一个『 . 』,则代表这个文件为『隐藏档』
5.2.2 如何改变文件属性与权限
- chgrp :改变文件所属群组
- chown :改变文件拥有者
- chmod :改变文件的权限
1.改变所属群组, chgrp
[root@study ~]# chgrp [-R] dirname/filename ...
选项与参数:
-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件、目录
都更新成为这个群组之意。常常用在变更某一目录内所有的文件之情况。
范例:
[root@study ~]# chgrp users initial-setup-ks.cfg
[root@study ~]# ls -l
-rw-r--r--. 1 root users 1864 May 4 18:01 initial-setup-ks.cfg [root@study ~]# chgrp testing initial-setup-ks.cfg
chgrp: invalid group: `testing' <== 发生错误讯息啰~找不到这个群组名~
注意:要被改变的组名必须要在/etc/group 文件内存在才 行,否则就会显示错误!
2.改变文件拥有者,chown
[root@study ~]# chown [-R] 账号名称 文件或目录
[root@study ~]# chown [-R] 账号名称:组名 文件或目录
选项与参数:
-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都变更
范例:将 initial-setup-ks.cfg 的拥有者改为 bin 这个账号: [root@study ~]# chown bin initial-setup-ks.cfg
[root@study ~]# ls -l
-rw-r--r--. 1 bin users 1864 May 4 18:01 initial-setup-ks.cfg
范例:将 initial-setup-ks.cfg 的拥有者与群组改回为 root:
[root@study ~]# chown root:root initial-setup-ks.cfg [root@study ~]# ls -l
-rw-r--r--. 1 root root 1864 May 4 18:01 initial-setup-ks.cfg
用户必须是已经存在系统中的账 号,也就是在/etc/passwd 这个文件中有纪录的用户名称才能改变。
chown 也可以使用『chown user.group file』,亦即在拥有者与群组间加上小数
点『 . 』也行! 不过很多朋友设定账号时,喜欢在账号当中加入小数点(例如 vbird.tsai 这样的账号格式),这就会 造成系统的误判了! 所以我们比较建议使用冒号『:』来隔开拥有者与群组啦!此外,chown 也能单纯的修改所属 群组呢! 例如『chown .sshd initial-setup-ks.cfg』就是修改
3.改变权限, chmod
数字类型改变文件权限,各权限的分数对照表如下:
- r:4
- w:2
- x:1
举个栗子:
- owner = rwx = 4+2+1 = 7
- group = rwx = 4+2+1 = 7
- others= --- = 0+0+0 = 0
[root@study ~]# chmod [-R] xyz 文件或目录
选项与参数:
xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更
符号类型改变文件权限 ,就可以借由 u, g, o 来代表三种身份的权限!此外, a 则代表 all 亦即全部
的身份!那么读写的权限就可以写成 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
5.2.3 目录与文件之权限意义
1.权限对文件的重要性
- r (Read):可读取此一文件的实际内容,如读取文本文件的文字内容等;
- w (Write):可以编辑、新增或者是修改该文件的内容(但不含删除该文件);
- x (eXecute):该文件具有可以被系统执行的权限。
2.权限对目录的重要性
- r (read contents in directory):
表示具有读取目录结构列表的权限,所以当你具有读取(r)一个目录的权限时,表示你可以查询该目录下的 文件名数据。 所以你就可以利用 ls 这个指令将该目录的内容列表显示出来 -
w (modify contents of directory):
这个可写入的权限对目录来说,是很了不起的! 因为他表示你具有异动该目录结构列表的权限,也就是底 下这些权限:- 建立新的文件与目录;
- 删除已经存在的文件与目录(不论该文件的权限为何!)
- 将已存在的文件或目录进行更名;
- 搬移该目录内的文件、目录位置。
- x (access directory):
目录只是记录文件名而已,总不能拿来执行吧?没错!目录不可以被执 行,目录的 x 代表的是用户能否进入该目录成为工作目录的用途! 所谓的工作目录(work directory)就是你 目前所在的目录啦!举例来说,当你登入 Linux 时, 你所在的家目录就是你当下的工作目录。而变换目录 的指令是『cd』(change directory)啰!
组件 | 内容 | 迭代物件 | r | w | x |
---|---|---|---|---|---|
文件 | 详细资料 data | 文件文件夹 | 读到文件内容 | 修改文件内容 | 执行文件内容 |
目录 | 文档名 | 可分类抽屉 | 读到档名 | 修改档名 | 进入该目录的权限(key) |
5.2.4 Linux 文件种类与扩展名
略
5.3 Linux目录配置
5.3.1 Linux 目录配置的依据--FHS
Filesystem Hierarchy Standard (FHS)标准
5.3.2 目录树(directory tree)
ls -al /
5.3.3 绝对路径与相对路径
- 绝对路径:由根目录(/)开始写起的文件名或目录名称, 例如 /home/dmtsai/.bashrc;
- 相对路径:相对于目前路径的文件名写法。 例如 ./home/dmtsai 或 ../../home/dmtsai/ 等等。反正开头不是 /就属于相对路径的写法
- . :代表当前的目录,也可以使用 ./ 来表示;
- .. :代表上一层目录,也可以 ../ 来代表。