Linux入门
前言
本章主要讲述Linux权限的概念,以及Linux项目的调试器gdb的使用,Linux项目自动化构建工具 - make/Makefile(makefile)...一、Linux的权限
在Linux当中权限分为“人的权限”与“文件的权限”
1.人的权限
人的权限指的通常是两种状态:1.超级用户,2.普通用户
超级用户基本不受任何限制,logout退出超级用户。
普通用户在linux能做的事情有限。
命令提示符的表现:超级用户为“#”,普通用户为“$”。
2.文件的权限
我们先思考这样一个问题,文件的权限是为了什么?
当我写了一个文件,我需要与你协同合作…
当我和你处于竞争关系,我写的代码不希望给你看见…
当我是leader,我希望将这个文件给你看看,让你学习,但不希望你修改…
因为有需求,所以我们的权限分为多种
2.1 : 文件访问者的分类(人)
- 文件和文件目录的所有者:u -->user
- 文件和文件目录的所有者所在的组的用户:g -->group
- 其他用户: o -->other
2.2:普通文件基本权限:
1. r/4 (读):对于文件而言,具有读取权限的内容
2. w/2 (写):对于文件而言,具有改变文件内容的权限
3. x/1(执行):对于文件而言,具有是否有权限执行文件。
当前我们有一个test.c的文件,它的功能就是打印hello linux,我们是这个文件的user,所以说我们有写读的权限,我们可以通过命令chmod
来改变文件的权限。以加多一个x(执行)为例。chmod u+x test.c
结果看到就是test.c变绿了,也就是变成可执行的。同理改变其他ugo的文件权限,还有a表示所有用户!!
小测试:可以测试用echo往文件写,cat把文件打印出来,看看对应都需要什么权限。
3.文件掩码:
通常目录的起始权限:777,普通文件的起始权限为666,这些可以通过umask设置,umask当中对应二进制出现的,在新建的文件当中对应位置为0,也就是“掩饰”掉了这些位置。
- 超级用户文件掩码默认为:0022
- 普通用户的文件掩码默认为:0002
如0002,一般我们只关心后面的三个数002,对应u,g权限不变,而o-写的权限。
3.目录的权限
- 若要在目录下创建文件,需要w权限。
- 若要在目录下读取它的文件列表,要r权限。
- 若要进入一个目录要什么权限,x权限。
其中如果目录没有x权限,那么即使你有w,r权限也无法在目录下做对应的工作了!
上图,当你即使有其他权限也基本上对目录有任何影响,删除目录也如此,删除目录需要递归到目录中当中删除一个个文件。
4.粘滞位的作用
有这样一种场景,当root有这样一个目录,目录下有一个文件,你没有这个文件的读写执行,但是你想试试能不能删,让我们试一试
在上面这种情况我们发现我们处在other当中没有w的权限(ll -d …/1),于是我们不能够删除目录下的文件。我们目录加上w权限
,给o加上w颜色变深
。
也就是说,我们的其他人的目录下的文件,一旦我们拥有w权限
,我们可以在别人的文件夹里删别人的文件!这合理吗?
解决方案:添加粘滞位/不给other写权限
指令:chmod +t 文件名
这里当中的t覆盖了x的位置,但是是具有x的功能的,因为如果没有x,进入不了目录
二、yum
1.软件初理解
Linux的软件包管理器yum,通常linux有三种安装软件的方式:
- 源码
- rpm包
- yum命令行
由于yum能帮我们解决依赖关系,他是一个命令/工具 -->(配置文件),当中指令了我们应该去哪里下载资源,所以我们是日常使用的比较多的。
2.通常使用
比我需要下载一个lrzsz(用于linux和windows通过xshell互传文件),我们可以先通过grep list | grep lrzsz
,
查找:yum list | grep lrzsz(通过管道过滤掉我们不需要的)
安装:sudo yum install lrzsz
卸载: sudo yum remove lrzsz
3.安装扩展源和更新yum源
下面扩展的安装只需要yum install -y epel-release
而更新yum源:
- 需要你先将这个Centos-Base.repo备份一下(移到其他地方)
- 百度Centos7 更新yum源,然后wget下载一个centos7的yum源,然后重命名成Centos-Base.repo,然后放到/etc/yum.repos.d这个路径下
三、make/makefile
make是一条指令,makefile是一个文件,解决了依赖关系和依赖方法,并且自动化编译,一旦写好了这个文件,只需要一个make命令,整个工程就能够完全自动化编译。
假设我们有一个test.c文件,那么我们要的目标文件test就是左边,加上冒号之后右边是他的依赖文件,他所依赖的就是test.c,这里就完成了自动化构建
,那么自动化清理呢?
1. .PHONY
其中的.PHONY可以认为是一个定义伪目标的过程,伪目标的性质就是每次他都会被执行。
接下来解释一下每次都执行的意思
make:第二次执行时会报需要被更新的错误,它内部根据文件是否被修改(修改)然后来判断文件是否被跟新,因为文件的编译是需要大量时间的(工程大的时候)
make clean:这个每次都能执行,因为删除并不会消耗什么时间
当然.PHONY:test
也是没问题的,但是不推荐这样子写。
makefile默认生成第一个可执行程序
,所以make test/make在上面都是可以正常运行的,但是当我们把clean和test换个位置(make)就不会执行我们想要的了
2.其他表示方法(特殊符号)
一般目标文件:依赖列表也可以用以下的方法表示
3.依赖多个文件时
总结
第一次linux的博客就写到这里啦!!!