您的位置:首页 > 运维架构 > Linux

Linux 文件权限和目录配置

2014-01-21 20:42 399 查看
1.用户和用户组
文件的权限设置分为三个部分:用户,用户所在的用户组,其他。用户是文件的归属者,对文件的权限操作等级一般来说是最高的。用户所在的用户组是用户的合作伙伴,一般对文件的操作权限完全由用户来决定开放读写执行权限,一般对文件的操作权限低于或者等于用户对文件的操作权限。其他的操作权限是代表了文件的公开使用性质,一般来说权限在这几个当中是最低的。
NOTE:root具有对文件的最高权限,无论文件的用户是如何设置的文件权限。
在默认的情况下,所有系统上的账号和一般身份用户,还有root的相关信息都记录在/etc/password这个文件内。至于个人的密码则是记录在/etc/shadow这个文件夹下面。Linux的所有的组名都记录在/etc/group的文件夹下面。不要随便删除这三个文件。

2.Linux文件权限的概念
1).linux文件属性
运行:ls -al
结果:drwxrwx--- 4 root root 4011 sep 8 14:06 .
-rwx------ 1 root root 5987 Jan 10 15:13 text.txt
... ...
怎么去理解这些东西代表的含义呢?
第一列的内容代表了文件的类型和文件的读写权限,在这一列当中,第一个符为d代表的是文件目录,-代表的是文件,l表示连接文件,b表示设备文件里面的可供存储的接口设备,c表示穿行接口设备,例如鼠标和键盘。剩下的九个字符,每三个一组,分表表示了用户,用户所在组,其他组的对当前文件的读,写,可执行的权限。r:read w:write x:execute
第二列的数字代表了连接数,表示有多少连接文件连接到这个文件。
第三列表示这个文件或者目录的所有者账号
第四列表示这个文件所属的用户组
第五列表示文件的容量大小,单位Byte。
第六列表示文件的创建日期或者是最近的修改日期,日期格式为:月/日 。如果日期太过久远就有可能没有具体的时间描述小时和分。
第七列表示文件的文件名
通过文件的属性查看可以人知道文件属性中权限部分的重要性,所以要合理的设置文件的权限,使文件的权限可以合理的保护数据。
2).改变文件的属性和权限
下面是改变文件权限的命令:
chgrp:改变文件所属用户组
chown:改变文件所有者
chmod: 改变文件的权限
对比文件的属性,我们会发现文件的这三个属性都是可以进行权限控制的属性。具体使用办法如下所示:
chgrp [-R] dirname/filename
-R:表示进行递归的持续性修改,连同子目录下的所有文件和目录都更改为这个用户组的意思。
例:chgrp user text.txt
NOTE:如果这个用户组不在/etc/group当中,会报错。
chown [-R] 账号名称 文件或者目录
例:chown root text.txt
chown root:root text.txt //将text.txt的所有者和用户组都改为 root
chmod [-R] xyz 文件或者目录
-R:表示递归的修改文件或者目录的权限
xyz:对应三个权限分组的数字值,x,y,z均值为整数,最大值为7,最小值为0,分别为:4为读权限,2为写权限,1为可执行权限,0为无权限。x,y,z的值均为这些权限数字之和,x代表用户,y代表用户所在组,z代表其他组。
例: chmod 770 text.txt
chmod 644 text.txt
符号类型改变文件权限

chmod
u
g
o
a

+(加入)

-(去掉)

=(设置)
r
w
x
文件

目录
u:user g:group o:other a:all
例: chmod u=rx,g=rx text.txt
chmod a+x text.txt
chmod a-x text.txt
3).文件与目录的权限意义
在Linux文件系统当中,文件可执行的权限由x决定,与文件名称没有任何关系。
权限对目录的影响:
r:可读目录,执行ls
w:可修改删除目录,变动目录里面的内容,不包括文件里面的内容
x:可以把当前目录作为工作目录,用cd进出
文件的删除由所在的目录权限控制,但是文件内容是由文件的权限控制
4).Linux文件种类与扩展名
文件种类如下:
普通文件,文件类型为-,又细分为纯文本,二进制,数据格式文件。
目录,文件类型为d
连接文件,文件类型为l
设备与设备文件,集中在/dev这个目录下面,分为块设备文件和字符设备文件,块的文件类型为b,字符的文件类型为c
套接字:文件类型为s,用于网络连接
管道:,文件类型为p,用于解决多个程序同时访问一个文件
扩展名
不可以被执行和可以执行成功时两件事。
扩展名在Linux系统当中主要用于区分或者表示文件的主体内容。
例如:.sh:表示shell脚本
.html:表示网页相关
NOTE:从网络上传到Linux系统当中的文件属性会发生变更。
Linux文件长度限制
单个文件/目录名长度:最大255字节
包含完整路径名称及目录的完整文件名为4096个字符
文件名最好避免为特殊字符
不要用一些特殊字符作为文件名的第一个字符。

2.Linux目录配置
Linux系统的目录配置标准是FHS(Filesystem Hierarchy Standard)。这个文件系统的标准主要目的是告诉用户已安装的软件通常放在哪个目录下面。

可分享的(shareable)

不可分享的(unshareable)
不可变的(static)

/usr(软件放置处)
/etc(配置文件)
不可变的(static)/opt(第三方软件)
/boot(开机与内核文件)
可变的(variable)

/var/mail(用户邮件信箱)/var/run(程序相关)
可变的(variable)/var/spool/news(新闻组)
/var/lock(程序相关)
可分享的:可以分享给其他系统挂载使用的目录
不可分享的:自己机器上运行的设备和文件,或者是与socket相关的文件
不变的:系统的配置信息
可变动的:经常变动的数据
/(root,根目录):与开机系统有关
/usr(UNIX software resource):与软件安装/执行相关
/var(variable):与系统运行过程有关

