1 用户与用户组
- 文件所有者,User
属于某个用户的文件 - 用户组,Group
一个用户组指拥有相同权限的一个团体
一个用户可以同时属于不同的用户组
文件所有者可以给属于自己的文件设置权限,限制用户组其他成员的访问 - 其他人,Others
- root
用户信息一般记录在 /etc/passwd
中,个人密码记录在/etc/shadow
内,Linux的所有组名都记录在/etc/group
中
2 Linux文件权限概念
2.1 Linux文件属性
在root用户下输入ls -al
可以看到如下结果
(ls
是list的意思)
[root@ecs-x-large-2-linux-20200316170044 ~]# ls -al
total 48
dr-xr-x---. 6 root root 4096 Jun 24 2019 .
dr-xr-xr-x. 20 root root 4096 Mar 31 16:40 ..
-rw-r--r-- 1 root root 521 Apr 2 02:13 .bash_history
-rw-r--r--. 1 root root 18 Dec 29 2013 .bash_logout
-rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile
-rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc
drwx------ 3 root root 4096 Feb 27 2019 .cache
-rw-r--r--. 1 root root 100 Dec 29 2013 .cshrc
-rw------- 1 root root 0 Feb 27 2019 .history
drwxr-xr-x 2 root root 4096 Feb 27 2019 .oracle_jre_usage
drwxr----- 3 root root 4096 Feb 27 2019 .pki
drwx------ 2 root root 4096 Mar 31 16:39 .ssh
-rw-r--r--. 1 root root 129 Dec 29 2013 .tcshrc
每列所代表的意义和具体读法如下表:
1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|
权限 | 连接 | 所有者 | 用户组 | 文件容量 | 修改日期 | 文件名 |
在表格的基础上做了下图,作为各列的详细解释和读法
2.2 Linux文件权限的重要性
- 数据安全性
- 系统保护
- 数据共享
- 未将权限设置妥当的危害不可估量
2.3 如何改变文件属性与权限
chgrp
改变文件所属用户组chown
改变文件所有者chmod
改变文件的权限
2.3.1 chgrp
改变所属用户组
[~]# chirp [-R] dirname/filename
选项与参数:
-R 进行递归 (recursive)的持续更改,也即连通子目录下所有文件目录都更新称为这个用户组。常常用在更新某一目录内所有的文件情况。
2.3.2 chown
改变文件所有者
[~]# chown [-R] 账号名称 文件或目录
[~]# chown [-R] 账号名称:组名 文件或目录
2.3.3 chmod
改变权限
Linux文件的改变使用的是chmod
这个命令,设置权限的方法有两种,分别可以使用数字或者符号来进行权限的更改。
数字类型改变文件权限
其中 ,r:4 w:2 x:1
每种身份各自的三个权限(rwx)分数是需要累加的,例如当权限为[-rwxrwx—-],分数为:
owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others = —- = 0+0+0 = 0
因此设置权限的更改时,该文件的权限数字就是770.
[~]# chmod [-R] xyz 文件或目录
假如我想将.bashrc文件权限都启用,则有
[~]# ls -al .bashrc
—rw-r—-r—- 1 root root 395 time .bashrc
[~]# chmod 777 .bashrc
[~]# ls -al .bashrc
-rwxrwxrwx 1 root root 395 time .bashrc
符号类型改变文件权限
chmod 身份+操作+权限 文件或目录名
- 身份:u-user,g-group,o-others,a-all
- 操作:+(加入)、-(除去)、=(设置)
- 权限:r、w、x
例如,先将一个文件的权限设置为-rwxr-xr-x,再去掉所有人的可执行权限:
[~]# chmod u=rwx,go=rx .bashrc
[~]# ls -al .bashrc
-rwxr-xr-x 1 root root 395 time .bashrc
[~]# chmod a-x .bashrc
[~]# ls -al .bashrc
-rw-r—-r—- 1 root root 395 time .bashrc
2.4 目录与文件的权限意义
2.4.1 权限对文件的重要性
- r(read): 可读取此文件的实际内容,如读取文本文件的文字内容
- w(write): 可以编辑、新增或者修改该文件的内容(但不含删除该文件)
- x(eXecute): 该文件具有可以被系统执行的权限。与Windows不同,Windows通过文件后缀名判断文件是否可执行,而Linux通过是否有x权限决定,与文件名没有绝对关系
2.4.2 权限对目录的重要性
目录主要的内容是记录文件名列表,文件名与目录有强烈的关联。目录的三个操作权限与文件三个操作权限不大相同。
- r(read contents in directory)
表示具有读取目录结构列表的权限,所以当具有r(读取)一个目录的权限时,表示你可以查询该目录下的文件名数据,所以就可以利用ls
命令将该目录的内容列表显示出来。 - w(modify contents of directory)
可写入的权限对目录来说是最很强大的。因为它表示你具有更改该目录结构列表的权限:
- 新建新的文件与目录;
- 删除已经存在的文件目录与目录(不论该文件的权限为何);
- 将已经存在的文件或目录进行重命名;
- 转移该目录内的文件、目录位置
说白了就是与该目录下的文件名变动有关。
- x(access directory)
目录的x代表用户能否进入该目录成为工作目录的用途(说白了就是能不能cd
进去)
例 :假如有一个test用户,没有支持root用户组,有一个目录的权限为 drwxr—r— 3 root root [else] .ssh,请问test是否可以切换到此目录中?
test对此目录仅具有r的权限,因此test可以查询此目录下的文件名列表。因为test不具有x的权限,所以test不能切换到目录内
注意:在网站开放目录给别人浏览时,应该至少给予rx权限,但w不可随便给。
例:假如test对自己的主文件夹具有rwx权限,此目录下有一个名为the_root.data的文件,权限为-rwx——— 1 root root [else] the_root,test对此文件的权限是什么?可否删除此文件?
显然test对此文件时other身份,因此这个文件他不可读不可编辑也无法执行。但这个文件位于他的主文件夹下,他在此目录下具有完整的rwx权限,所以对于“the_root.data”这个“文件名”具有“删除的权限”。因此test用户可以删除the_root.data这个文件。
2.5 Linux文件种类与拓展名
Linux文件种类由文件属性那10个字符中的第一个来区分。
2.5.1 普通文件[-]
- 纯文本文件(ASCII)
- 二进制文件(binary)
- 数据格式文件(data)
2.5.2 目录[d]
显然~
2.5.3 连接文件[l]
类似于Windows系统下的快捷方式
2.5.4 设备与设备文件(device)[b][c][s][p]
与系统外设及存储等相关的一些文件,通常集中在/dev
目录中,可细分为:
- 块(block)设备文件[b]。是一些存储数据以提供系统随机访问的接口设备,如硬盘软盘。可随机在硬盘的不同块读写,这种设备就是成组设备。
- 字符(character)设备文件[c]。是一些串行端口的接口设备。如鼠标、键盘。这种设备的特性是“一次性读取的”,不能够截断输出。
- 套接字(sockets)[s]。通常被用在网络上的数据通信,我们可以启动一个程序来监听客户端的请求,而客户端就可以通过这个socket来进行数据的通信了。
- 管道(FIFO、pipe)[p]。主要的目的是在解决多个程序的同时访问一个文件所造成的错误问题。
2.5.5 Linux文件扩展名
一个Linux文件能否被执行,与第一列十个属性有关,与文件名一点关系都没有,但是可以被执行与执行是否成功无关,执行成功与否得看文件本身的内容。可执行文件也有不同的执行方式和内容,因此扩展名可以在某种意义上区分文件种类。常用扩展名不再赘述。甚至可以理解为Linux上的文件名只是让你了解该文件的可能用途。
2.5.6 Linux文件长度
据说Linux文件通常很长
Linux文件名的限制:
- 单一文件或目录的最大容许文件名为255个字符
- 包含完整路径名称及目录(/)的完整文件名为4096个字符
3 Linux目录配置
Linux文件具有一个专门的标准:Filesystem Hierarchy Standard(FHS)标准。根据FHS的官方文件指出,其主要目的是希望让用户可以了解到已安装软件通常放置于哪个目录下。内容简单而复杂,有空专门整理为一个博客,以后再更新。
重点:
- FHS制定的四种目录特色:shareable、unshareable、static、variable
- FHS所定义的三层主目录为:/、/var、/usr
- 有五个目录不可与根目录放在不同的分区:/etc、/bin、/lib、/dev、/sbin
其他补充
绝对路径与相对路径
- 绝对路径:由根目录(/)开始写起的文件名或目录名称。
- 相对路径:相对于目前路径的文件名写法。
./
表示当前的目录
../
表示上一层目录
CentOS的查看
查看你的distribution使用的是哪个Linux标准(Linux Standard Base),可以使用如下命令:
[root@ecs-x-large-2-linux-20200316170044 ~]# uname -r
3.10.0-1062.1.1.el7.x86_64 <<可以查看实际的内核版本
[root@ecs-x-large-2-linux-20200316170044 ~]# lsb_release -a
LSB Version: :core-4.1-amd64:core-4.1-noarch <<LSB的版本
Distributor ID: CentOS
Description: CentOS Linux release 7.6.1810 (Core) <<distribution 的版本
Release: 7.6.1810
Codename: Core
[root@ecs-x-large-2-linux-20200316170044 ~]#