Linux文件属性与权限

更改文件所有者

1
2
#更改文件所有者
chown admin 999

命令图解:

1658838950191

改变文件所属用户组

1
2
#改变文件所属用户组
chgrp admin 999

命令图解:

1658839096742

更改文件读写权限

1
2
3
4
5
6
#用数字更改权限(将三位二进制转换为十进制,三位二进制依次对应读,写,执行;1为有权限,0为无权限)
chmod 777 999
#用字母更改权限
chmod u=rw,g=r,o=x 999
#用字母添加权限
chmod g+w,o+r 999

命令图解:

1658839466904

1658839587499

1658839723856

设置文件不可被删除

1
2
#设置文件不可被删除
chattr +i 999

命令图解:

1658839875820

查看文件设置

1
2
#查看文件设置
lsattr -d 999

命令图解:

1658840010418

压缩/解压文件

zip压缩文件

1
2
#zip压缩文件
zip -r 999.zip /root/999/

命令图解:

1658840345968

unzip解压文件

1
2
#unzip解压文件
unzip 999.zip

命令图解:

1658840814160

tar压缩文件夹

1
2
#用tar压缩文件夹
tar -czf 999.tar.gz 999/

命令图解:

1658840901492

tar解压文件夹

1
2
#tar解压文件夹
tar -xzf 999.tar.gz

命令图解:

1658841034705

Linux进程相关命令

查询进程

1
2
3
4
#通过进程名查询进程
pgrep -l 进程名
#通过用户名查询进程
pgrep -u 用户名

关闭进程

1
2
3
4
5
6
7
8
#通过服务名删除进程
pkill 服务名
#通进程id删除进程
kill 进程ID
#强制杀死进程
kill -9 进程ID
#杀死所有指定名称进程
killall 进程名

计划任务管理

一次性计划

1
2
3
4
5
6
7
8
9
10
11
12
#设置一次性计划
#在2022年7月27号19:04创建一个/home/1.txt并写入系统时间
[root@centos7 home]# at 19:04 2022-7-27
at> echo $(date) >> /home/1.txt
at> <EOT>
#退出按CTRL+d

#查看一次性计划
atq

#删除一次性计划
atrm 计划序号

命令图解:

1658920184857

1658920214766

1658920254064

周期计划

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#以root权限添加循环计划
#与当前用户有关时-u参数可忽略
crontab -u root -e

#crontab命令格式
*(分钟0-59) *(小时0-23) *(日期1-31) *(月份1-12) *(星期0-6) 执行操作

#查看用户的周期计划
crontab -u root -l

#删除root用户创建的循环计划
crontab -u root -r

#导入任务计划
crontab 文件名

命令图解:

1658920797319

1658921129798

1658921260505

防火墙相关命令

防火墙添加规则

1
2
3
4
5
6
7
#添加防火墙规则,放行tcp连接的80端口,并写入配置文件
#有--permanent参数时,重载文件后有效
firewall-cmd --add-port=80/tcp --permanent

#添加规则允许http服务通过并设置生效时间为60秒
firewall-cmd --add-service=http --timeout=60

命令图解:

1658921799827

1658921896208

防火墙重载配置文件

1
2
#重载防火墙配置文件
firewall-cmd --reload

命令图解:

1658921799827

查看开放的端口/服务

1
2
3
4
5
#查看开放的端口
firewall-cmd --list-ports

#查看开放的服务
firewall-cmd --list-services

命令图解:

1658921799827

1658921904695

删除防火墙规则

1
2
3
#删除规则
#有参数--permanent时,重载配置后生效
firewall-cmd --remove-port=80/tcp --permanent

命令图解:

1658922439308

查看服务是否允许

1
2
#查看服务是否允许
firewall-cmd --query-service=http

命令图解:

1658922569637

防火墙开启IP伪装功能

1
2
#启用区域中的IP伪装功能
firewall-cmd --add-masquerade

添加端口转发规则

1
2
#设置端口转发到IP为192.168.182.110的80端口
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=80:toaddr=192.168.182.110

删除端口转发规则

1
2
#删除已有的端口转发规则
firewall-cmd --remove-forward-port=port=80:proto=tcp:toport=80:toaddr=192.168.182.110

查询端口转发规则

1
2
#查询本机存在哪些端口转发规则
firewall-cmd --query-forward-port=port=80:proto=tcp:toport=80:toaddr=192.168.182.110

find命令用法

find命令查找文件

1
2
#find命令基本格式
find 查找文件路径 -type f -name "*.sh"

相关参数解释

1
2
3
4
5
6
7
#文件路径位置参数
#当前文件夹
.
#指定路径
/home/admin
#为根目录
/

-type参数解释

1
2
3
4
5
#在当前目录下查找文件
find . -type f

#在根目录下查找文件夹
find / -type d

通过后缀查找文件

1
2
3
4
5
6
7
#查找/home/admin目录下的后缀为.sh的文件
#区分大小写
find /home/admin -name "*.sh"

#查找/home/admin目录下的后缀为.sh的文件
#不区分大小写
find /home/admin -iname "*.sh"

查看被修改过的文件

1
2
3
4
5
6
#可用来应急响应时查看木马
#查看在当前目录下最近五天被修改过的文件
find . -type f -mtime -5

#查看在当前目录下超过五天被修改过的文件
find . -type f -mtime +5

追加匹配规则

