【Linux】Linux基础
本文最后更新于 387 天前,如有失效请评论区留言。

Linux基础

此篇内容的来源为苯苯-学习地图的Linux基础部分,为本人阅读完后再做整理分享。

Linux基础 编程的起始

我第一次接触的计算机,是在我小二还是小三的时候,我父亲买的个人电脑。犹记得当时,在我不小心按下电脑的电源后,主机的灯光闪烁,风扇渐响,显示屏还出现我看不懂的文字时,以为我那一不小心的误触,把这看上去卖了我也买不起的东西弄坏了的时候,心里时拔凉拔凉的,好半天才缓过来。

而后续对这台计算机的使用,也是借着在父亲出差的时段,从零开始摸索的。入门的事件,果然还是游戏,记得是在暴风影音还是什么播放器上玩类似于索尼克的flash闯关游戏。后续经过班级同学的口耳相传,也接触到了当时很火的4399,7k7k等小游戏网站。在当时,为了能在学校的计算机课上玩游戏,施展了千方百计的手段,包括但不限于通过拔网线断开老师的控制,通过父母淘汰的手机SD卡+读卡器来代替U盘存储游戏的源文件等。

而这样一直持续到了高中,期间我算是第一次拥有了个人计算机,是经由我姐淘汰给我哥,坏了后被我从储藏室掏出,并通过压岁钱的100元送往修理店修好后所得的笔记本,还是XP系统的,大学期间又重装为win7,一直到大三才退役。

说回正题,在这期间,我对计算机的使用,仅仅只是用于娱乐,或者做些课件的ppt之类的,完全没有编程的概念。直到高中的某次计算机课程,在讲完word,excel后,进入VB(Visual Basic)的内容,才第一次接触到编程,第一次了解编程语言。在那时,我就意识到了这与我以往所学的计算机知识是完全不同的东西。以往我所学的内容,不管是我摸索出的计算机的各种娱乐方式,还是在学校课程上学习的word、excel的使用,都仅仅只是对于程序的应用,而VB完全不同,它是在创造程序,虽然当时的我仅仅只能创造求三角形面积、解一元二次方程之类的小程序,但对当时的我而言,却完全颠覆了我对计算机的认知。还记得当时为了去寻求VB能做到什么,特意去百度上面搜索,而回答是,你所能想到的一切

这件事在当时引发了我对编程的兴趣,虽然浅尝即止,但却完全变更了我后续人生的方向,以致于在大学选专业的时候,清一色的选择了计算机相关的专业。不然以我当时的情况,应该也就随意的选填一些我看着感兴趣的专业,比如机械,物理之类的。

之后,就是大学的4年与到现在为止(2024-3-26)的工作第4年。按部就班,由浅入深,课程上学习的语法(C、C++),竞赛学习的算法,为了考研学习的基础、组成与网络(虽然失败了),工作上的工程与项目(Java)等。todo 这些内容我后续会在相应的模块内逐渐补充,现在就暂且一笔带过。

一直以来,都过的浑浑噩噩,虽然有所高光,但也仅仅只是随波逐流、随遇而安。故此,虽然不能说是跌宕起伏,只能说是毫无波澜。虽然会时不时蹦跶一下,但也仅仅是小打小闹。而不知从什么时候起(具体后续我会翻翻日记,并且整理出来),或是出于学习工作的需求,或是来源于小说、动漫的感触,一个思绪出现在我的大脑里,而最终汇聚为一个词语——“个人伟业[^1]”。

类似于不想成为海贼王的忍者不是好死神,每个机甲设计师都想造出他们独有的机甲。而在程序开发这一领域,于我理解,就是创造出凝聚了自身所有才华的东西,它可能没什么用,也不会对世界造成什么影响,在他人看了也只不过是自己自娱自乐写出的玩具而已,但于个人而言,却是足以称得上令自己自豪的伟业。

故此,有了这个念头后,对于“个人伟业”具体表现形式的想法就不断在脑海中冒出来,特别是在睡前,为此还导致我因过于亢奋而无法入眠。这个形式有想过做成一款游戏,开发一个类似spring的java框架,写出一门独特的编程语言,林林总总。但又想想,这些仅仅只是我能力的一个侧面,而无法凝聚我的全部,又结合我一些在生活、学习、工作中遇到的困境,一个很早就接触到的事物出现在了我的视野中——个人博客(blog)

个人博客本身的作用仅仅只是记录与分享,原先我也仅仅只是在CSDN上应教练的要求写过几篇算法题的题解与赛后感,并没真正投入进去。至于现在为什么又出现在我的视野中,也恰恰是因为它记录与分享的作用,虽然我的侧重点更偏向于记录。

我已经历的生活、阅读的小说、看过的番剧、学习的知识、工作上的困难、所写的代码、画的画、偶尔的灵光、或喜或悲的情绪、未来的预期、过去的总结等等,因为感觉脱离(逃避)现实太久的缘故,我迫切需要一个事物能汇聚“我”的概念,用于认知我是谁,我的能力,我的过往,我的未来。

关于搭建博客,可以采用第三方的平台,比如CSDN,Github等,于我而言,个人博客相当于另一个层面上的“我”,故而选择了搭服务器自建。于是又到了技术选型的一步。经过多番比对(纠结),首先服务器是阿里的的云服务器,系统为Ubuntu[^2],博客框架为WordPress,主题为Argon。前因讲了那么多,终于首次扯出来了Linux这个词。而接下来,也就是从现在开始的,学习与搭建博客之旅。

  • [1] 词源来自《都市夜战魔法少男》(现改名为《库洛牌的魔法使》)的最终伟力,为科技测能力者的终极目标,个人能力的集大成者,小说中的表现形式是机甲。
  • [2] Linux的一个发行版本,其他的还有CentOS、RedHat等。

Linux基础 Linux简介

百度百科-Linux

wiki-Linux

过多或者专业的介绍我就不多说了,当然我说不上什么。想详细了解Linux,大家可以看专门的百科,或者买本介绍Linux的书或课程看,当然会看的很累。而这里,我就只是概述下我眼中的Linux是什么,已经为什么用Linux。

说实话对于Linux,我个人是完全没什么看法的,所了解的内容也只是浮于表面的几句Linux指令,就算让我说Linux的特点或Linux与Windows的不同,也只能人云亦云的说上那么几句,就算写在这里向你们复述了,也仅仅只是空壳一般的话语,不如不写。

而我为什么选择Linux,也仅仅只是自古以来,有必要去学习(想去学习)而已,除此之外没什么特别的理由。毕竟身为一个小白,你不能指望我在深入学习了Linux的源码,了解了Linux的特征,辨别出了与Windows的差异之后,再经过深思熟路,多方请教,仔细评审,最终得出结论,使用Linux操作系统。他人的介绍、评论所能做的只是影响你的决策,但最终做出决策的是你自己,如果陷入了因外部影响而不断摇摆,始终不能决策,却又因为不能决策反而需要进一步的依靠外部信息去加重决策权重的怪圈,完全是本末倒置了。

自古以来是指程序员必须会Linux,服务器更推荐Linux等对于Linux的主流评价。而就在这些评价影响的内心的选择下,最终得出的一个简单结论,想去学习,仅此而已。

Linux基础 学习Linux前置准备

Linux有很多发行的版本,比如流行的UbuntuCentOSRedHat等,可以理解为Linux只是操作系统的内核,而Ubuntu等Linux的发行版本都是基于Linux内核进行二次开发的能投入使用的操作系统。如果只是学习Linux的基础,选择哪个发行版本都行,我这里就选择了Ubuntu。

发行版本选择好后,就该选择载体了,云服务器、物理主机、虚拟机都行。我选择的是阿里的云服务器,购买完创建实例一气呵成,不需要考虑太多的东西。

前期的话,这样就够了,另外还有一个必不可少的,一颗想学习Linux的心。

Linux基础 Linux命令

Linux命令大全 | 菜鸟教程

Linux基础 运行人生的第一个Linux命令

命令速记

# 目录操作
cd      # 切换目录
pwd     # 输出当前目录的绝对路径
ls      # 输出当前目录的文件和目录

# 文件操作
mkdir   # 创建目录
mv      # 改名/移动文件和目录
cp      # 复制文件和目录
rm      # 删除文件和目录

shell 界面说明

MobaXterm_Personal_24.0_kuMtQ4z9z6

如上是你首次进入shell界面的内容,可以分为三部分,既 “用户名@主机名:当前路径# ”

  • root:为你当前登录的用户名

  • iZbp1cmlu7iso87i6898yxZ:为你当前的主机名

  • ~:为你当前所在的目录,一般~字符用于表示当前用户的home目录,算是一个语法糖的东西

cd

change directory,用于切换目录,可以是相对路径,也可以是绝对路径

cd ~        # 进入当前用户的home目录(绝对路径)
cd /        # 进入系统更目录(绝对路径)
cd ..       # 进入上级目录(相对路径)
cd /home    # 进入根目录下的home目录(绝对路径)
cd home     # 进入当前目录下的home目录(相对路径)

pwd

print work directory,用于输出当前目录的绝对路径

MobaXterm_Personal_24.0_J4G78CstWa

ls

list directory contents,用于输出当前目录下的文件和目录

ls          # 输出当前目录下的文件和目录
ls -l       # 以长格式输出当前目录中的文件和目录
ls -a       # 输出当前目录下的文件和目录,包含隐藏文件和目录
ls -l -a    # 组合使用 -l、-a,也可以直接-la

使用ls -a输出结果,其中以.开头的就是隐藏的文件和目录,而最开始的.表示当前目录,..表示上级目录。

另外,白色字体的表示对象是文件,蓝色字体的表示对象是目录,颜色可能会根据不同的shell工具有所不同

MobaXterm_Personal_24.0_C6IkdHwEwr

使用ls -l -a输出结果,具体为:

例:drwx------ 3 root root 4096 Nov 13 14:29 snap

  • drwx------:文件权限。第一位表示文件类型,比如d表示目录,-表示文件,rwx------表示操作权限

  • 3:不懂

  • root root:文件所有者、文件所在用户组

  • 4096:文件大小,单位Byte

  • Nov 13 14:29:文件创建/修改时间

  • snap:文明或目录名

MobaXterm_Personal_24.0_UyDIx0FW2k

mkdir

make directory,用于创建目录

mkdir test  # 在当前目录下创建一个名为test的目录

cp

copy file,用于复制文件或目录

cp -r test test2    # 将当前目录下的test对象复制为新的test2对象,如果是目录,需要-r操作

mv

move file,用来改名/移动文件和目录

mv test test3           # 将test对象改名为test3
mv test2 test3/test     # 将test2对象移动到test3下,并重命名为test

rm

remove,用于删除文件或者目录

rm -r test3     # 将test3对象删除,如果是目录,需要-r操作

因为Linux默认没有内置回收站概念,所以除了特殊手段,通过rm删除的内容将无法恢复。

其他

# shell界面清屏,或也可以键盘上按`Ctrl+L`
clear
# 在环境变量`$PATH`设置的目录里查找文件
which

apt

# 修改apt源
sudo vim /etc/apt/sources.list # 将其中`http://cn.archive.ubuntu.com`等打不开的全部替换成阿里源`http://mirrors.aliyun.com`
# 更新apt软件包信息
sudo apt update
# 更新所有包
sudo apt upgrade

小结

暂时就这些了,因为还是新手,所以仅仅只是将命令摘抄过来,并简单实践了下,并没有深入的学习过。但仅这些,对于现阶段我日常的Linux使用已经足够了,至于后续可能会遇到的特殊需求,再说╮(︶▽︶)╭。

Vim

todo 感觉这个玩意得需要深入学下,已经有点感兴趣了,特指看到了一个视频,通过指令批量操作一个操作

查找

:/查找的内容     -- 查找出来后可按`n`下一个

替换

:%s/查找的内容/替换的内容/g       -- 这是全局替换的指令,如果内容中含有`/`,用转义字符`\/`代替

Shell 编程

todo 同上,+1,另外,久违的找到了当初学习新东西的兴奋

Linux 安全

(~ ̄▽ ̄)~ Linux基础 个人VPS安全

测试环境

uname -a
# Linux iZbp1cmlu7iso87i6898yxZ 5.15.0-88-generic #98-Ubuntu SMP Mon Oct 2 15:18:56 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

安全措施

更新软件

sudo apt-get update && sudo apt-get upgrade

使用非root用户

# 创建新用户组
sudo groupadd -g 2233 test
# 创建一个新用户
sudo useradd \
    -m -d /home/test_user \ # -m:创建用户的主目录 -d:指定用户主目录
    -s /bin/bash \          # -s:指定用户的默认shell
    -g test \               # -g:指定用户的用户组
    -G sudo \               # -G:指定用户的附加组(虽然不知道什么作用)
    test_user               # 用户名
# 设置用户密码
sudo passwd test_user       # 重复输入两次
                            # 输出“passwd: password updated successfully”设置成功

其他操作

# 删除用户
sudo userdel test_user
# 删除用户组(需要下属的所以用户先删除)
sudo groupdel test
# 切换用户
su test_user
# 查看所有的用户组
sudo cat /etc/group
# 查看所有的用户
sudo less /etc/passwd
# 查看当前用户信息
id

禁用root用户登录

sudo vim /etc/ssh/sshd_config

修改PermitRootLoginno

如果不想禁用root,也可以限制root用户只能通过证书登录,就修改PermitRootLoginwithout-password

使用RSA证书登录

todo 后续补充吧,暂时不想写了

安装UFW防火墙

https://help.ubuntu.com/community/UFW

观察一下自己有没有安装ufw

which ufw
# /usr/sbin/ufw

如果没有(没输出),就安装一个

sudo apt-get install ufw

之后就是配置相关的指令

# 查看防火墙状态
show ufw status
# 禁止所有进站流量
sudo ufw default deny incoming
# 允许所有出站流量
sudo ufw default allow outgoing
# 开放端口,可根据自己的情况而定,一般开发80、443
sudo ufw allow 80/tcp comment 'http'
sudo ufw allow 443/tcp comment 'https'
# 启动ufw
sudo ufw enable

当然端口的进站和出站限制,也可以通过云服务商的安全组来配置

更改默认的ssh端口

sudo vim /etc/ssh/sshd_config

ssh的默认端口是22,通过修改Port为你开放的端口即可

禁ping

sudo vim /etc/ufw/before.rules

ACCEPT改为DROP

# -A ufw-before-forward -p icmp --icmp-type echo-request -j ACCEPT
-A ufw-before-forward -p icmp --icmp-type echo-request -j DROP

Fail2ban防扫描和暴力破解

# 安装fail2ban
sudo apt update && sudo apt install fail2ban -y
# 查看状态
sudo fail2ban-client status
# 启动
sudo systemctl start fail2ban
# 配置sshd方案(建议)
sudo vim /etc/fail2ban/jail/conf

新添加的maxretry = 5表示5次无效登录尝试之后封禁IP地址,bantime = 3600表示封禁时间为3600秒

MobaXterm_Personal_24.0_46qlltkzC4

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