Linux

查系统版本号

查内核版本: uname -a

CentOS

RedHat系

# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core)

Ubuntu

Debian系

~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.7 LTS
Release:    16.04
Codename:   xenial

Kali

Debian系

└─# lsb_release -a
No LSB modules are available.
Distributor ID: Kali
Description:    Kali GNU/Linux Rolling
Release:    2021.2
Codename:   kali-rolling

查询系统CPU核心数

[root@localhost vm]# LC_ALL=C lscpu| grep Virtualization
Virtualization:        VT-x

Win10文件md5校验

certutil -hashfile .\CentOS-7-x86_64-Minimal-1810.iso MD5

MD5 的 .\CentOS-7-x86_64-Minimal-1810.iso 哈希:
bd43d41e01c2a46b3cb23eb9139dce4b
CertUtil: -hashfile 命令成功完成。

服务部署

CentOS 7.6安装FTP服务器

  1. 安装包

  2. setup.sh的内容如下(为匿名用户登录FTP的配置脚本):

# vsftpd
rpm -ih vsftpd-3.0.2-29.el7_9.x86_64.rpm
vsftpd -v

install -d /opt/ftp/pub
chmod -R 777 /opt/ftp/pub

sed -i '1i\anon_root=/opt/ftp' /etc/vsftpd/vsftpd.conf
sed -i '2i\anon_upload_enable=YES' /etc/vsftpd/vsftpd.conf
sed -i '3i\anon_mkdir_write_enable=YES' /etc/vsftpd/vsftpd.conf
sed -i '4i\anon_other_write_enable=YES' /etc/vsftpd/vsftpd.conf
sed -i '5i\anon_umask=022' /etc/vsftpd/vsftpd.conf

systemctl enable vsftpd
systemctl start vsftpd
systemctl status vsftpd
ss -ntl

# firewall
firewall-cmd --permanent --zone=public --add-service=ftp
firewall-cmd --reload
firewall-cmd --list-all

# selinux
sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
getenforce
  1. 执行安装方式
tar -zxvf vsftpd.tgz
cd vsftpd
sh setup.sh

更多配置参考

给部署web服务增加证书

# 生成根密钥,访问密码123456 (写abcdef也行,随意)
openssl genrsa -des3 -out root.key 2048

# 创建根证书申请文件root.csr
openssl req -new -key root.key -out root.csr

# 创建根证书root.crt
openssl x509 -req -days 3650 -sha1 -extensions v3_ca -signkey root.key -in root.csr -out root.crt

-----------------------------------------------------------------
# 创建服务器证书密钥dtd.key
openssl genrsa -out dtd.key 2048

# 创建服务器证书的申请文件dtd.csr
openssl req -new -key dtd.key -out dtd.csr

# 创建服务器证书dtd.crt
openssl x509 -req -days 3650 -sha1 -extensions v3_req -CA root.crt -CAkey root.key -CAserial root.srl -CAcreateserial -in dtd.csr -out dtd.crt


=========================
self use
# 创建服务器证书密钥 tmp.key
openssl genrsa -out tmp.key 2048

# 创建服务器证书的申请文件tmp.csr
openssl req -new -key tmp.key -out tmp.csr

# 创建服务器证书tmp.crt
openssl x509 -req -days 3650 -sha1 -extensions v3_req -CA root.crt -CAkey root.key -CAserial root.srl -CAcreateserial -in tmp.csr -out tmp.crt

crontab执行设置参考

常规使用:

编辑当前用户的crontab
crontab -e

写入(举例 从0开始每3小时执行一次):
0 */3 * * * nohup /usr/bin/python3 /opt/kbdtd_log_proxy/ext_clear_ftp_log.py >> /opt/kbdtd_log_proxy/nohup_clear_ftp_log.out 2>&1 &
保存后退出

检查配置:
crontab -l

等待脚本按照定时开始执行

每隔多少分钟,每隔多少小时,每天/每周/每月/每年的crontab设置总结

每五分钟执行      */5 * * * *
每五小时执行      0 */5 * * *
每天执行          0 0 * * *
每周执行          0 0 * * 0
每月执行          0 0 1 * *
每年执行          0 0 1 1 *

