前言:
我们每次展开当前目录的文件,前面都会有一大堆参数,这些参数到底都是什么意思?本篇我们就来详细介绍。当然还有我们在Linux中下载时用到的yum软件包管理器。
一、Linux权限:
这个其实主要看个人理解,我们先介绍两种用户:
Linux下有两种用户:超级用户(root)、普通用户。
超级用户:可以再linux系统下做任何事情,不受限制。超级用户的命令提示符是"#"
普通用户:在linux下做有限的事情。普通用户的命令提示符是"$"。
1.su命令:
su :切换用户
su [用户名]
我们继续来说权限。 一个用户有两种属性,一种为身份(权限),一种为他本身。
但是有时候我们普通用户也需要执行超级用户执行的命令,此时我们就需要提权操作。
2.sudo命令:
这个命令一般是当我们处于普通用户需要执行root用户才能执行的操作使用的,也就是提权操作。
因为不可能随便让一个用户执行超级用户才能执行的权利,所以在系统文件中存在一个类似于白名单的文件(/etc/sudoers超级用户才能打开)。
为了接下来的讲解,我们先将gan用于加入白名单(至于vim编辑器,大家可以先按照我的操作添加用户):
我们先切换至root用户(注意必须切换身份):
# 切换至root用户 su - # 输入root密码 #之后使用vim /etc/sudoers编辑该文件 vim /etc/sudoers
使用vim编辑器打开/etc/sudoers文件后,先移动光标找到以下内容:
之后点击i进入vim的插入模式,并在root下面一行添加以下内容,格式与上面的root格式一样(相当于添加白名单):
注意:我目前普通用户名为gan用户,具体情况看你们的普通用户名
之后点击Esc,输入":"(也就是shift + ;),并输入wq(报错并退出)即可。
此时我们白名单添加gan用户成功,就可以通过gan用户执行sudo命令了:
注意:输入的密码是自己的密码而不是超级用户的密码
tips:第一次执行完sudo以后,大概10-15分钟之内再次执行sudo不需要再次输入密码
3.文件权限:
Linux中,对文件来讲分为3种人:拥有者 所属组 other。
对于拥有者,和other都比较好理解,这里我们重点讲解所属组。
3.1 所属组:
比如一家企业分为两组:A组和B组,这家公司进行团队赛马(就是两个队伍完成一个项目,之后看哪个队伍完成的好),此时你写了一个文件,拥有者是你,此时你的队长想看你写的代码,你只能通过某种操作放开对other的权限让他看。但此时所有人都能看你的文件了,B组可能就会抄袭你的文件,此时所属组的功能就出现了。
所属组是为了进行更细粒度的权限管理。
3.2 other:
当一个用户不是当前文件拥有者和所属组时,也就是other,所以不用表明。
4.权限对普通文件的约束:
权限受两方面的约束:人 + 事务的属性
事务的属性:
此时为可以看到,当前目录的file.txt文件的拥有者和所属组都为root,上面介绍了每个字符的含义,如果此时我们是gan用户,就属于other,此时对file.txt文件只有读权限。
此时我们将用户切换为gan用户,并对file.txt文件进行写入:
此时我们可以通过改变对file文件的other权限使other拥有权限。
4.1 chmod命令使用方法一
这个命令可以修改文件的权限,此时我们对file.txt文件的other追加w(写权限):
可以看出:必须是拥有者才能改文件的权限(除超级用户)。
此时我们当前目录下有一个gan用户创建的file-zsy文件,拥有者和所属组都为gan用户,所以此时我们对chmod命令做一些演示:
最后两行可以看到,我们使用了以下命令给所有人添加或者取消了权限:
chmod a + rwx file-zsy
所以这里做一个chmod命令的总结:
chmod ugoa +/- rwx file
4.2 chmod命令使用方法二
我们可以发现,这些权限只有拥有或者没有,也就是只有两态的概念,所以我们可以使用二进制来表示。
比如rw-可以表示110。
所以对于表示3种不同身份每个身份的权限可以使用8进制表示,因为3个二进制bit位最大可以表示7。
接下来演示使用8进制对各种身份的权限进行改变:
这两种方式都可以使用,看个人习惯。
tips:看文件的颜色可以区分是否为可执行文件。
此时你可能会有疑问,我们这个文件添加了可执行操作,那么这个文件就可以被执行了吗?
这里有一个前提条件,一个文件要想执行,必须有可执行操作,之后必须能被可执行。
此时我们讲一个拥有者和所属组都为gan的用户,将其拥有者的所有权限都取消,所属组所有权限都添加,并写入内容观察结果:
这里是因为,当我们已进入系统,系统就会拿用户名和前面的拥有者和所属组进行比对,这里只比对一次,一旦比对成功,就不会继续比对,所以此时我们gan用户就处在拥有者中,即使所属组有写权限,但是系统认为你是拥有者。
4.3 chown命令:
我们也可以更改文件的拥有者。
如果此时我们以gan用户将拥有者改为root,则会报错:
普通用户通常只能更改自己拥有的文件的所有者为自己所属的用户组中的其他用户,或者在特定的受限条件下进行一些有限的权限操作。
4.4 chgrp命令:
对文件的所属组进行更改,此时我们将其拥有者和所属组都更改为gan用户:
tips:当我们把我们的一个文件的拥有者和所属组更改时,就好像我们把一个东西给别人一样,此时别人需要同意,但是别人可能不在线,只能进行权限提升
5.权限对目录的约束:
因为Linux下文件大致分为两种:普通文件 和 目录。
我们刚才了解了权限对普通文件的约束效果,接下来我们要了解权限对目录的约束效果(当前我们使用gan用户创建的dir目录进行演示)。
5.1 读权限对目录的限制
可以看出,读权限无法读取当前文件目录(除非你知道目录中有什么,之后对目录中的文件进行操作不受影响)。
5.2 写权限对目录的限制
可以看出,写权限对目录的影响是无法在目录中创建、删除、重命名和移动文件。
5.3 可执行对目录的限制
可以看出,可执行权限对目录的影响是无法进入该目录。
小总结:读权限无法读取当前文件目录(除非你知道目录中有什么,之后对目录中的文件进行操作不受影响);写权限对目录的影响是无法在目录中创建、删除、重命名和移动文件(可以进入该目录和该目录以下的目录,因为进入目录是受可执行影响);可执行权限对目录的影响是无法进入该目录。
6.文件的起始权限:
此时我们再普通用户下直接创建一个普通文件和目录。
在Linux中,对于目录起始权限为777(权限拉满);普通文件起始权限为666(没有可执行权限)。但是我们创建以后并不是这样,这是因为Linux系统中有一个权限掩码的文件。
6.1 umask
我们直接输入umask就可以到当前用户的权限掩码。
注意umask后面的3位也是8进制,可以理解为你不想给某些人权限的话,你就将umask中的8进制对应的二进制设置为1即可。
超级用户默认掩码值为0022
普通用户默认为0002
umask可以更加灵活的控制文件的权限。
我们可以设置umask,比如我们设置为全0,即可看普通文件和目录的起始权限。
通过观察不难发现,当权限掩码全为1时,创建的文件不会有任何权限。也就是说,权限掩码一个二进制位为1的话,创建的文件对应的二进制位就没有权限,比如:
6.2 家目录和子目录的权限关系
比如此时我们在root用户下新建一个文件,之后切换为gan(普通用户)对root创建的文件删除(gan用户不是该文件的拥有者、所属组),竟然发现成功删除了!
这是为什么? 因为删除文件是根据家目录的拥有者和所属组来决定的!
所以删文件是基于家目录文件的。
7.粘滞位:
此时系统中一共三个用户,一个root用户,一个gan用户,一个zsy用户。
此时zsy和gan用户想向同一个文件中写入内容时,我们一般是采用在根目录中创建一个文件,之后通过root用户更改这个文件的other权限,允许这个文件向other提供所有操作。
此时gan用户在这个共享目录中创建了一个属于自己的文件,但是他只想让他的所属组有权利读写,他的所属组不包括zsy,此时zsy属于other,对gan用户文件没有任何权限,但是由于父级目录的原因,他可以直接删除这个文件。
此时就会出现问题,此时我们需要通过root用户修改/share_112文件权限,对other添加t权限。
粘滞位的含义是对于任何目录,我们想让任何人在里面新建文件,修改文件,但是不能删除文件。 除非拥有者是自己。
二、yum软件管理包
yum 全称为 Yellowdog Updater, Modified。
它是一个在众多基于 RPM(Red Hat Package Manager)包管理系统的 Linux 发行版中广泛使用的软件包管理器。
Linux中,常见的软件安装方式
1.yum / apt(红帽系统)
- .rpm安装包安装
3.源码安装
1.Linux的软件生态
大家应该都学过生物,知道什么是生态系统,其实Linux软件中也有生态系统。
这里我们可以将其理解为一整个体系,比如:文档完善;论坛都是工程师,而且历史上暴露的问题都已经整理好手册;有完善的软件系统。
2.什么是yum?
我们先来看一张图:
所以我们可以把yum理解为手机上的应用商店,它可以直接帮你处理好软件的安装。
3.yum install
顾名思义,就是下载安装的意思,后面跟上文件名或者命令名。
这里需要注意的是,我们在下载的时候一般需要使用root用户:
这是为什么?因为一般我们下载文件会把文件放在/usr/bin目录下
4.yum list
如果你不确定软件包的确切名称,可以使用以下命令列出已安装的软件包:
yum list installed
我们可以配合管道符( | )和文本过滤指令(grep)来查找想要的软件包名。 比如:
yum list | grep gcc
5.yum remove
确定了要卸载的软件包名称之后,就可以使用以下命令进行卸载:
yum remove package_name
6.yum配置文件
这里可能有人会问,就算下载也需要知道网址啊?这里为什么直接就yum install就可以安装了?其实是因为yum有配置文件,里面存放的就是其他软件下载安装的路径。
这个配置文件一般在/etc/yum.repos.d/目录下以 .repo为后缀的文件。每个 .repo 文件对应一个软件仓库,包含了仓库的名称、描述、地址、是否启用等信息。
我们一般看CentOS-Base.repo,这里面存放的就是网址,别人写好的,此时我们打开喽一眼:
嗯......有问题的话搜索看如何解决(哈哈,原谅坐着懒得写了,因为你下载CentOS 7 一般是不会出错的,或者使用使用云服务器更不会出错,遇到了再出教程吧)。
总结:
我们已经知道了文件权限和yum的一些原理,接下来我们要学习Linux下的gcc编译器和vim编辑器了。