Linux一般将文件可存取的身份分为三个类别,分别是 owner/group/others,且三种身份各有 read/write/execute 等权限。
使用者与群组
文件拥有者
由于Linux是个多用户多任务的系统, 所以可以设置为只有文件拥有者才可查看或修改,其他人无法查看修改
群组概念
以团队形式来共享,分隔可查看,修改的权限。
其他人
既不是文件拥有者,又不是群组里的人,root除外。
Linux 使用者身份与群组记录的文件
默认的情况下:
- 所有的系统上的帐号与一般身份使用者,还有root, 记录在
/etc/passwd
- 个人的密码则是记录在
/etc/shadow
- Linux所有的群组名称都纪录在
/etc/group
Linux 文件权限概念
Linux文件属性
第一栏代表这个文件的类型与权限(permission)
第一个字符代表这个文件是“目录、文件或链接文件等等”:
- 当为
d
则是目录,例如上表文件名为“.config”的那一行; - 当为
-
则是文件,例如上表文件名为“initial-setup-ks.cfg”那一行; - 若是
l
则表示为链接文件(link file); - 若是
b
则表示为设备文件里面的可供储存的周边设备(可随机存取设备); - 若是
c
则表示为设备文件里面的序列埠设备,例如键盘、鼠标(一次性读取设备)。
- 当为
接下来的字符中,以三个为一组,且均为“rwx” 的三个参数的组合。
r
代表可读(read)、w
代表可写(write)、x
代表可执行(execute)- 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号
-
而已。 - 第一组为“文件拥有者可具备的权限”,以“initial-setup-ks.cfg”那个文件为例, 该文件的拥有者可以读写,但不可执行;
- 第二组为“加入此群组之帐号的权限”;
- 第三组为“非本人且没有加入本群组之其他帐号的权限”。
第二栏表示有多少文件名链接到此节点(i-node)
第三栏表示这个文件(或目录)的“拥有者帐号”
第四栏表示这个文件的所属群组
第五栏为这个文件的容量大小,默认单位为Bytes;
第六栏为这个文件的创建日期或者是最近的修改日期
第七栏为这个文件的文件名
如何改变文件属性与权限
- chgrp :改变文件所属群组
- chown :改变文件拥有者
- chmod :改变文件的权限,
SUID, SGID, SBIT
等等的特性
改变所属群组, chgrp
- 被改变的群组名称必须要在
/etc/group
文件内存在才行,否则就会显示错误
1 | [root@study ~]$ chgrp [-R] dirname/filename ... |
改变文件拥有者, chown
- 在
/etc/passwd
这个文件中有纪录的使用者名称才能改变 - 可以顺便直接修改群组的名称
chown [-R] 帐号名称:群组名称 文件或目录
:
可以用.
替换, 推荐:
- chown也能单纯的修改所属群组呢! 例如
chown .sshd initial-setup-ks.cfg
就是修改群组,就是那个小数点的用途!
1 | [root@study ~]# chown [-R] 帐号名称 文件或目录 |
改变权限, chmod
数字类型改变文件权限
r, w, x
分别对应数字 4, 2, 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
即该文件权限为7701
2
3
4[root@study ~]$ chmod [-R] xyz 文件或目录
选项与参数:
xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
-R : 进行递回(recursive)的持续变更,亦即连同次目录下的所有文件都会变更- vim编辑后的文件默认是664 ——
-rw-rw-r--
- 需要变成可执行文件是755 ——
-rwxr-xr-x
- vim编辑后的文件默认是664 ——
符号类型改变文件权限
user, group, others, all 分别对应字母 u, g, o, a
- | chmod | u g o a | +(加入) -(除去) =(设置) | r w x | 文件或目录 |
目录与文件之权限意义
一个文件可以具有的权限有:可读、可写、可执行权限
权限 | 具体内容 |
---|---|
r | 可读权限—read 对文件:具有显示文件内容的权限 对目录:具有浏览目录的权限,可以查看目录内容,但是无法进入目录 |
w | 可写权限—write 对文件:具有编辑和删除文件的权限 对目录:具有删除和移动目录的权限 |
x | 可执行权限—excute 对文件:具有执行文件的权限 对目录:具有进入目录的权限 |
Linux文件种类与扩展名
文件种类 | 符号 | 说明 |
---|---|---|
正规文件(regular file) | 第一个属性为 - |
纯文本文件(ASCII) 二进制档(binary) 数据格式文件(data) |
目录(directory) | 第一个属性为 d |
如 [drwxrwxrwx] |
链接文件(link) | 第一个属性为 l |
类似Windows中的快捷方式 |
设备与设备文件(device) | 第一个属性为b 第一个属性为 c |
区块(block)设备文件 储存设备 字符(character)设备文件 外设 |
数据接口文件(sockets) | 第一个属性为 s |
最常在/run或/tmp这些个目录中看到这种文件类型 |
数据输送档(FIFO, pipe) | 第一个属性为p |
目的在解决多个程序同时存取一个文件所造成的错误问题 |
Linux目录配置
Linux目录配置的依据–FHS
Filesystem Hierarchy Standard (FHS)标准
/
(root, 根目录):与开机系统有关;/usr
(unix software resource):与软件安装/执行有关;/var
(variable):与系统运行过程有关。
根目录 (/) 的意义与内容
可分享的(shareable) | 不可分享的(unshareable) | |
---|---|---|
不变的(static) | /usr (软件放置处) |
/etc (配置文件) |
/opt (第三方协力软件) |
/boot (开机与核心档) |
|
可变动的(variable) | /var/mail (使用者邮件信箱) |
/var/run (程序关) |
/var/spool/news (新闻群组) |
/var/lock (程序相关) |
具体内容参看鸟哥Linux私房菜第四版p281
- 根目录越小越好。 如此不但性能较佳,根目录所在的文件系统也较不容易发生问题。
目录 | 应放置文件内容 |
---|---|
/lost+found | 这个目录是使用标准的ext2/ext3/ext4文件系统格式才会产生的一个目录,目的在于当文件系统发生错误时, 将一些遗失的片段放置到这个目录下。不过如果使用的是 xfs 文件系统的话,就不会存在这个目录了! |
/proc | 这个目录本身是一个“虚拟文件系统(virtual filesystem)”喔!他放置的数据都是在内存当中, 例如系统核心、行程信息(process)、周边设备的状态及网络状态等等。因为这个目录下的数据都是在内存当中, 所以本身不占任何硬盘空间啊!比较重要的文件例如:/proc/cpuinfo , /proc/dma ,/proc/interrupts , /proc/ioports , /proc/net/* 等等。 |
/sys | 这个目录其实跟/proc非常类似,也是一个虚拟的文件系统,主要也是记录核心与系统硬件信息较相关的信息。 包括目前已载入的核心模块与核心侦测到的硬件设备信息等等。这个目录同样不占硬盘容量喔 |
/usr 的意义与内容
usr是Unix Software Resource,也就是“Unix操作系统软件资源”所放置的目录,所有软件开发者,应该将他们的数据合理的分别放置到这个目录下的次目录,而不要自行创建该软件自己独立的目录。
/var 的意义与内容
/var目录主要针对常态性变动的文件,包括高速缓存(cache)、登录文件(log file)以及某些软件运行所产生的文件, 包括程序文件(lock file,run file),或者例如MySQL数据库的文件等等。
CentOS 7 与过去的目录编排:
- /bin –> /usr/bin
- /sbin –> /usr/sbin
- /lib –> /usr/lib
- /lib64 –> /usr/lib64
- /var/lock –> /run/lock
- /var/run –> /run