1. 档案权限概念
Linux的最优秀的地方在于多人多任务的环境,为了让各个使用者都具有比较隐秘的档案数据,因此档案的权限就比较重要了。Linux一般将档案的可存取身份分为三个类别,分别是档案的拥有者(owner)、档案的所属组(group)以及其他用户(others),且三种身份各有读(read)、写(write)、执行(execute)等权限。
Linux文件属性:
查看档案信息的指令:ls
[root@server1 tmp]#ls �l
total 628
-rw-r--r-- 1 root root641020 Feb 16 10:29 test
[root@server1 tmp]#
注意:在Linux中以点(.)开始的文件表示隐藏文件。
ls �a表示显示所有的文件包括隐藏文件。
ls �l:以长格式的形式显示文件的属性。
一个文件的属性分为如下7个部分:
-rw-r--r-- 1 rootroot 641020 Feb 16 10:29 test
[权限] [链接] [owner] [group][大小][修改时间][文件名]
第一栏:代表档案的类型和权限。共有10个字符。如下所示:
-rw-r--r--,第一个字符代表的是档案的类型。有如下几种:
d:表示的是该档案为一个目录
-:代表的是该档案是一个普通文件。
l:代表的是该档案是一个链接文件。
b:代表的是该档案是一个块设备文件。如磁盘、USB设备等
c:代表的是该档案是一个字符设备文件。如键盘、鼠标等
s:代表的是该该档案是一个socket文件。客户端可以通过socket文件连接到服务器端。
p:代表的是该档案是一个pipe文件。该类型的文件是为了解决多个程序同时存取同一个文件所造成的错误问题。
接下来的九个字符,三三一组,分别代表的是owner、group、others的权限。如果相应的位置上没有相应的权限的话,则用-表示。
r:代表read的权限
w:代表write的权限
x:代表execute的权限
第二栏:代表有多少个档案使用相同的inode。硬链接数。
每一个文件都将他的权限和属性记录到inode中,而目录确是使用文件名来记录的。
第三栏:代表的是该档案的拥有者owner
第四栏:代表的是该档案的所属组group
第五栏:代表该档案的大小。单位是字节bytes
第六栏:代表的是该档案的创建日期或者是最近的修改时间。
可以用ls -l --full-time来查看档案的完整时间格式
[root@server1 tmp]#ll --full-time test
-rw-r--r-- 1 rootroot 641020 2014-02-16 10:29:27.300144253 +0800 test
[root@server1 tmp]#
第七栏:档案的名称。以点(.)开始的档案表示隐藏文件。
2. 修改档案的权限
改变所属组:chgrp
修改一个档案的所属组时,该组名必须要存在于/etc/group档案内才行,否则会报错。
格式:
chgrp [-R] GROUP FILE
-R:递归的修改目录下的所有档案的群组。
示例:将test档案的群组修改为frame。
[root@server1 tmp]#chgrp frame test
[root@server1 tmp]#ll test
-rw-r--r-- 1 rootframe 641020 Feb 16 10:29 test
[root@server1 tmp]#
示例:群组不存在,则报错
[root@server1 tmp]#chgrp zhang test
chgrp:invalid group: `zhang'
[root@server1 tmp]#
改变档案的拥有者:chown
格式:chown [OPTION]... [OWNER][:[GROUP]] FILE...
-R:递归的修改目录下档案的拥有者或/和群组
示例:修改档案的拥有者
[root@server1 tmp]#ll
total 628
-rw-r--r-- 1 rootframe 641020 Feb 16 10:29 test
[root@server1 tmp]#chown frame test
[root@server1 tmp]#ll test
-rw-r--r-- 1 frameframe 641020 Feb 16 10:29 test
[root@server1 tmp]#
示例:修改档案的所属组
[root@server1 tmp]#ll
total 628
-rw-r--r-- 1 frameframe 641020 Feb 16 10:29 test
[root@server1 tmp]#chown :root test
[root@server1 tmp]#ll test
-rw-r--r-- 1 frameroot 641020 Feb 16 10:29 test
[root@server1 tmp]#
示例:同时修改档案的拥有者和所属组
[root@server1 tmp]#ll
total 628
-rw-r--r-- 1 frameframe 641020 Feb 16 10:29 test
[root@server1 tmp]#chown root:roottest
[root@server1 tmp]#ll test
-rw-r--r-- 1 rootroot 641020 Feb 16 10:29 test
[root@server1 tmp]#
改变权限:chmod
修改档案的权限用的是chmod指令,权限的设定方法有两种,一个是使用数字进行权限的修改,一个是使用符号进行权限的修改。
1.数字类型改变权限
Linux档案的基本权限有9个,分别是owner、group、others,这三种身份各有自己的r、w、x的权限,r、w、x用数字的表示方法如下:
r:4
w:2
x:1
chmod的语法格式:
chmod [OPTION]... OCTAL-MODE FILE...
-R:递归的修改目录内档案的权限
示例:修改档案的权限
[root@server1 tmp]#ll
total 628
-rw-r--r-- 1 rootroot 641020 Feb 16 10:29 test
[root@server1 tmp]#chmod 666 test
[root@server1 tmp]#ll test
-rw-rw-rw- 1 rootroot 641020 Feb 16 10:29 test
[root@server1 tmp]#
666表示的权限如下:
owner:6,6=4+2=r+w
group:6,6=4+2=r+w
others:6,6=4+2=r+w
2.符号修改档案的权限
u:代表的是user,代表的是档案的拥有者
g:代表的是group,代表的是档案的所属组
o:代表的是others,代表的是其他用户
a:代表的是all,代表的是ugo
赋予方法:
+:代表在原有权限的基础上增加相应的权限
-:代表在原有权限的基础上去掉相应的权限
=:不管原有的权限为何,赋予指定的权限
格式如下:
chmod [OPTION]... MODE[,MODE]... FILE...
-R:递归的修改权限。
各个模式之间用逗号隔开。
示例:
[root@server1 tmp]#ll
total 628
-rw-rw-rw- 1 rootroot 641020 Feb 16 10:29 test
[root@server1 tmp]#chmod u+x,g=rx,o-rw test
[root@server1 tmp]#ll test
-rwxr-x--- 1 rootroot 641020 Feb 16 10:29 test
[root@server1 tmp]#
3. 目录与档案权限的意义
目录:
r:代表可以列出该目录下的内容
w:可以对该目录下的内容进行修改。需要x权限
x:可以进入到该目录
档案:
r:可以列出该档案的内容
w:可以修改该档案的内容
x:如果该档案具有可执行内容,则可以执行该档案
4. Linux目录配置
为什么Linux发行套件的配置文件、执行文件以及每个目录放置的内容等等都差不多,这个和FHS(Filesystem Hierarchy Standard)有关。
FHS的主要目的是希望让使用者可以了解到已经安装的软件通常放置在哪个目录下,并且希望软件商、操作系统的制作者以及用户,都能够遵循FHS标准。也就是说FHS的标准在于规划每一个目录应该放置什么样的数据而已。
根据FHS的建议:根目录是整个系统最为重要的一个目录,所有的目录也都是由根目录衍生出来的,同时根目录也与开机、还原和系统修复等有关,因此根目录最为重要,且根目录应该越小越好,且应用程序所安装的软件最好不要和根目录在同一个分区内,保持根目录越小越好。根据FHS定义出来的的根目录下,应该有如下目录才好:
/bin:必须的二进制指令。普通用户和root用户均可执行的指令,并且在单用户模式下也可以执行。
/boot:与系统开机有关的内容。如内核文件vmlinuz、虚拟文件系统initrd以及grub的配置文件所在的目录/boot/grub。
/dev:由于Linux下所有的内容都是档案,在该目录下主要存放的是设备文件,如磁盘、鼠标、键盘等
/etc:该目录下主要存放的是配置文件。如和用户有关的各种文件/etc/passwd、/etc/group、/etc/shadow和/etc/gshadow等,各种服务的启动脚本/etc/init.d/目录,系统默认的启动级别/etc/inittab,磁盘开机自动挂载/etc/fstab,和X Window有关的配置文件/etc/X11/
/home:代表的是普通用户的家目录。~代表的是当前用户的家目录。
/root:root用户的家目录
/media:可移除设备的系统自动挂载点。
/mnt:可移除设备的手动挂载点。
/lib:系统所使用的库文件。/lib/modules这个目录下存放的是内核相关的驱动程序。
/sbin:root用户可以执行的二进制程序。
/opt:建议的第三方软件(非本发行套件提供的软件)放置的目录。
/tmp:系统或软件产生的临时数据。可以完全删除该目录下的内容。
/proc:该目录下所存放的数据都是存在与内存中,不占用实际的硬盘空间。
注意有5个目录在安装操作系统的时候是必须和根目录放在相同的分区的,这5个目录如下:
/etc:配置文件
/bin:普通用户可以执行的二进制程序
/sbin:root用户可以执行的二进制程序
/dev:设备文件
/lib:软件执行所需的库文件以及内核所需的模块。
下面再来介绍两个比较重要的目录:/usr和/var
usr是unix softwareresource,不是user的意思。这里面存放的就是软件安装的路径了。
默认情况下所有的发行套件提供的软件在安装时都会安装到这个目录下,类似于windows系统下的C:\Windows+C:\Program files这两个目录的综合体。该目录下的部分内容如下:
/usr/bin:安装本发行套件提供的软件提供的普通用户可以执行的二进制程序。
/usr/sbin:安装本发行套件提供的软件提供的root用户可以执行的二进制程序。
/usr/include:c、c++编写的头文件。
/usr/lib:库文件
/usr/local:安装非本发行套件以外的软件时,建议安装到此目录下。
/usr/share:存放共享文件的地方。如/usr/share/man存放man帮助文件的,/usr/share/doc存放其他的说明文档的地方,/usr/share/zoneinfo存放时区信息的地方。
/usr/src:存放源码的地方。linux内核源码建议放在/usr/src/kernels目录下。
/var目录:
/var/log:存放log信息的地方
/var/mail:存放用户邮件的地方
/var/lock:某些程序一次只能被一个应用程序使用,如果多人使用的话就会产生问题,因此就要被锁定起来。
/var/run:存放进程的PID的地方。
/var/spool/mail:存放一些队列数据,如/var/spool/cron存放的是计划任务.
查看文件系统的发行套件信息:lsb_release -a
[root@server1 ~]#lsb_release -a
LSB Version: :core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID:RedHatEnterpriseServer
Description: Red Hat Enterprise Linux Server release 6.3(Santiago)
Release: 6.3
Codename: Santiago
[root@server1 ~]#