常见操作问题

-bash: ./setup.sh: Permission denied

在linux下用./执行sh文件时提示下面信息: -bash: ./xx.sh: Permission denied

解决方法:chmod 777 xx.sh or chmod u+x *.sh

Linux中的 chmod 755 和 chmod +777 各是什么意思

755 代表用户对该文件拥有读,写,执行的权限,同组其他人员拥有执行和读的权限,没有写的权限,其他用户的权限和同组人员权限一样。

777 代表user,group,others都有读写和可执行权限。

关于rwx的具体介绍

在linux终端先输入ls -al,可以看到关于文件权限的表示:

-rwx-r--r-- (一共10个参数)
第一个参数代表文件类型跟chmod无关。
2-4参数:属于user
5-7参数:属于group
8-10参数:属于others
接下来就简单了:r==>可读 w==>可写 x==>可执行
               r=4      w=2      x=1
所以755代表 rwxr-xr-x

第一个参数代表文件类型:

普通文件的文件权限第一个字符为“-”

目录文件的文件权限第一个字符为“d”

字符设备文件的文件权限第一个字符为“c”;

块设备文件的文件权限第一个字符为“b”

符号链接文件的文件权限第一个字符为“s”

/bin与/sbin的区别

  • /bin: 存放所有用户皆可用的系统程序,即普通的基本命令,如:touch ls等。
  • /sbin: 存放超级用户才能使用的系统程序,即基本的系统命令,如:sreboot等。

/usr/bin与/usr/sbin的区别

  • /usr/bin: 存放所有用户都可用的应用程序,一般是已安装软件的运行脚本,如:free、make、wget等。
  • /usr/sbin: 存放超级用户才能使用的应用程序 ,一般是与服务器软件程序命令相关的,如:dhcpd、 httpd、samba等。

/usr/local/bin与/usr/local/sbin的区别

  • /usr/local/bin: 存放所有用户都可用的第三方软件程序,如mysql
  • /usr/local/sbin: 存放超级用户才能使用的第三方软件,如nginx

网卡相关设置

在Linux或CentOS中,可以通过如下命令获取新的网卡uuid信息:

[root@ligle2 ~]# uuidgen ensXXX    # ensXXX 可通过 ip a 获取
07d07031-eb0f-4691-8606-befb46645222

grep命令

可以和ls、cat等命令配合管道符一起使用。

使用grep查找某目录下包含关键字内容的文件

grep -r "keyword" dir_path

e.g. 查找当前目录下包含关键字 "JBoss Bootstrap Script" 的文件

grep -r "JBoss Bootstrap Script" ./

grep_r

排除某关键词的搜索结果

grep -v "keyword"

e.g. 显示当前目录下除.sh文件外的所有文件

ls -al | grep -v ".sh"

grep组合使用

"./configure --prefix"命令

源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install)

configure是一个可执行脚本,它有很多选项,在待安装的源码路径下使用命令./configure –help输出详细的选项列表。

其中--prefix选项是配置安装的路径。如果不配置 --prefix 选项,安装后:

可执行文件默认放在/usr /local/bin,

库文件默认放在/usr/local/lib,

配置文件默认放在/usr/local/etc,

其它的资源文件放在/usr/local/share,

比较凌乱。

如果配置--prefix,如:

./configure --prefix=/usr/local/test

可以把所有资源文件放在/usr/local/test的路径中,不会杂乱。

--prefix选项的另一个好处是卸载软件或移植软件。

当某个安装的软件不再需要时,只须简单的删除该安装目录,就可以把软件卸载得干干净净;移植软件只需拷贝整个目录到另外一个机器即可(相同的操作系统)。

当然要卸载程序,也可以在原来的make目录下用一次make uninstall,但前提是make文件指定过uninstall。

scp命令

有时图形化工具不好使用时,用scp来传输文件其实相当方便

1.把 本地文件 上传到 远端服务器目录下

scp local_file remote_username@remote_ip:remote_folder 

e.g.
scp test.txt root@10.0.0.1:/tmp/test/

2.把 远端服务文件 下载到 本地目录

scp -r remote_username@remote_ip:remote_folder  /local_folder_tmp/

e.g.
scp -r mfc@10.0.4.149:/tmp/test/ /tmp/
完成后本地的机器的 /tmp/目录下会有下载的 /test/ 目录

tar命令

# 压缩

tar打包压缩目录:

tar -zcf xxx.tar.gz dir_name

e.g.:

tar -zcf ic_web1_setup.tar.gz ic_web1_setup

# 打包当前目录下所有文件
tar -zcf tools.tar.gz *

# z调用gzip,tar本身是打包,z才是压缩
# c创建新文件,v显示过程,f输出文件
# C切换工作目录,相当于cd
# p保持权限,--remove-files删除源文件
# f指定包的文件名
# m 不用时间戳检查,而是使用新的系统时间进行解包,解包后的文件时间戳将是新的系统时间而不是原文件的时间戳了
# -m, –touch, –modification-time【don’t extract file modified time】(针对问题: 在A机器上用tar压缩的文件,在B机器上进行解包的时候,如果两个机器的时间不一致,如B机器的时间落后A机器的时间,这时就会出现time stamp XXX in the future的问题)

# 解压.tar文件

# tar -zcv -f 压缩文件名.tar.gz 压缩目录
tar -C /home -zcpf test.tar.gz test
tar -C /home -zcpf test.tar.gz ./
tar -C /home/nccn -zcpf mnu_log_2019.tgz mnu_log_2019
tar -C /home/nccn -zcpf mimic_h3c_2019.tgz mimic_h3c_2019
tar -C /root -zcpf pf_ring.tar.gz ./PF_RING
tar -C /opt -zcpf libdaq.tar.gz ./libdaq
tar -C /opt/vm -zcpf snort.tar.gz ./snort.disk.bak
tar -C /backup/setup -zcpf qemu.tar.gz qemu
tar -zcpf snort.tar.gz ./snort.disk
tar -tf snort.tar.gz


## 打包 指定 /opt/crm/tools/ 文件夹下的指定get_plm_sync_ids.py文件 为压缩包 tools.tar.gz
tar -C /opt/crm/tools/ -zcpf tools.tar.gz get_plm_sync_ids.py

# 复制硬连接用-h参数
tar -zcphf test.tar.gz test


# 如果指定源目录使用多层结构,则压缩包也会包含相同多层结构
# test.tar.gz中包含home和test两层目录
tar -C /home -zcpf test.tar.gz /home/test


# 解压
# tar -zxvf 压缩文件名.tar.gz -C 解压目录
tar -zxvf setup.tar.gz -C /mnt/usb

# 注意,必须是tgz或tar.gz,否则压缩包内没有文件夹结构,tar是打包,gz是压缩
tar -zcvf kafka_2.11-1.1.1.tgz kafka_2.11-1.1.1
tar -zcvf backup.tgz log_backup

# 解压
tar -zxvf kafka_2.11-1.1.1.tgz
tar -zxvf mnu.tgz

# 解压文件
tar -zxvf mimic_h3c_2019.tgz
tar -zxvf kbdtd_log_proxy.tgz

# 查看压缩包内容
tar -tf xxx.tgz



# 口令压缩
tar -zcvf - file | openssl des3 -salt -k password -out /path/file.tar.gz
tar -zcvf - usb | openssl des3 -salt -k 123456 -out usb.tar.gz
tar -zcvf - client | openssl des3 -salt -k 123456 -out 123456
tar -C /home -zcvf - setup | openssl des3 -salt -k 123456 -out /home/setup.tar.gz


# 口令解压
openssl des3 -d -k password -salt -in /path/file.tar.gz | tar zxzf - 
openssl des3 -d -k 123456 -salt -in usb.tar.gz | tar zxvf -
openssl des3 -d -k 123456 -salt -in /tmp/setup.tar.gz | tar zxvf - -C /tmp


