第5章 Linux的文件权限与目录配置
第五章 Linux的文件权限与目录配置
Linux一般将文件可存取的身份分为三个类别,分别是owner/group/others,且三种身份各有read/write/execute等权限。
5.1 使用者与群组
- 文件拥有者
- 群组概念
- 其他人的概念
5.2 Linux文件权限概念
5.2.1 Linux文件属性
使用su -
切换成为root后,下达ls -al
看看,会看到下面的几个咚咚:
su -
ls -al
total 48
dr-xr-x---. 5 root root 4096 May 29 16:08 .
权限------链接-拥有者-群组-大小-修改日期-------文件名
5.2.2 如何改变文件属性与权限
-
chgrp: 改变文件所属群组
-
chown: 改变文件拥有者
-
chmod: 改变文件的权限,SUID,SGID,SBIT等等的特性
-
chgrp语法:
chgrp [-R] 群组名称 dirname/filename... -R: 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件、目录都更新成为这个群组之意。常常用在变更某一目录内所有的文件之情况。 范例: chgrp users initial-setup-ks.cfg
-
改变文件拥有者,chown
chown [-R] 帐号名称 文件名目录 chown [-R] 帐号名称:群组名称 文件或目录 选项与参数: -R: 进行递回(Recursive)的持续变更
-
改变权限,chmod
文件权限的改变使用的是chmod这个指令,但是,权限的设置方法有两种,分别可以使用数字或者是符号来进行权限的变更。我们就来谈一谈:-
数字类型权限的变更
我们可以使用数字来代表各个权限,各权限的分数对照表如下:
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
所以等一下我们设置权限的变更时,该文件的权限数字就是770啦!变更权限的指令chmod的语法是这样的:chmod [-R] xyz 文件或目录 选项与参数: xyz: 就是刚刚提到的数字类型的权限-R属性,为rwx属性数值的相加。 -R: 进行递回的持续变更
-
符号类型改变文件权限
我们可以籍由u,g,o来代表三种身份的权限!此外,a则代表all亦即全部的身份!那么读写的权限就可以写成r,w,x啰!也就是可以使用下面的方式来看:chmod ugoa +(加入) -(减去) =(设置) rwx 文件或目录 范例: chmod u=rwx,go=rx .bashrc
-
5.2.3 目录与文件之权限意义:
权限对文件的重要性:
- r(read): 可读取此一文件的实际内容
- w(write): 可以编辑、新增或者是修改该文件的内容(但不会删除该文件)
- x(execute): 该文件具有可以被系统执行的权限。
权限对目录的重要性:
- r(read contents in directory):
表示具有读取目录结构的权限 - w(modify contents of directory):
- 创建新的文件与目录;
- 删除已经存在的文件与目录
- 将已存在的文件或目录进行更名
- 搬移该目录内的文件、目录位置。
- x(access directory):
目录的x代表的是使用者能否进入该目录成为工作目录的用途!
5.2.4 Linux文件各类与扩展名
- 文件种类:
- 正规文件(regular file)
- 纯文本文件(ASCII)
- 二进制档(binary)
- 数据格式文件(data)
- 目录(directory)
- 链接文件(link)
- 设备与设备文件(device)
- 区块(block)设备文件
- 字符(character)
- 数据接口文件(sockets)
- 数据输送档(FIFO,pipe):FIFO也是一种特殊的文件类型,他主要的目的在解决多个程序同时存取一个文件所造成的错误问题。FIFO是first-in-first-out的缩写。第一个属性为[p]
- 正规文件(regular file)
- Linux文件扩展名:
基本上,Linux的文件是没有所谓的“扩展名”的,只是借由扩展名来提示该文件是什么类型的。下面有数种常用的扩展名:- *.sh :脚本或批处理文件(script)。
- Z,.tar,.tar.gz,.zip,*.tgz:经过打包的压缩文件。
- .html,.php:网页相关文件
- Linux文件名称的限制:
一般来说,你在设置Linux下面的文件名称时,最好可以避免一些特殊字符比较好!例如下面这些:
* ?><;&![]|'"`(){}
因为这些符号在命令行下,是有特殊意义的!另外,文件名称的开头为小数点“.”时,代表这个文件为“隐藏文件”喔!最好也避免将文件名的开头以-或+来命名啊!
5.3 Linux目录配置
5.3.1 Linux目录配置的依据-FHS
FHS标准建议(/)下面应该要有下面这些次目录的存在才好,即使没有实体目录,FHS也希望至少有链接文件存在才好:
- /bin: 放置可执行文件的目录
- /boot: 开机会用到的文件
- /dev: 设备与周边设备文件
- /etc: 系统主要的配置文件
- /lib: 系统的函数库
- /media: 放置可移除的设备啦!包括软盘、光盘、DVD等。
- /mnt: 暂时挂载某些额外的设备
- /opt: 第三方协力软件放置的目录。例如:kde
- /run: 早期的FHS规定系统开机后所产生的各项信息要放置到/var/run目录下,新版的FHS则规范到/run下面。由于/run可以使用内在来仿真,性能上会好很多!
- /srv: 可视为"service"的缩写,是一些网络服务启动之后,这些服务所需要取用的数据目录。常见的服务例如WWW,FTP等。
- /tmp: 一般使用者或者是正在执行的程序暂时放置文件的地方。
- /usr:第二层FHS设置,后续介绍
- /var:第二层FHS设置,主要为变动的数据,后续介绍
第二部份,FHS建议可以存在的目录:
- /home: 系统默认的使用者主文件夹(home directory)
- /lib<qual>: 用来存放与/lib不同的格式的二进制函数库
- /root:系统管理员(root)的主文件夹。
下面是几个在Linux当中也是非常重要的目录喔: - lost+found: 当使用标准的ext2/ext3/ext4文件系统时,当文件系统发生错误时,将一些遗失的片段放置到这个目录下,如果使用xfs文件系统的话,不会存在这个目录了。
- /proc: 这个目录本身是一个虚拟文件系统喔!他放置的数据都是在内在当中。例如系统核心、行程信息(process)、周边设备的状态及网络状态等。
- /sys: 这个目录其实跟/proc非常类似,也是一个虚拟的文件系统,主要也是记载核心与系统硬件较相关的信息。