Linux第一周-基础练习
1.何为Linux
Linux是一个操作系统,且是一套免费使用和*传播的类Unix操作系统,是一个多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。它的创始人是Linus Torvalds,他当时还是芬兰某大学的一个在读大学生(tql)。让我们看一看Linux系统的一个系统架构,如下:
系统调用和内核特别重要。我认为Linux的魅力是Shell,Shell 既是一种命令语言,又是一种程序设计语言。 Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。不像Windows的容易上手,Linux系统会多用终端使用户与系统交互,其安全性也比Windows强。最重要的是它是开源的,免费的才是最好的。
2.Linux安装
Linux也分为centos,ubuntu等,我个人更爱ubuntu,其图形化界面真的很好用,本人比较菜,用纯命令行肯定是不行的,并且centos多用于服务器,对个人而言ubuntu更好上手。
我使用的是VMware,由于装了很久了,感觉很多都没啥印象了,当时是有一个公众号软件安装管家可以下载破解版,只不过现在好像是挂了。然后在网上去下载镜像(.iso文件),下载ubuntu也没出现啥问题。最终的呈现如下:
3.用户管理
首先要知道Linux的最高权限是root,这也是所有黑客想得到的东西,如果得到了root权限就代表可以在系统中做任何事,要查看自己在何权限可以使用命令whoami
whoami
得到的结果如下:
3.1 创建用户
就像windows一样,Linux也可以用adduser来创建用户,但需要注意的是看其是否是root权限,只有root权限可以创建用户,如果不是root权限要提权,可用sudo命令来进行提权,在这里我们创建一个用户
adduser boris
如果要查看用户可以进入home目录,也就是cd /home命令,然后ls查看文件或者是在/etc/passwd中查看用户,会发现多出来了一个boris。
如果要切换命令可以使用
su -l boris
效果如下:
可以看到我之前的用户名叫root,现在改为了boris。(可以使用pwd命令来查看其绝对路径。)
当然如果想设置密码或者重设密码可以使用
passwd boris
这里还是要在root权限下执行。如果想退出boris回到之前的账号,可以使用ctrl+D的命令,会显示注销。
3.2 用户组
如果要查看用户组,可以直接使用groups命令。
这里冒号之前表示用户,后面表示该用户所属的用户组,比如boris:boris指的是用户名为boris,所属用户组也是boris。
我们也可以查看所有的组,使用cat命令查看/etc/group中的内容。
东西太多了,我们只想查看boris用户,所以使用命令
cat /etc/group | grep -E "boris"
这里的grep是用于查找文件中符合条件的字符串,-E为将样式为延伸的正则表达式来使用,这里我们是只需要出现boris的groups信息,得到的结果如下:
现在要进行一个骚操作,让用boris用户可以使用sudo得到root权限,命令为:
usermod -G sudo boris
可以验证一下,前面提到只有root权限可以创建用户,我在这里使用sudo提取使boris也可以创建用户来验证结果,效果如下:
发现是可以的,说明实验成功。
3.3 删除用户
这个简单,一个命令就好(要使用还是要提权)
deluser boris
4.用户及权限管理
4.1 查看文件权限
查看文件可以使用ls命令,可以呈现的效果如下:
如果查看长文件以及长文件的权限,可以使用
ls -l
效果如下:
需要注意的是,以第一行为例:drwxr-xr-x,拆解一下,前三个为:rwx指的是文件所有者权限,rwx指可读可写,允许执行,中间三个为:r-x指的是文件所属组权限,r-x指的是可读不可写可执行,最后三个为:r-x指的是其他用户的权限,r-x指的是可读不可写可执行。最后一开始的d指的是目录(directory),说的是这些文件都是目录文件。
ls后面还可以跟很多命令,比如:
ls -a
效果如下:
这里的第一排前面有一个.指的是当前目录的文件,第二排在前面有一个…指的是上级目录的文件,后面几排的.指的是隐藏文件。
再比如可以查看文件大小的命令:
ls -asSh
得到的结果为:
4.2 变更文件所有者
在boris里创建一个文件
可以看到这个huawei文件的所有者是boris。下面要进行的骚操作是将这个boris变为root,也就是一个命令
sudo chown root huawei
注意这里一定要sudo,可以看到文件用户变为了root
4.2 修改文件权限
现在要修改文件权限,之前创建了一个文件叫huawei,首先写入一些内容进huawei,命令如下:
echo "Hello Java" > Huawei
得到的结果如下:
如果要赋予其权限可以使用chmod命令,以600为例,这三个数字都表示八进制,6也就是110表示拥有者可读可写不可执行,0表示所属组不可读不可写不可执行,0表示其他用户不可读不可写不可执行。可以使用ls -alh命令来查看权限。
现在,我们来进行一个案例:添加一个用户 loutest,使用 sudo 创建文件 /opt/forloutest,设置成用户 loutest 可以读写。
操作如下:
5.Linux 目录及结构文件基本操作
对于Linux目录结构有一个FHS标准,FHS 定义了两层规范,第一层是, / 下面的各个目录应该要放什么文件数据,例如 /etc 应该放置设置文件,/bin 与 /sbin 则应该放置可执行文件等等。
第二层则是针对 /usr 及 /var 这两个目录的子目录来定义。例如 /var/log 放置系统日志文件,/usr/share 放置共享数据等等。
要切换目录可以使用cd命令,如cd .表示当前目录,cd …表示这个目录的上一个目录,对于绝对路径如 /usr/local/bin,在如相对路径 …/…/usr/local/bin,常用的pwd命令就是查看绝对路径。/是根目录,~是家目录。
5.1 Linux文件基本操作
5.1.1 文件的新建
可以使用touch来创建文件,对于创建目录和windows一样,使用mkdir命令,mkdir -p 命令可同时创建父目录(多级目录)。
5.1.2 文件的复制
复制主要是使用cp命令,但是复制目录要使用参数-r或者-R。
下面创建了一个目录,然后复制到刚创建的/fruit/apple/small_apple目录下:
5.1.3 文件的删除
文件删除可以使用rm命令,强制删除是rm -f当然还有一个很刺激的操作,要提权使用那就是
rm -rf/*
5.1.4 移动文件与文件重命名
这里使用的主要命令是mv,现在进行将一个.txt文件移动到刚刚创建的hihi下
mv也可以重命名文件
对于重命名如果数量比较大,也就是批处理可以使用rename命令,如下使用了正则表达式,目的是创建几个.txt文件,然后将这些后缀为.txt的文件改为.c文件,再将.c改为.C。
这里用到了一些通配符,在shell中常用通配符如下:
5.1.5 文件的查看
查看文件可以使用cat命令,分页,翻页可以使用more以及less命令
这里的-n是显示行数。
5.1.5 查看文件的类型
可以使用file命令查看文件的类型,效果如下:
5.1.6 作业
1.创建一个 homework 目录,建立名为 1.txt ~ 10.txt 文件,并删除 1.txt ~ 5.txt
2.Linux 的日志文件在哪个目录?
Linux 系统的日志目录 Linux 系统的日志目录 连接时间的日志 连接时间日志一般由/var/log/wtmp和/var/run/utmp这两个文件记录
5.环境变量与文件查找
5.1 环境变量
这里的变量就是shell变量,就像我们学的C语言一样,要使用变量首先要声明,然后要赋值,这里我声明一个整数并输出,注意的是输出在变量前要加$符号
不然会误认为输出一个叫flag的字符串。
这只是普通变量,还有个概念大家应该都不陌生,那就是环境变量,在windows系统中,在装jdk时,会要求配置环境变量,Linux中的环境变量如 Shell 的环境变量作用于自身和它的子进程。有set,env以及export三个命令与环境变量有关,它们三者之间的关系如下:
我们输出环境变量试试,会出现什么:
接下来创建一个.sh文件和.c文件来执行它。
首先创建一个.sh文件,然后写入代码:
现在使用bash执行来验证结果:
然后创建一个.c文件
可以使用g++编译,然后执行
现在来探究下C语言到可执行文件的编译过程,大致过程如下:
所以过程是.c程序经过预编译变为.i文件,.i文件经过编译变为.s文件,.s文件经过汇编变为.o文件,.o文件经过连接变为可执行文件。
对于变量的修改可以有如下方式:
5.2 文件查找
文件查找是一个特别有用的操作,在windows中我大多是借助everything软件来进行搜索。在Linux中可以使用whereis,which,locate。
使用locate会会自动递归子目录进行查找。
5.2 作业
找出 /etc/ 目录下的所有以 .list 结尾的文件。
可以使用find命令,find的用法是find+目录+条件+条件值,这里使用命令
find /etc/ -name ".list"
6.挑战
有一个非常重要的文件(sources.list)但是你忘了它在哪了,你依稀记得它在 /etc/ 目录下,现在要你把这个文件找出来,然后设置成自己,自己可以访问,但是其他用户并不能访问。
操作如下图:
步骤如下:
- 要找到这个sources.list,使用find命令
- 要使用chown命令,使这个sources.list文件所有者变为boris(也就是我自己)
- 使用chmod命令使这个文件权限变为只有自己可读可写
注意这里的ls -alh是查看这个文件的权限。
6.文件打包与解压缩
在windows中很多时候要打包文件是使其变为.zip,在linux中也是,可以使用tar和zip命令进行解压缩。常用的命令如下:
zip:
打包 :zip something.zip something (目录请加 -r 参数)
解包:unzip something.zip
指定路径:-d 参数
tar:
打包:tar -cf something.tar something
解包:tar -xf something.tar
指定路径:-C 参数
作业:创建一个名为 test 的文件,分别用 zip 和 tar 打包成压缩包,再解压到 /home/shiyanlou 目录。
操作命令如下:
mkdir test
touch xixi
zip xixi.zip xixi
tar -cf xixi.tar xixi
unzip xixi.zip -d /boris
tar -xf xixi.tar -C /boris
最终得到的操作过程如下:
到目前为止,实验做到这里,后续会更新。。。。
总结
今天学到了许多,巩固了Linux的许多命令用法以及加深了对很多知识点的理解比如环境变量,Linux中的所有都是文件,对文件如何操作至关重要。我也知道了locate和find的用法,比如要特定找某个文件可以使用find+目录+条件+条件值的组合来进行查找,非常好用,实在忘了就用man吧。
遇到的问题
最恶心的永远是装系统或者装软件,可能出现各种不适配,甚至好几次重装。一桶水一包烟,一个烂系统(软件)装一天。