NOTE:根目录是整个系统最重要的目录,它不但是其他目录的根还与开机,还原,系统修复等操作相关。
FHS标准建议:根目录所在的分区越小越好,而且应用程序安装的软件最好不要在同一个分区内,保持根目录越小越好。如此性能较好,根目录所在的文件系统也较不容易发生错误。

FHS定义出跟目录之后,还有许多的子目录,这些子目录通常放置的内容如下所示:
/bin:放置的是在单用户维护模式下还能够被操作的命令。在这个目录下面的命令可以被root和一般的账号使用,主要有
cat,chmod,date,mv,mkdir,cp,bash等常用的命令
/boot:主要放置开机会用到的文件,包括Linux内核文件以及开机菜单与开机所需的配置文件等。Linux kernal常用的文件
名为vmlinuz,如果使用的是grub这个引导装载程序,则还会存在/boot/grub/这个目录
/dev:在Linux系统上,任何设备与接口设备都是以文件形式存在于这个目录当中。
/etc:系统主要的配置文件几乎都放置在这个目录内。FHS建议:不要放置可执行文件在这个目录内。这个目录下比较
重要的目录有:
/etc/init.d/:所有服务的默认启动脚本都在这里的
/etc/xinted.d/:这就是多为的super daemon管理的各项服务的配置文件目录
/etc/X11/:与X Window有关的各项配置文件都在这里,尤其是xorg.conf这个XServer的配置文件
/home:系统默认的用户主文件夹。通常创建的一般账户的用户文件夹都会规范到这里来。比较重要的是,主文件夹有
两种代号:~代表目前这个用户的主文件夹;~dmtsai代表dmtsai的主文件夹
/lib:在开机时会用到的函数库,以及在/bin或者/sbin下面的命令会调用的函数库。尤其重要的是/lib/modules/这个目录下面
放置的内核相关的模块
/media:下面放置的是可删除设备,包括软盘,硬盘,光驱等等
/mnt:暂时挂载使用
/opt:第三方软件放置的目录
/root:系统管理员的主文件夹。
/sbin:Linux有许多的命令是用来设置系统环境的,这些命令只有root才可以操作,其他的用户只能够进行查询。放在
这个目录下的为开机过程所需要的,里面包括了开机,修复,还原系统所需要的命令。常见的命令包括:
fdisk,fsck,ifconfig,init,mkfs
/srv:srv可以看做是service的缩写,是一些网络服务启动之后,这些服务所需要用到的数据目录。常见的WWW,FTP
/tmp:这是让一般用户或者正在执行的程序暂时放置文件的地方。这个目录任何人都可以访问,所以要定期清理。重要
数据不可以放置在这个目录下面。FHS建议:开机时将这个目录下的数据全部删除
/lost+found:这个目录是使用标准的ext2/ext3文件系统格式才产生的一个目录,目的在于当文件系统产生错误的时候,
将一些丢失的目录放置在这个目录下面。这个目录通常在分区的最顶层存在。
/proc:这个目录本身是一个虚拟文件系统。它放置的数据都是在内存当中的,本身不占据任何硬盘空间。
/sys:它也是一个虚拟文件系统,主要记录与内核相关的信息。也不占据硬盘容量。

这些目录当中与开机相关的目录不可以与根目录放在不同的分区的有:
/etc:配置文件
/bin:重要执行文件
/dev:所需要的设备文件
/lib:执行文件所需要的函数库与内核所需要的模块
/sbin: 重要的系统执行文件

/usr的意义和内容
依据FHS的基本定义,这个目录下面放置的是可分享的不可变动的。如果知道如何通过网络进行分区挂载,那么这个
目录可以分享给局域网内的其他主机来使用。FHS建议所有的软件开发者都应该将他们的数据合理的放置到这个目录
下的子目录,而不要自行新建自己独立的目录。系统默认的软件都会放置到/usr下面。一般来说/usr的子目录建议有
下面这些:
/usr/X11R6/:为X Window系统重要数据所放置的目录
/usr/bin/:绝大部分的用户可使用命令都放在这里
/usr/include/:c/c++等程序的头文件与包含文件放置处,当我们以tarball安装某些数据时会使用
/usr/lib/:包含各应用软件的函数库,目标文件,以及一些不被一般用户惯用的执行文件或脚本。
/usr/local/:系统管理员在本机自行安装下载的软件,建议在此目录,便于管理
/usr/sbin/:非系统正常运行所需要的系统命令
/usr/share/:共享文件,例如man,doc,zoneinfo
/usr/src/:一般源码建议放在这里,内核的放置在本目录下的linux目录下

/var的意义和内容
它是在系统运行后才逐渐开始占用硬盘容量的。它主要针对常态性变动的文件,包括缓存,登录文件,以及软件运行时产生的文件。该目录下放置的子目录包含内容的意义:
/var/cache/:应用程序本身运行过程中会产生一些暂存的文件
/var/lib/:应用程序执行过程中,需要使用到的数据文件放置的目录
/var/lock/:同步锁定
/var/log/:登陆文件放置的目录
/var/mail/:放置个人电子邮箱的目录
/var/run/:某些程序或者服务启动以后,会将它们的PID放在这个目录下
/var/spool/:这个目录放置一些队列数据,这些队列使用完后会删除

目录树的特点
1.起点为根目录
2.每个目录不只能使用本地端的文件系统,也可以使用网络上的文件系统。
3.每个文件在此目录树中的文件名(包含完整路径)都是独一无二的。

绝对路径和相对路径
绝对路径:由根目录(/)开始写起的文件名或目录名
相对路径:以./和../开始的文件名或目录名
./表示当前目录。../表示上一级目录
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: