- 目录结构:
/ :根目录
/usr/share:存放说明文件,也可以防止文件共享
1.系统启动必须目录:
/boot :主要用于存放开机所需文件,内核、开机菜单的启动文件
/etc :存放着所有的系统需要的配置文件和子目录列表
/lib :存放系统最基本的动态连接共享库(存放着库和函数)
/lib64 :存放64位的库
/sys :虚拟文件系统
2.指令集合:
/bin :存放常用的程序和指令
/sbin :只有管理员root能使用的程序和指令
/usr/bin:系统用户使用的程序和指令
/usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序
3.外部文件处理:
/dev :以文件的形式存放任何设备与接口
/mnt :临时挂载别的文件系统
/media :挂载设备文件
4.临时文件:
/run :临时文件系统,重启时该目录下的文件将会被清除
/tmp :存放临时文件(文件共享所有用户都可对其进行操作)
/list+found:无法关机时会存放一些文件
5.账号:
/home :存放除root用户以外的家目录
/root :是Linux管理员root的家目录
/usr :用户的很多应用程序和文件存放在目录下
6.运行过程中:
/var :用于存放日志文件
/proc :存放了一些虚拟的文件系统
7.扩展使用:
/opt :存放网络下载的安装包
/srv :存放一些服务启动之后需要提取的数据
- 常用的文件配置:
1./etc目录:
网卡配置文件:/etc/sysconfig/network-scripts/ifcfg-ens33
网卡(不同系统):/etc/network/interfaces
更改源配置文件:/etc/apt/sources.list
DNS配置文件:/etc/resolv.conf
主机名配置文件:/etc/hostname
内核参数设置文件:/etc/sysctl.conf
配置环境变量文件:/etc/profile/
别名文件:/etc/bashrc.bashrc.bash_profile
设置开机自启动程序命令:/etc/fstab
/etc/ssh/sshd_config 文件修改ssh配置
/etc/profile 文件修改时间
/etc/pam.d/system-auth 系统认证配置文件(一般做本地认证)
/etc/pam.d/password-auth 密码认证配置文件(一般做远程认证)
/etc/login.defs 密码有效期
2./proc目录:
当前CPU信息:/proc/cpuinfo
当前内存信息:/proc/meminfo
当前系统平均负载信息:/proc/loadavg
当前系统中断信息:/proc/interrupts
当前谁被挂载列表:/proc/mounts
3./usr目录:
编译安装软件默认位置:/usr/local
源代码目录:/usr/src
4./var目录:
系统日志文件:/var/log/messages
有哪些用户登录:/var/log/lastlog
记录硬件信息加载情况的日志:/var/log/dmesg
5.密码:
密码存放在影子文件中:/etc/shadow
由于/etc/passwd文件允许所有用户读取,易导致用户密码泄露,因此Linux系统将用户的密码分离出来单独存放到影子文件中
/etc/shadow文件只有超级用户拥有权限查看
/etc/pam.d/system-auth 系统认证配置文件(一般做本地认证)
/etc/pam.d/password-auth 密码认证配置文件(一般做远程认证)
/etc/login.defs 密码有效期
三、密码
*passwd的镜子文件,两文件互补
root:$y$j9T$00oi15qRQJzZZvT4azWpl/$KKz.f1ZYtqE5jlQ0LkGIBVWCnVy03uZ3toUqZ6WniX7:19657:0:99999:7:::
“:”分隔为一个字段
第一字段:用户名(也称为登录名);
第二字段:密码(已被加密);
第三字段:上次修改口令时间;
第四字段:两次修改口令间隔最少天数;
第五字段:两次修改口令间隔最长天数;
第六字段:提前多少天警告用户口令将过期;
第七字段:在口令过期之后多少天禁用此用户;
第八字段:用户过期日期;
第九字段:保留字段,目前为空;
*密码设置passwd
更改密码:passwd +用户名
#锁定用户密码:passwd -l +用户名
#解锁用户密码:passwd -u +用户名
#查看用户的密码状态:passwd -S +用户名
LK:密码被锁定
NP:没有设置密码
PS:密码已设置
#删除用户密码:passwd -d +用户名
*修改账号和密码的有效期chage
#用法:chage [选项] +用户名
-M:密码保持有效的最大天数
-m:最小天数
-W:用户密码到期前,提前收到警告信息的天数
-E:账号到期的日期,会禁止此账户
-d:上一次更改的日期
-l:列出当前的设置(显示账号年龄信息)
-R:chroot到的目录
#设置密码永久有效(5个9):chage -M 99999 +用户名
#设置过期时间是2024-01-01:chage -E '2024-01-01' +用户名
*修改 /etc/login.defs 修改密码时间
PASS_MAX_DAYS 99999 // 密码最长的使用天数
PASS_MIN_DAYS 0 // 密码最小的使用天数
PASS_MIN_LEN 5 // 密码最小长度
PASS_WARN_AGE 7 // 密码过期前警告天数
*使用openssl生成密码
#查看支持的加密算法:openssl passwd --help
#使用sha512算法生成密码:openssl passwd -6
XFS、SWAP文件系统的作用:
EXT4:第四代日志文件系统,openEuler、kali系统默认使用,在根分区及其他数据分区;
XFS:高级日志文件系统,CentOS7、RHEL7系列默认使用,用在根分区及其他数据分区;
SWAP:交换空间(虚拟内存)
四、Linux常用命令:
cat :显示文件的全部内容
less :可以分页显示长文件(内容很多行)
mkdir :创建目录 mkdir -p [路径]目录名
touch :创建文件 touch 文件名
cp :复制文件 cp [选项] 源文件路径 目标路径
rm :删除文档 rm [选项] 文件或目录
mv :移动、修改文件名 mv [选项] 原文件 目标路径
vi :linux/unix 默认编辑器
vim :vi编辑器的增强版
vim
查找关键词:/关键词 (按n键查询下一个查询的结果)
显示行数:set number
五、用户权限管理:
类型:超级用户(ID为0)、系统用户(不能登陆,ID为1-999)
普通用户(ID为1000-60000)
1.添加新用户:
useradd +用户名
id +用户名 检查用户的id信息
用户设置密码: passwd +用户名
删除用户: userdel -r +用户名
添加组: groupadd +组名
为组添加、删除用户:gpasswd [-a、-d 用户名] 组名
删除组: groupdel 组名
2.更改文档归属chown命令:
格式:
chown 属主 文档路径
chown :属组 文档路径
chown 属主:属组 文档路径
3.更改访问权限chmod命令:
格式:
chmod [ugo][+,=][rwx] 文档路径
chmod g+rwx,o-rx 文档路径
访问权限:
读取:允许查看内容-read
写入:允许修改内容-write
可执行:允许运行和切换-excute
4.提权(sudo):
sudo:visudo-*-编辑sudo授权表
默认授权列表:
root ALL=(ALL) ALL
规则:
授权用户 主机=(用户身份) 授权的命令
开启sudo日志功能:
添加此行-*- Defaults logfile=/var/log/sudo
Defaults:默认
logfile:日志文件
查看当前用户权限命令:sudo -l
Su:对应的日志文件:/var/log/secure的日志
使用su -l 关键词查看
5.SUID-*-属主特权
格式:chmod u+s 路径
附加位置:属主的X位
适用对象:可执行文件
用途:向执行者传递文档属主的身份/权限
6.SGID-*-属组继承
格式:chmod g+s 文件路径
附加位置:属组的X位
适用对象:目录
用途:是目录下新增的文档自动属于此目录的属组
7.SBit-*-粘滞位
在一个其他人有W权限的目录中,如果该目录有粘滞位的特殊权限,自己只能删除自己创建的文件,不能删除他人的文件
格式:chmod o+t 文件路径
六、关于设备文件:
分区:一般是/dev/sda1、/dev/sda2
U盘:一般是/dev/sdb1
光盘:一般是/dev/cdrom,指向/dev/sr0等设备
- 挂载设备:挂载光盘
(可以有n个挂载点,但是同一时间只能挂载一个)
准备挂载点 :mkdir /mnt/dvd
挂载光盘 :mount /dev/cdrom /mnt/dvd
作用:Linux系统无法识别的文件系统都需要挂载。
卸载挂载的光盘:
umount /mnt/dvd
2.配置开机自动挂载:
创建挂载文件 :mkdir -p /repos/openEiler
将文件写入开机自启文件中:vim /etc/fstab
/dev/cdrom /repos/openEiler iso9660 ro 0 0
检查开机自启 :mount -a
七、systemctl工具:
systemctl-*-系统控制器
system-*-系统
基本用法:
启动某个服务 :systemctl start 服务名
停止某个服务 :systemctl stop 服务名
重启某个服务 :systemctl resatrt 服务名
检查服务状态 :systemctl status 服务名
active--运行中 inactive--已停止
允许开机自启 :systemctl enable 服务名 -now立即启动
禁止开机自启 :systemctl disable 服务名
八、SELinux状态控制
1.开机时自动切换:
修改 /etc/selinux/config配置,重启生效
三种运行状态
强制 :Enforcing
宽松 :Permissive
禁用 :Disabled
- 查看当前SELinux运行状态 :getenforce
getenforce 获取当前SELinux状态
理解切换强制与宽松:
宽松 :setenforce 0
强制 :setenforce 1
(可在命令行直接输入 setenforce 0/1 命令进行修改 SELinux)
九、查看ACL访问控制
1.查看ACL策略
格式:getfacl -p 文档路径
2.设置ACL策略
格式:
setfacl -m u:用户名:权限组合 文档路径
setfacl -m g:组名:权限组合 文档路径
3.删除ACL策略:
删除用户策略:setfacl -x u:用户名 文档路径
删除组策略:setfacl -x g:组名 文档路径
清空所有策略:setfacl -b 文档路径
十、Linux加固:
1.ssh:
修改 /etc/ssh/sshd_config 文件修改ssh配置
禁止root用户登录:
PermitRootLogin no/yes yes允许no拒绝
允许某些用户在某些主机上远程连接:
AllowUsers 用户名@IP地址 用户名@IP地址
(只允许以上用户通过指定的IP地址来连接)
修改端口号:
Post 12345
修改单词连接最多验证次数为2次:
MaxAuthTries 2
修改验证时长为1分钟:
LoginGraceTime 1M
2.命令行超时退出设置
修改 /etc/profile 文件修改时间
export TMOUT=30 设置时间为300秒测试时间可以设置为30秒
3.密码复杂性:
/etc/pam.d/system-auth 系统认证配置文件(一般做本地认证)
修改此行
password requisite pam_pwquality.so minlen=8 minclass=3 retry=3 enforce_for_root
添加此行
password required pam_pwhistory.so use_authtok remember=5 enforce_for_root
/etc/pam.d/password-auth 密码认证配置文件(一般做远程认证)
修改此行
password requisite pam_pwquality.so minlen=8 minclass=3 retry=3 enforce_for_root
添加此行
password required pam_pwhistory.so use_authtok remember=5 enforce_for_root
minlen=8 -*- 长度至少8个字符
minclass=3 -*- 密码字符组合至少三种
retry=3 -*- 每次修改最多可以尝试三次
enforce_for_root -*- 对root用户同样适用
remember=5 -*- 不能使用过去5次的旧密码
4.登错锁定时间
/etc/pam.d/system-auth 系统认证配置文件(一般做本地认证)
auth required pam_faillock.so preauth audit deny=3 unlock_time=900 even_deny_root
auth [default=die] pam_faillock.so authfail audit deny=3 unlock_time=900 even_deny_root
auth sufficient pam_faillock.so authsucc audit deny=3 unlock_time=900 even_deny_root
/etc/pam.d/password-auth 密码认证配置文件(一般做远程认证)
auth required pam_faillock.so preauth audit deny=3 unlock_time=900 even_deny_root
auth [default=die] pam_faillock.so authfail audit deny=3 unlock_time=900 even_deny_root
auth sufficient pam_faillock.so authsucc audit deny=3 unlock_time=900 even_deny_root
deny=3 表示如果一个用户在一段时间内连续认证失败3次,那么该用户账户将被锁定。
unlock_time=900 是一个参数,表示锁定的用户账户在多少秒后将被自动解锁。在这个例子中,用户账户将在900秒(即15分钟)后自动解锁。
even_deny_root 表示这个规则甚至对 root 用户也有效。也就是说,如果 root 用户连续3次登录失败,那么 root 用户也会被锁定 900 秒。
十一、查看命令(三剑客)
1.管道符(|)
格式 :cat /etc/passwd | wc -l
将前面命令的执行结果交给后面命令进行执行
(cat查看文件执行后面的wc命令查看文件有多少行)
2.通配符
*:匹配多个字符
Ls /usr/bin/c*
列出目录下所有以C开头的文件
?:匹配一个字符
Ls /usr/bin/?at
列出目录下除第一个字母后面为at的文件
如果系统禁止一个命令(如cat)无法使用可以使用通配符绕过限制:
/usr/bin/?at hello.txt 仍可以查看
awk、sed、grep并称为Linux系统中的文本三剑客
3.awk命令其功能是用于对文本和数据进行处理的编程语言。
格式:awk [参数] '{print 变量}' [文件名]
常用参数:-F 设置输入时的字段分隔符
例:
1.仅显示指定文件中的第一、第二列的内容(默认以空格为间隔符):
awk '{print $1,$2}' +文件名
2.以冒号(:)为间隔符,仅显示指定文件中第一列的内容
awk -F : '{print $1}' +文件路径
3.以冒号为间隔符,显示系统中所有UID号码大于500的用户信息(第3列):
awk -F : '$3>=500' + 文件名
4.仅显示指定文件中含有指定关键词root的内容:
awk '/root/{print}' +文件名
5.以冒号为间隔符,仅显示指定文件中最后一个字段的内容:
awk -F : '{print $NF}' +文件路径
4.sed命令其功能室用于利用语法/脚本对文本文件进行批量的编辑操作
格式:sed [参数] [文件名]
常用参数:
-e 使用指定脚本来处理输入的文本文件
-f 使用制定脚本文件处理输入的文本文件
-n 仅显示脚本处理后的结果
例:
1.查找指定文件中带有某个关键词的行
cat -n 文件名| sed -n '/root/p'
2.读取指定文件,删除所有带有某个关键词的行
sed '/root/d' 文件名
3.读取指定文件,删除第2-5行的内容:
cat -n 文件名 | sed '2,5d'
4.读取指定文件,替换第2-5行的内容:
sed '2,5c 修改的内容' 文件名
5.指定读取某个文件的第3-7行:
sed -n '3,7p' 文件名
5.grep命令用于全面搜索的正则表达式,并将结果输出。
格式:grep [参数] [文件名]
常用参数:
-h 搜索多文件时不显示文件名
-c 只显示匹配的行数
-n 显示所有匹配行及其行号
-l 只显示符合匹配条件的文件名
例:
1.搜索指定文件中包含某个关键词的内容行
grep root(关键词) 文件名
2.搜索文件指定关键词开头的内容行
grep ^root(关键词) 文件名
3.搜索多个文件中包含某个关键词的行
grep root(关键词) 文件路径 文件路径
4.显示指定文件中包含某个关键词行的数量:
grep -c root(关键词) 文件路径 文件路径
5.搜索当前工作目录中包含某个关键词内容的文件,未找到则提示:
grep -l root(关键词) *.
^ : 代表一行的开头,查找ab开头的行 ^ab 查找以#开头的行 ^#
$ : 代表一行的结尾,查找ab结尾的行 ab$ 以hello 结尾的行 hello$
# : 配置文件中的注释,一般是在一行开头
6.查找/etc/selinux/config文件哪些内容被注释(内容中以#开头的行)
grep "^#" /etc/selinux/config
6.which命令程序的查找
格式:which 程序名
echo $PATH // 输出环境变量$PATH,里面存放了命令所在的路径
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
sbin:系统管理的命令
bin:普通命令
local:用户后期安装软件提供的命令
7.find文件查找
格式:find //快速列出当前目录下所有文档
在根目录下查找文件名的后缀是.conf的普通文件
find / -name "*.conf" -a -type f
在/boot目录下查找大于10M的文件
find /boot/ -size +10M -type f
在/boot目录下查找大于2M,小于10M的文件
find /boot -size +2M -size -10M -type f
查找根目录下.repo结尾的文件
find / -name "*.repo" -type f
在/var/log/查找超过30天未修改的文档
find /var/log/ -mtime +30
mtime : m modify 修改 time 时间 修改时间
在/var/log/查找超过30天未修改的普通文件
find /var/log/ -mtime +30 -type f
f:file 文件
d:directory 文件夹/目录
l:link 链接文件
在根目录下查找其他用户具有r权限的文件
u:user 属主
g:group 属组
o:other 其他用户
r:read :读权限
w:write 写权限
x:可执行权限
find / -perm -o=r -type f
- 进程管控:
1.查看进程:pstree-*-查看进程树
:top -*- 查看进程占用的资源(动态)
PID:进程标识号,这是每个进程的唯一标识符。
USER:该进程的所有者的用户名。
PR:进程优先级。该值越小,进程的优先级越高。
NI:进程的「nice」值,这是用户控制进程优先级的一个方式。该值越小,进程的优先级越高。
VIRT:进程使用的虚拟内存总量,单位是千字节 (KB)。
RES:进程使用的、未被换出的物理内存大小,单位是千字节 (KB)。
SHR:进程使用的共享内存大小,单位是千字节 (KB)。
S:进程的状态。可能的值有:
S 表示休眠 (sleeping)
R 表示运行中 (running)
T 表示停止 (traced)
Z 表示僵尸状态 (zombie)
%CPU:该进程使用的 CPU 时间百分比。
%MEM:该进程使用的物理内存百分比。
TIME+:该进程使用的总 CPU 时间,格式为 [dd-]hh:mm:ss。
COMMAND:启动进程的命令行名称。
2.查找进程:pgrep 关键词 -*-查找进程
:pgrep -l 关键词 -*-列出进程名称
3.杀死进程:kill -9 进程ID
:Pkill -9 进程名
- 下载,解压,安装
Wget命令下载
Wget是一个非常常用命令行下载工具,多数Linux发行版本都默认包含这个工具。
- Wget常用参数
-b:后台下载,Wget默认的是把文件下载到当前目录。
-O:将文件下载到指定的目录中。
-P:保存文件之前先创建指定名称的目录。
-t:尝试联接次数,当Wget未能与服务器构建联接时,尝试联接多少次。
-c:断点续传,假如下载中断,这么联接恢复时会从先前断点开始下载。
-r:使用递归下载
apt-get命令下载软件
在Linux系统中,apt-get命令是最常用的下载软件命令之一。它可以从Ubuntu和Debian的软件仓库中下载、安装和卸载软件。
1.更新源列表
在使用apt-get之前,需要更新源列表。
sudo apt-get update
2.搜索软件包
如果你不知道下载那个软件包,可以搜索
sudo apt-cache search 软件名
3.安装软件包
当你找到需要下载的软件包后Linux下载软件命令
sudo apt-get install 软件包名
4.卸载软件包
当卸载一个安装的软件包时使用
sudo apt-get remove 软件名
dpkg命令安装.deb文件
dpkg是Debian和Ubuntu中最常用的下载.deb文件的命令。它可以从本地硬盘上的.deb文件中安装和卸载软件包。
1.安装.deb文件
终端输入来安装
sudo dpkg -i <软件包名>.deb
2.卸载.deb文件
卸载已安装的.deb文件时
sudo dpkg -r 文件名
3.列出所有已安装的软件列表
dpkg -l
4.显示指定软件包内的文件信息
dpkg -c <软件包名>.deb
rpm命令安装.rpm文件
用于在Linux系统下对软件包进行安装、卸载、查询、验证、升级等工作
1.安装.rpm文件
sudo rpm -ivh 文件名.rpm
2.卸载.rpm文件
sudo rpm -evh 文件名
3.显示系统已安装过的全部rpm软件包
rpm -qa
4.查询某个软件的安装路径
rpm -ql 软件名
5.升级某个软件包
rpm -Uvh 软件包名.rpm
unzip解压命令
unzip命令用于解压缩zip格式文件,压缩包内原有的文件会被提取并输出保存到当前工作目录下。
格式:unzip [参数] 压缩包名
1.解压到当前目录中
unzip <压缩包名>.zip
2.解压到指定目录中
unzip <压缩包名>.zip -d /指定目录名
3.测试压缩包文件是否完整,文件有无损坏
unzip -t <压缩包名>.zip
tar命令-压缩和解压文件
格式:tar [参数] 压缩包名 [文件名或目录名]
1.使用gzip压缩格式对指定目录进行打包
tar czvf <压缩名>.tar.gz /目录名
2.解压到当前文件夹
tar xvf <压缩包名>.tar
3.解压到指定目录中
tar xvf <压缩包名>.tar /指定的目录名
4.查看某个压缩包内文件信息(无需解压)
tar tvf <压缩包名>.tar