简单说两句
1.不是想炒冷饭,只是这东西不常用就太容易忘了。(害怕被人发现对Linux一窍不通)
2.最近想做很多事情,但总是在实践的过程中发现很多知识很匮乏,不得已延误许久,边做边学。
实用命令
用户和群组
useradd username
创建用户名为username的用户
passwd username
修改username的密码 命令执行后开始修改密码 只允许root执行
userdel username
删除用户名为username的用户
passwd
修改root用户密码的
groupadd group_name
创建一个新用户组
group
查看当前用户所在的用户组
cat /etc/group
查看所有用户组
id
也可以查看当前用户的用户组
chage -E 2021-12-31 username
设置username用户的口令失效期限
useradd -c "Name Surname" -g admin -d /home/username -s /bin/bash username
-c 是给添加备注(备注文字会保存在passwd的备注栏位中) -g 是指定用户组 -s 是指定用户登录后的shell
useradd -g root username
为添加的用户指定相应的用户组 即使添加到了root用户组 也还是个普通用户权限 想拥有root权限可参考这篇文章:https://blog.csdn.net/qdujunjie/article/details/44461593
adduser username
这个命令和上面那个useradd是有区别的在Ubuntu中,而 centos中是无区别的直接新建用户然后设置密码 创建对应的文件夹。但是在Ubuntu中useradd只会创建个用户 不会有相对应的文件夹 adduser的话这一套都会给你搞完。用户与群组就先到这里,日后有需要再添加。
系统信息
这一块可以用在内网信息收集方面,写一下常用的,不是很全。命令要记,命令的结果也要能看懂。
arch
显示机器的处理器架构(x86_64,x64,AMD64基本上是同一个东西)
uname -m
显示机器的处理器架构 和上面一个样 上当了
uname -r
显示正在使用的内核版本 这个一般根据内核版本找提权的方法 常用脏牛漏洞
lsb_release -a
查看系统发行版本 显示lsb所有信息包含 一些发行版本的信息吧
cat /proc/version
显示内核的版本
cat /proc/cpuinfo
显示CPU info的信息
data
显示系统日期
date -s 完整日期时间
(YYYY-MM-DD hh:mm[:ss])修改日期、时间 手动修改存在误差 实用需谨慎 手勿抖
date 041217002007.00
设置日期和时间 - 月日时分年.秒 又一个新的修改时间命令
关机(系统的关机、重启以及登出)
shutdown -h now
关闭系统1
init 0
关闭系统2
telinit 0
关闭系统3
shutdown -h hours:minutes
一张图你就懂了
shutdown -c
取消按预定时间关闭系统
shutdown -r now
重启
reboot
重启
logot
注销
crontab -l
查看定时任务
crontab -e
写定时任务
文件和目录
cd /home 切换到home目
cd .. 返回上一级目录
cd ../.. 返回上两级目录
cd ~username 进入个人的主目录 确实 用户名要打对 而且要有该用户的文件夹
cd - 返回上次工作路径
pwd 显示工作路径
ls 查看目录中的文件
ls -F 查看目录中的文件
ls -l 显示文件和目录的详细信息
ls -lh 查看文件大小
ls -a 显示隐藏文件
ls *[0-9]* 显示包含数字的文件名和目录名
tree 显示文件和目录由根目录开始的树形结构
mkdir dir1 创建一个叫做dir1的目录
mkdir dir1 dir2 同时创建两个文件夹
rm -f 删除文件
rm -rf 删除文件夹
mv dir1 new_dir1 重命名/移动一个目录
cp dir /xx/xx/xx 复制dir文件到某个路径下
cp -r dir /xx/xx/xx 复制整个文件夹到某路径下(-a也可以)
文件搜索
find / -name file1 从根目录开始搜索文件和目录
find / -user user1 搜索属于用户‘user1'的文件和目录
find /home/user1 -name \*.bin 在目录'/home/user1'中搜索带有'.bin'结尾的文件
find /usr/bin -type f -atime +100 搜索在这个目录下一百天内未被使用过的执行文件(+与数字之间没空格)
find /usr/bin -type f -mtime -10 搜索在当前目录下十天内被创建或者被修改过的文件
find / -name \*.rpm -exec chmod 755 '{}' \; 你猜猜是啥 还真是的 从根目录下找到以.rmp结尾的文件并将其定义755的权限
find / -xdev -name \*.rpm 搜索以.rpm结尾的文件 忽略光驱捷盘等可移动设备
locate \*.ps 寻找以'.ps'结尾的文件
find / -name \*.txt
where is halt 显示一个二进制文件、源码或者man的位置
which halt 显示一个二进制文件或者可执行文件的完整路径
上面两个不懂 where命令没装 which命令不知道是啥意思 halt是啥啊 好吧 halt是个命令 单独一个halt就是关闭系统的命令
挂载一个文件系统
mount /dev/hda2 /mnt/hda2 挂载一个叫做hda2的盘 确定目录 ‘ /mnt/dat2' 已经存在
umount /dev/hda2 卸载一个叫做hda2的盘 先从挂载点'/mnt/hda2'退出
fuser -km /mnt/hda2 当设备繁忙时强制卸载(好命令,有强制的都是好命令)
这方面的命令感觉用的不多平常 写这个笔记的目的是为了记录一些日常使用的和应急处理以及渗透过程中用到的命令。
mount -o loop file.iso /mnt/cdrom 挂载一个文件或ISO镜像文件
磁盘空间
df -h 显示已经挂载的分区列表
ls -lSr |more 以尺寸大小排列文件和目录
du -sh dir1 估算目录dir1已经使用的磁盘空间
文件的权限 -使用 “+”设置权限 使用’-‘用于取消
ls -lh 显示权限
chattr +i /xx/xx/xx.xx 将某目录下的某文件进行加锁防止被修改 适用于系统关键文件或者后门 去掉这个属性就用 “-”
lsattr /xx/xx/xx.xx 可以用lsattr命令查看文件的加锁属性 会有个i
chmod xxx xxx.xxx 一般777 可读可写可执行
chattr +a file1 只允许以追加方式读写文件
chattr +c file1 允许这个文件能被内核自动压缩/解压
chattr +d file1 在进行文件系统备份时,dump程序将忽略这个文件
chattr +i file1 设置成不可变的文件,不能被删除、修改、重命名或者链接
chattr +s file1 允许一个文件被安全地删除
chattr +S file1 一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘
chattr +u file1 若文件被删除,系统会允许你在以后恢复这个被删除的文件
lsattr 显示特殊的属性
打包和压缩
bunzip2 file1.bz2 解压一个叫做'file1.bz2'的文件
bzip2 file1 压缩一个叫做'file1'的文件
gunzip file1.gz 解压一个叫做'file1.gz'的文件
gzip file1压缩一个叫做'file1'的文件
gzip -9 file1 最大程度压缩一个叫做’file1‘的文件
rar a file1.rar test_file 使用rar将test_file压缩成file1.rar(就是压缩后顺便命名)
rar a file1.rar file1 file2 dir1 给这三个都压缩成一个file1.rar(也是压缩后顺便重命名一下,试验一下很好理解)
rar x file1.rar 解压rar压缩包
unrar x file1.rar 解压压缩包
tar -cvf file_test.tar file1 创建一个非压缩的tarball(压缩,命名,但是没有完全压缩?)
tar -cvf file_test.tar file1 file2 dir (和上面是一样的 聚合压缩重命名)
tar -xvf file_test.tar 显示一个包中的内容 好命令 显示文件 显示不了内容
tar -xvf file_test.tar 释放一个包(没看明白 运行完了显示解压后的文件名)
tar -xvf file_test.tar -C /tmp 将压缩包释放到/tmp目录下
tar -cvfj file_test.tar.bz2 dir1 将dir1压缩成bzip2的格式压缩包
tar -xvfj file_test.tar.bz2 解压一个bzip2的压缩包
tar -zcvf file_test.tar.gz dir1 创建一个zgip格式的压缩包
tar -xzvf file_test.tar.gz 解压一个zip格式的压缩包
zip file1.zip file1 创建一个zip格式的压缩包
zip -r file1.zip file1 file2 dir1 将几个文件和目录同时压缩成一个压缩包。
unzip file1.zip
学习一下下载命令
yum install package_name 下载并安装一个rpm包
yum update package_name.rpm 更新当前系统中所有安装的rpm包
yum update package_name 更新一个rpm包
yum remove package_name 删除一个rpm包
yum list 列出当前系统中安装的所有包
另一个就是wget命令 稍微提一下
这是一个linux下载文件的工具,需要安装,一般直接: yum install wget 就行了 如果在centos环境下像这样下载成功了但是在使用的时候还是提示找不到这个命令
的话就换成源码安装就可以了 就是将wget的源码上传上去按如下步骤安装:源码下载[https://mirrors.ustc.edu.cn/gnu/wget/](https://mirrors.ustc.edu.cn/gnu/wget/)
tar xf wget*
cd wget*
./configure --with-ssl=openssl
make
make install
使用方法:wget 参数 url地址 也可以直接跟下载地址 就能下载了 无需用户一直参与(eg:wget http://www.minjieren.com/wordpress-3.1-zh_CN.zip)
如果存在命令执行可以直接用这个命令远程下载木马反弹shell 如果直接反弹不成功的话我是说 也见过写脚本反弹的 方式多种多样好好学习
学点更新命令(ATP软件工具)
apt-get install package_name 安装/更新一个deb包
apt-get update 升级列表中的软件包
apt-get upgrade 升级所有已安装的软件
apt-get clean 从下载的软件包中清理缓存
查看文件内容
cat file1 从第一个字节开始正向查看文件
tac file1 从最后一行开始反向查看一个文件的内容
more file1 查看一个长文件的内容
head -2 file1 查看一个文件的前两行
tail -2 file1 查看一个文件的最后两行
文本处理(太多了记不住,需要的时候过来看看就行了)
cat file1 file2 ... | command <> file1_in.txt_or_file1_out.txt general syntax for text manipulation using PIPE, STDIN and STDOUT
cat file1 | command( sed, grep, awk, grep, etc...) > result.txt 合并一个文件的详细说明文本,并将简介写入一个新文件中
cat file1 | command( sed, grep, awk, grep, etc...) >> result.txt 合并一个文件的详细说明文本,并将简介写入一个已有的文件中
grep Aug /var/log/messages 在文件 '/var/log/messages'中查找关键词"Aug"
grep ^Aug /var/log/messages 在文件 '/var/log/messages'中查找以"Aug"开始的词汇
grep [0-9] /var/log/messages 选择 '/var/log/messages' 文件中所有包含数字的行
grep Aug -R /var/log/* 在目录 '/var/log' 及随后的目录中搜索字符串"Aug"
sed 's/stringa1/stringa2/g' example.txt 将example.txt文件中的 "string1" 替换成 "string2"
sed '/^$/d' example.txt 从example.txt文件中删除所有空白行
sed '/ *#/d; /^$/d' example.txt 从example.txt文件中删除所有注释和空白行
echo 'esempio' | tr '[:lower:]' '[:upper:]' 合并上下单元格内容
sed -e '1d' result.txt 从文件example.txt 中排除第一行
sed -n '/stringa1/p' 查看只包含词汇 "string1"的行
sed -e 's/ *$//' example.txt 删除每一行最后的空白字符
sed -e 's/stringa1//g' example.txt 从文档中只删除词汇 "string1" 并保留剩余全部
sed -n '1,5p;5q' example.txt 查看从第一行到第5行内容
sed -n '5p;5q' example.txt 查看第5行
sed -e 's/00*/0/g' example.txt 用单个零替换多个零
cat -n file1 标示文件的行数
cat example.txt | awk 'NR%2==1' 删除example.txt文件中的所有偶数行
echo a b c | awk '{print $1}' 查看一行第一栏
echo a b c | awk '{print $1,$3}' 查看一行的第一和第三栏
paste file1 file2 合并两个文件或两栏的内容
paste -d '+' file1 file2 合并两个文件或两栏的内容,中间用"+"区分
sort file1 file2 排序两个文件的内容
sort file1 file2 | uniq 取出两个文件的并集(重复的行只保留一份)
sort file1 file2 | uniq -u 删除交集,留下其他的行
sort file1 file2 | uniq -d 取出两个文件的交集(只留下同时存在于两个文件中的文件)
comm -1 file1 file2 比较两个文件的内容只删除 'file1' 所包含的内容
comm -2 file1 file2 比较两个文件的内容只删除 'file2' 所包含的内容
comm -3 file1 file2 比较两个文件的内容只删除两个文件共有的部分
网络
ifconfig eth0 显示一个以太网卡的配置
ifup eth0 启用一个'eth0'网络设备
netstat -an 查看端口开放情况
netstat -ano |grep 445 查看445端口情况
lsof -i:8080 查看8080端口被谁占用了
netstat -tunlp 查看tcp和udp端口被占用情况(解决端口被占用的问题 然后kill掉就行了)
让我来找一下netstat的详细使用命令讲解:
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。
参数可互相组合,这下明白了吧
PS:命令难记,重在使用。如果记不住就多看多用。
文中大部分摘自该文:https://www.cnblogs.com/fnlingnzb-learner/p/5831284.html
网友评论