1
2
#find在当前文件夹下查找多个后缀,追加匹配规则用-o连接
find . -iname "*.txt" -o -iname "*.php"

查找文件显示其路径

1
2
#在根目录下查找所有txt后缀文件的路径
find / -path "*.txt"

否定查找

1
2
#查找后缀不为txt的文件
find . ! -iname "*.txt"

递归查找

1
2
3
4
5
#限制文件递归次数,最多在当前目录下查找两级,一级为当前目录
find . -maxdepth 2 -type f

#限制文件递归次数,至少在当前目录下查找两级,一级为当前目录
find . -mindepth 2 -type f

lsof命令用法

查看端口占用情况

1
2
#查看有哪些应用在占用80端口
lsof -i :80

查看进程打开文件

1
2
#查看进程打开的文件
lsof -c 进程名

查看已建立连接的端口号

1
2
#查已建立连接的端口号
netstat -autp

文件时间戳修改

更改最后的访问时间

1
2
#更改文件的访问时间
touch -a -d "yy-mm-dd hh:mm" 文件名

更改最后的更改时间

1
2
#更改文件的更改时间
touch -m -d "yy-mm-dd hh:mm" 文件名

同时修改访问时间与更改时间

1
2
#同时更改文件的访问时间和修改时间
touch -d "yy-mm-dd hh:mm" 文件名

注意:

mtime查看最近修改时间会被上面命令欺骗

ctime查看最近改动时间不会被欺骗

拓展:

想要欺骗ctime命令,应按照下列步骤执行:

1、修改访问时间和修改时间

2、更改系统时间

3、将木马文件改名

4、恢复系统时间

三剑客awk

通过分隔符查找

1
2
#以':'为分隔符查找第一字段
awk -v FS=':' '{print $1}' /etc/passwd

查找内容拼接

1
2
#以':'为分隔符查找第一、四字段并以'+'连接
awk -v FS=':' -v OFS='+' '{print $1,$4}' /etc/passwd

条件查找

1
2
#查找第四个字段为0并打出其第一个字段
awk -F: '($4 == "0") {print $1}' /etc/passwd

查找服务主目录

步骤一

1
2
#查看服务进程号
ps aux | grep "http"

步骤二

1
2
#进入进程号文件夹
cd /proc/服务进程号

步骤三

1
2
#找到exe文件位置
ll

步骤四

1
2
#进入文件位置对服务主目录执行操作
cd 文件位置

grep命令用法

反选

1
2
#反选,除了字符串内容都要
grep -v '字符串'

模糊匹配

1
2
#模糊匹配
grep "aaa" 2.txt

精准匹配

1
2
#精准匹配
grep -o "aaa" 2.txt

从头匹配

1
2
#以a开头
grep "^a" 2.txt

从尾匹配

1
2
#以a结尾
grep "a$" 2.txt

额外内容补充:

CentOS虚拟机挂起失败

新安装的CentOS虚拟机挂起失败可能是防火墙将vmtool的命令拦截了;可输入命令

1
2
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0

重启后生效

应急处理方法

当怀疑主机遭受攻击时,可以在root权限下查看日志/var/log/secure

查看此命令日志可以发现主机是否遭到攻击,或是用户登录进来并使用特殊权限执行错误指令等等。所以我们要实时监控此文件的动向。

1658838387716

密码锁定策略

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#设置密码错误3次,锁定账户10分钟
#进入配置文件开启策略
vim /etc/ssh/sshd_config
#修改参数UsePAM 为yes
UsePAM yes
#重启sshd服务
systemctl restart sshd
#进入配置文件设置规则
vim /etc/pam.d/login
#在第二行添加
auth required pam_tally2.so deny=3 lock_time=600 even_deny_root root_unlock_time=600
#进入配置文件设置规则
vim /etc/pam.d/sshd
#在第二行添加
auth required pam_tally2.so deny=3 unlock_time=600 even_deny_root root_unlock_time=600


#解锁登录错误的用户
pam_tally2 -r -u 用户名

修改ssh默认端口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#进入配置文件
vim /etc/ssh/sshd_config

#找到Port=22行,去掉注释符#,修改22为想要端口
Port=2233

#给防火墙添加规则放行修改的端口号允许进行tcp连接
firewall-cmd --add-port=2233/tcp

#重启sshd服务
systemctl restart sshd

#如果重启服务失败,输入setenforce 0后重试
setenforce 0

设置只有规定的IP地址使用规定的用户通过ssh登录

1
2
3
4
5
6
7
8
9
10
11
12
13
#打开配置文件
vim /etc/ssh/sshd_config

#添加下面命令
allowusers 用户名@允许的IP地址(其他地址全不允许,可以设置网段)

#禁止ssh密码登录,开启密钥或证书验证
#PasswordAuthentication yes改成no
PasswordAuthentication no

#去掉PubkeyAuthentication yes的注释符#
PubkeyAuthentication yes

使用密钥登录ssh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#生成公钥私钥
ssh-keygen

#默认存放位置在用户家目录/.ssh
#复制用户信息进入文件
#192.168.182.110处填写服务器密钥IP地址,root为执行此命令的账户名
#流程为yes----输入账户密码
ssh-copy-id root@192.168.182.110

#如果更改了端口要在命令后面加上-p 修改后的端口号
ssh-copy-id root@192.168.182.110 -p 修改后的端口号

#完成后将id_rsa文件下载到想要建立连接的主机上通过密钥登录
sz /home/.ssh/id_rsa