# 补充:zip包的解压
zip all.zip *.jpg  这条命令是将所有.jpg的文件压缩成一个zip包
unzip all.zip     这条命令是将all.zip中的所有文件解压出来

zip -r file1.zip file1 file2 dir1 将几个文件和目录同时压缩成一个zip格式的压缩包
-r:递归处理,将指定目录下的所有文件和子目录一并处理;
-v:显示指令执行过程或显示版本信息;

tar.zst文件格式解压

下载zsh折腾win10下的git bash的时候遇到这个格式的文件。

扩展名.zst表示存档由zstd压缩。
tar命令有一个选项-I( -  use-compress-program)来指定压缩/解压缩命令。
可以按照如下命令进行解压:
$ tar -I zstd -xvf xxxx.tar.zst

但是在执行tar -I zstd -xvf xxxx.tar.zst过程中遇到了如下问题:
tar (child): zstd: Cannot exec: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now

出现了这个是因为没有安装zstd包,需要手动安装这个安装包来解压zst
ubuntu 系统可以直接通过下面命令进行安装
$ sudo apt install zstd

然后重新执行
$ tar -I zstd -xvf xxxx.tar.zst
即可解压文件

pip下载相关whl包

进入到完整python依赖环境

mkdir -p /tmp/whl
cd /tmp/whl
pip3 freeze > req.txt
pip3 download -r req.txt  
or 
pip3 download -d /tmp/whl -r req.txt
ls -l /tmp/whl

这样相关的离线pip安装包都会存到/tmp/whl文件夹下

安装离线环境依赖包

pip install --no-index  -f /tmp/whl -r req.txt

修改sshd服务默认配置

sshd服务默认开启端口为22,如果直接用22端口,网络上很多主机不停的扫描和尝试远程登录(可以查看#cat /var/log/secure)。

CentOS  /  Ubuntu

修改ssh配置
# vim /etc/ssh/sshd_config

常识问题

使用curl访问https

curl -k --tlsv1 "https://aaa.test.com/abc/

Linux的/usr目录的全称

usr被称为是Unix System Resource,即Unix系统资源的缩写。/usr 是系统核心所在,包含了所有的共享文件。 它是 unix 系统中最重要的目录之一,涵盖了二进制文件,各种文档,各种头文件,还有各种库文件;还有诸多程序,例如 ftp,telnet 等等。

拓展资料

usr是user的缩写,是曾经的HOME目录,然而现在已经被/home取代了,现在usr被称为是Unix System Resource,即Unix系统资源的缩写。

/usr 是系统核心所在,包含了所有的共享文件。它是 unix 系统中最重要的目录之一,涵盖了二进制文件,各种文档,各种头文件,还有各种库文件;还有诸多程序,例如 ftp,telnet 等等。

曾经的 /usr 还是用户的家目录,存放着各种用户文件 —— 现在已经被 /home 取代了(例如 /usr/someone 已经改为

/home/someone)。现代的 /usr 只专门存放各种程序和数据,用户目录已经转移。虽然 /usr

名称未改,不过其含义已经从“用户目录”变成了“unix 系统资源”目录。值得注意的是,在一些 unix 系统上,仍然把 /usr/someone当做用户家目录,如 Minix

rc.local的作用

在CentOS7中,实现开机启动程序主要有两种方法:

1)把要启动的程序配置成自定义的系统服务

2)在/etc/rc.local脚本文件中编写启动程序的脚本(注:这是一个软链接)

CentOS 8 dnf包管理

查看最小化安装软件包(但是记得要是初始安装后的镜像)

dnf list --all > list.txt

导出已安装的列表

dnf list installed --all > dnf_install_list.txt

e.g.:

cd /tmp
dnf list installed --all > dnf_install_list.txt

已安装包列表

dnf list installed

or

dnf list available

查找与安装软件包

dnf search httpd
安装httpd包命令:


dnf install httpd
重装httpd:


dnf reinstall httpd
某些情况下,你需要下载软件包而不是安装它。

你用下列命令下载指定包:
dnf download httpd

你能用命令查看http包的详细信息:
dnf info httpd

ref: https://www.cnblogs.com/mouseleo/p/13945336.html