权限问题的理解——Linux

Linux系统能学好,C++可谓是像亚索头上骑了一个猫咪,马克头上骑了一头瑶,快乐至极。

一、重定向

输入重定<向,输出重定向>,追加重定向>>。

二、 学Linux的意义

Linux是什么?他就是一个操作系统。

是一个进行软硬件资源管理的软件。

操作系统怎么管理硬件?操作系统是间接管理硬件的。

Linux是基础,可以更好的接受学习其他东西。他是一个平台,只要把操作系统和计算机网络学的差不多了,就能清楚地看待其他东西了。

Linux技术角度的内核发行版。是数字编号
Linux商业的发行版,比如ubuntu,红旗等。

三、shell命令的运行原理

一般我们的用户不使用Linux内核的,一般都是使用shell这个程序来和kernel沟通的。
shell称为外壳程序。
shell外壳的作用是用户和Linux内核连接的桥梁。它是命令行解释器,将用户输入的命令翻译为内核理解的东西。

1.将用户的命令翻译给核心处理
2.同时将和核心的处理结果翻译给使用者。

在Linux下,外壳是命令行解释器。Linux下叫做bash
在windows下,外壳是图形化界面。

外壳存在的意义是什么
1.shell外壳存在的意义是降低操作OS的成本.。
2.外壳可以保护操作系统。

我们centos 7常用的命令行解释器(shell)叫做bash
shell是所有解释器的总称。bash是shell中的一个。

四、Linux权限管理

Linux分为两种用户,root用户和普通用户。

1.Linux中具体用户的分类

root用户和普通用户,root只有一个,普通用户可以有一堆。

和windows一样,windows也有管理员,和用户。

普通用户的权限是受管控的。

假如现在想确定一下我是谁。就要输入命令 whoami。

root和普通用户都要设置密码。千万不要把root密码和普通用户的密码设置成一样的。 Linux系统下输入的密码是不回显的。不回显就是不显示黑点。

不回显是为了安全。因为回显能得到密码是多少位。

su + 用户名可以切换到其他普通用户。假如你是普通用户则需要输入密码。

su 用户名

五、Linux文件相关的权限概念

首先通过ls -l命令来显示文件的全部属性。

ls -l

在这里插入图片描述
首先我们看第一列的字符。
第一列代表的是文件的类型。Linux下不是以文件名后缀来区分文件的类型,这点和windows不同。

但是注意gcc不是linux系统,gcc只是Linux系统上的一个软件,所以gcc是识别后缀的。

文件类型

在Linux系统下。

-一条杠:代表普通文件(文本、源代码、可执行程序、第三方动静态库)
d:目录文件
l:链接文件
p:管道文件
b:块设备文件、磁盘文件
c:字符设备文件(就是终端显示器)

文件的权限

权限 = 人 + 事物属性。
什么是权限?
1.约束人的
2.需要对应的时候具有特定的属性。

这个文件谁能访问,谁不能访问?
文件的权限分为三类r,x,w.
对应的文件应该具备的某种属性。比如r,w和执行x。

假如不具备rwx就算天王老子来了,也不能读写执行。

Linux系统中,人分为三类。
这三类都是具体的角色,可以是root也可以是普通用户。

1.文件拥有者 owner
拥有者就像你有一部手机。你就是拥有者

2.文件的所属组,grouper
所属组代表的是你的朋友或者家人。你的家人也可以看你的手机。

为什么Linux中会有所属组?
因为需要进行组队编程的话,只有owner和other的话无法让别人参与。所属组的出现可以让相同的组的人自由访问组内的文件。

3.文件的其他用户,other
这部手机不是其他人的。所以其他人都是other

在这里插入图片描述

1.三个三个一组分别划分权限,第一组代表拥有者权限,第二组代表所属组权限,第三组代表other的权限。

每一组对应的权限的位置的含义是确定的。rwx.

2.上面图片中,CaoShuai第一个名字代表的是文件的拥有者。

3.root代表文件的所属组

4.4096这一列代表的是文件的大小

那文件的other呢?
只要不是拥有者和所属组的第三者,都是other。

文件的权限操作

文件的权限是约束普通人的。假如是root的话,虽然root相对于某个文件是other,但可以随便读取写入和执行。

文件的权限操作涉及到两方面。
1.修稿文件的属性
2.修改人

通常情况下,是修改某些人对应的某个属性。

去掉权限

如果想要去掉test.c的拥有者owner的读权限,则就是下面的命令,u代表是拥有者-代表减去,r代表读

chmod u-r test.c

去掉所属组的读r

chmod g-r test.c

去掉other的读r

chmod o-r test.c

加上权限

加上和减去相反。一看就明白了

chmod u+rx test.c

给所属组加上r权限

chmod g+r test.c

给other加上所有权限

chmod o+rwx test.c

给多个角色减去权限用逗号隔开。

chmod u-wx,g-w,o-rwx test.c

八进制文件权限操作

比如 rwx可以对应 八进制的111也就是十进制的7.
再比如101表示5,表示r-x。

比如给所有人设置为rwx权限,可以写为777

第一个7代表拥有者,是111
第二个7代表所属组,是111
第三个7代表other,111

chomd 777 test.c

更改文件的拥有者和所属组

比如把文件test.c的拥有者改为root的。
但是你会发现不会改。

因为在现实中你要给别人东西的话,需要经过别人的同意。

chown root test.c//错误代码
sudo chown root test.c//正确代码

sudo 代表提升权限,提升了权限就可以强行塞给别人的东西。

虽然文件拥有者改变成了别人,但是还有目录权限的限制,所以如果目录权限不给别人,别人也访问不了这个文件。

也可以切换为root强行改变文件的拥有人。

改变文件的所属组。

chgrp xjh test.c

将拥有者和所属组一起改变就是中间价格冒号。

chgrp xjh:xjh test.c

为什么sudo不输入root的密码?

因为在我们的系统中有一个叫做信任列表的东西。
假如我们sudo会报错的话,说明我们的用户没有假如信任列表中。我们要把信任的用户加入信任列表中。

文件的创建者和拥有者一定是同一个人吗?

答案是不一定的。因为我们改变文件的拥有者。

六、目录的权限

目录有什么权限呢?
我们想进入一个目录,需要的权限是x,也就是可执行权限。这个非常特殊。需要记住

如果目录没有r和w权限,是什么样子?

目录的r权限如果没有的话,则 ls看不到目录的文件。但是允许目录里面写入一个文件,只是不允许查看。

目录的w权限如果没有的话,则touch创建不了文件,只能显示文件。

结论:目录的r和w权限代表的是目录的查看和创建文件。

Linux下一切皆文件,目录也是文件。

文件 = 内容 + 属性。
那么目录的属性是权限,那么内容呢?
内容代表的是部分文件的“属性。”(比如文件名)
;

七、默认权限

目录的默认权限是775
普通文件的默认权限是664

当然不同的系统可能有差异
为什么默认权限是这样的呢?

1.默认目录的起始权限:从777开始
2.默认普通文件的权限:从666开始

因为系统中有一个默认的权限掩码,叫做umask
他的值是002.

权限掩码

所谓的权限掩码指的是:凡是在权限掩码中出现的权限都不应该在最终权限中出现。

002 就是 000 000 010
目录的起始权限:111 111 111
所以目录对应的权限应该是111 111 101也就是775

002 就是 000 000 010
文件的起始权限:110 110 110
然后文件的默认权限就是110 110 100
也就是664

猜你喜欢

转载自blog.csdn.net/qq2466200050/article/details/128524492