这里是目录标题
- 一、重定向
- 二、 学Linux的意义
- 三、shell命令的运行原理
- 四、Linux权限管理
- 1.Linux中具体用户的分类
- 五、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