鸟哥的Linux私房菜_基础版_学习笔记2:第六章 linux的文件权限与目录配置
不过,这里有个特殊的人物要来介绍的,那就是『万能的天神』!这个天神具有无限的神力, 所以他可以到达任何他想要去的地方,呵呵!那个人在Linux系统中的身份代号是『 root 』啦!所以要小心喔!那个root可是『万能的天神』喔
[root@www ~]# ls -al total 156 drwxr-x--- 4 root root 4096 Sep 8 14:06 . drwxr-xr-x 23 root root 4096 Sep 8 14:21 .. -rw------- 1 root root 1474 Sep 4 18:27 anaconda-ks.cfg -rw------- 1 root root 199 Sep 8 17:14 .bash_history -rw-r--r-- 1 root root 24 Jan 6 2007 .bash_logout -rw-r--r-- 1 root root 191 Jan 6 2007 .bash_profile -rw-r--r-- 1 root root 176 Jan 6 2007 .bashrc -rw-r--r-- 1 root root 100 Jan 6 2007 .cshrc drwx------ 3 root root 4096 Sep 5 10:37 .gconf <=范例说明处 drwx------ 2 root root 4096 Sep 5 14:09 .gconfd -rw-r--r-- 1 root root 42304 Sep 4 18:26 install.log <=范例说明处 -rw-r--r-- 1 root root 5661 Sep 4 18:25 install.log.syslog [ 1 ][ 2 ][ 3 ][ 4 ][ 5 ][ 6 ][ 7 ] [ 权限 ][连结][拥有者][群组][文件容量][ 修改日期 ][ 檔名 ] |
你应该可以发现这一栏其实共有十个字符:(图2.1.1及图2.1.2内的权限并无关系)
- 当为[ d ]则是目录,例如上表档名为『.gconf』的那一行;
- 当为[ - ]则是文件,例如上表档名为『install.log』那一行;
- 若是[ l ]则表示为连结档(link file);
- 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
- 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
- 第一组为『文件拥有者的权限』,以『install.log』那个文件为例, 该文件的拥有者可以读写,但不可执行;
- 第二组为『同群组的权限』;
- 第三组为『其他非本群组的权限』
- 第二栏表示有多少档名连结到此节点(i-node):
每个文件都会将他的权限与属性记录到文件系统的i-node中,不过,我们使用的目录树却是使用文件名来记录, 因此每个档名就会连结到一个i-node啰!这个属性记录的,就是有多少不同的档名连结到相同的一个i-node号码去就是了。 关于i-node的相关数据我们会在第八章谈到文件系统时再加强介绍的。
- 第三栏表示这个文件(或目录)的『拥有者账号』
- 第四栏表示这个文件的所属群组
在Linux系统下,你的账号会附属于一个或多个的群组中。举刚刚我们提到的例子,class1, class2, class3均属于projecta这个群组,假设某个文件所属的群组为projecta,且该文件的权限如图2.1.2所示(-rwxrwx---), 则class1, class2, class3三人对于该文件都具有可读、可写、可执行的权限(看群组权限)。 但如果是不属于projecta的其他账号,对于此文件就不具有任何权限了。
- 第五栏为这个文件的容量大小,默认单位为bytes;
- 第六栏为这个文件的建档日期或者是最近的修改日期:
- 第七栏为这个文件的档名
这个字段就是档名了。比较特殊的是:如果档名之前多一个『 . 』,则代表这个文件为『隐藏档』,例如上表中的.gconf那一行,该文件就是隐藏档。 你可以使用『ls』及『ls -a』这两个指令去感受一下什么是隐藏档啰!
6.2.2如何改变文件属性与权限
chgrp :改变文件所属群组
chown :改变文件拥有者
chmod :改变文件的权限, SUID, SGID, SBIT等等的特性
改变所属群组, chgrp
假设你已经知道在/etc/group里面已经存在一个名为users的群组,但是testing这个群组名字就不存在/etc/group当中了,此时改变群组成为users与testing分别会有什么现象发生呢?
[root@www ~]# chgrp [-R] dirname/filename ... 选项与参数: -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件、目录 都更新成为这个群组之意。常常用在变更某一目录内所有的文件之情况。 范例: [root@www ~]# chgrp users install.log [root@www ~]# ls -l -rw-r--r-- 1 root users 68495 Jun 25 08:53 install.log [root@www ~]# chgrp testing install.log chgrp: invalid group name `testing‘ <== 发生错误讯息啰~找不到这个群组名~ |
改变文件拥有者, chown
要注意的是,用户必须是已经存在系统中的账号,也就是在/etc/passwd这个文件中有纪录的用户名称才能改变。
此外,如果要连目录下的所有次目录或文件同时更改文件拥有者的话,直接加上-R的选项即可!
[root@www ~]# chown [-R] 账号名称 文件或目录 [root@www ~]# chown [-R] 账号名称:组名 文件或目录 选项与参数: -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都变更 范例:将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 |
可以同时改变拥有者和群组。
改变权限, chmod
[root@www ~]# chmod [-R] xyz 文件或目录 选项与参数: xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。 -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更 |
举例来说,如果要将.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 |
符号类型改变文件权限
基本上就九个权限分别是(1)user (2)group (3)others三种身份啦!那么我们就可以藉由u, g, o来代表三种身份的权限!此外,a则代表 all 亦即全部的身份!
chmod |
u g o a |
+(加入) -(除去) =(设定) |
r w x |
文件或目录 |
[root@www ~]# ls -al .bashrc -rwxr-xr-x 1 root root 395 Jul 4 11:45 .bashrc [root@www ~]# chmod a+w .bashrc [root@www ~]# ls -al .bashrc -rwxrwxrwx 1 root root 395 Jul 4 11:45 .bashrc |
而如果是要将权限去掉而不更动其他已存在的权限呢?例如要拿掉全部人的可执行权限,则:
[root@www ~]# chmod a-x .bashrc [root@www ~]# ls -al .bashrc -rw-rw-rw- 1 root root 395 Jul 4 11:45 .bashrc |
6.2.3目录与文件之权限意义:
权限对文件的重要性
r (read):可读取此一文件的实际内容,如读取文本文件的文字内容等;
w (write):可以编辑、新增或者是修改该文件的内容(但不含删除该文件);
x (execute):该文件具有可以被系统执行的权限。
6.2.4 Linux文件种类与扩展名
文件种类:
第一个字符为文件的类型。除了常见的一般文件(-)与目录文件(d)之外,还有哪些种类的文件类型呢?
(1)正规文件(regular file ):
就是一般我们在进行存取的类型的文件,在由 ls -al 所显示出来的属性方面,第一个字符为 [ - ],例如 [-rwxrwxrwx ]。另外,依照文件的内容,又大略可以分为:纯文本档(ASCII);二进制文件(binary);数据格式文件(data)
(2)目录(directory):
就是目录啰~第一个属性为 [ d ],例如 [drwxrwxrwx]。
(3)连结档(link):
就是类似Windows系统底下的快捷方式啦!第一个属性为 [ l ](英文L的小写),例如 [lrwxrwxrwx] ;
(4)设备与装置文件(device):
与系统周边及储存等相关的一些文件,通常都集中在/dev这个目录之下!通常又分为两种:
区块(block)设备档:会发现第一个属性为[ b ]喔!
字符(character)设备文件:亦即是一些串行端口的接口设备,第一个属性为 [ c ]。
(5)数据接口文件(sockets):
既然被称为数据接口文件,想当然尔,这种类型的文件通常被用在网络上的数据承接了。我们可以启动一个程序来监听客户端的要求,而客户端就可以透过这个socket来进行数据的沟通了。第一个属性为 [ s ],最常在/var/run这个目录中看到这种文件类型了。
(6)数据输送文件(FIFO,
pipe):
FIFO也是一种特殊的文件类型,他主要的目的在解决多个程序同时存取一个文件所造成的错误问题。 FIFO是first-in-first-out的缩写。第一个属性为[p]。
6.3目录树(directory tree)
图3.2.1、目录树架构示意图
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。