
Linux基本命令
pwd
显示当前所在的位置cd
切换目录
相对路径:以根开始的路径
cd games
绝对路径:以当前位置,为参照的路径
cd /usr/games
cd ~root
cd ~wanglong 直接进入家目录
.. 表示上一层目录(父目录)
ls 显示目录
显示当前目录下的内容
-l 长格式显示详细属性
-h 提供易读的容量单位(K、M等) -lh
-d 显示目录本身(而不是内容)的属性 -ld
-A 显示所有内容,包含隐藏数据
-R 递归显示目录内容cat 查看少量文本
查看文本文件内容,适合查看内容较少的文件
cat --help //查看命令帮助信息
cat -n /etc/shells //显示行号
cat /root/anaconda-ks.cfg
cat /etc/passwd
cat /etc/fstabless 滚动查看文本
查看文本文件内容,适合查看内容较多文件
按上下键可以进行滚动
按q键退出hostname 主机名
hostname abc.haha.xixi
hostname //显示设置的hostnamecpu与内存
lscpu 查看cpu信息
cat /proc/meminfo 查看内容信息ifconfig 查看ip
查看ip信息
lo:本机回环地址(此接口专门用于测试),永远为127.0.0.1,代表本机mkdir 创建目录
创建目录
mkdir /路径/目录名
-p 连同父目录一并创建
touch 创建文件
创建文本文件
touch /opt/1.txt 创建文件
ls /opt 查看目录head/tail 查看收尾
格式:head/tail -n 文件名
查看前n行/倒数n行
head -3 /etc/passwd
tail -3 /etc/passwdgrep 指定字符的行
输出包含指定字符串的行
grep root /etc/passwd
grep bash /etc/passwd
常用命令
grep 选项 '字符串' 文本文件
-v 取反匹配(不包含)
-i 忽略大小写
grep -v root /etc/passwd
高级使用
^word 以字符word开头
word$ 以字符word结尾
grep ^root /etc/passwd 查看以root开头的文件
grep bash$ /etc/passwd 查看以bash结尾的文件
^$ 表示空行,这两个是一个整体,表示空行
grep ^$ /etc/default/useradd #筛选出空行
grep -v ^$ /etc/default/useradd 不要(筛选出的)空行
linux中大多数配置文件内容,有以#开头的注释行
grep -v ^# /etc/login.defs | grep -v ^$ > /opt/log.txt #将/etc/login.defs去除以#开头的注释行和去除空行,然后输出到/opt/log.txtvim 编辑器
文本编辑器
vim当文件不存在时,会自动创建文件,不能创建目录
vim打开一个文件时,默认处于命令模式;从命令模式按i键可以进入编辑状态,按Esc键返回命令模式;从命令模式输入冒号:可以进入末行模式,在末行模式下主要执行wq存盘与退出等基本操作。
vim末行模式
读取文件内容
[root@localhost /]# echo 123456 > /opt/aa.txt
[root@localhost /]# echo hahaxixi > /opt/cc.txt
[root@localhost /]# vim /opt/cc.txt
末行模式下 :r /opt/aa.txt #将aa.txt文件追加到文本后面
末行模式下 :r /etc/passwd #将passwd文件追加到文本后面
末行模式下 :r /etc/shells #将shells文件追加到文本后面
字符串替换
:1,10s/root/new/g 替换第1-10行所有的“root”
:%s/root/new/g 替换文件内所有的“root”
开关参数的控制
:set nu或nonu 显示/不显示行号
:set ai或noai 启用/关闭自动缩进
永久开关功能设置
vim /root/.vimrc
set nu #将这个命令写入到.vimrc中命令模式常用操作:
1G 或 gg ,跳转到文件的首行
G ,跳转到文件的末尾行
yy、#yy ,复制光标处的一行、#行
p、P ,粘贴到光标处之后、之前
x 或 Delete键 ,删除光标处的单个字符
dd、#dd ,删除光标处的一行、#行
d^、d$ ,从光标处之前删除至行首/行尾
/word 向后查找字符串“word”,再按n/N跳至后/前一个结果
u ,撤销最近的一次操作
U ,撤销对当前行的所有修改
Ctrl + r 取消前一次撤销操作
ZZ 保存修改并退出末行模式常用操作:
:s/old/new ,替换当前行第一个“old”
:s/old/new/g ,替换当前行所有的“old”
:n,m s/old/new/g ,替换第n-m行所有的“old”
:% s/old/new/g ,替换文件内所有的“old”
:w /root/newfile ,另存为其它文件
:r /etc/filesystems ,读入其他文件内容
:set nu|nonu ,显示/不显示行号
:set ai|noai ,启用/关闭自动缩进vimdiff 比对修改多文件
echo hahaxixi > /opt/aa.txt
echo hahaabc > /opt/bb.txt
vimdiff /opt/aa.txt /opt/bb.txt
命令模式下按下两次 Ctrl+w,可以左右切换要修改的文本
末行模式输入wqa保存全部文件并退出which 命令对应程序
找到命令对应的程序
which hostname
/usr/bin/hostname
which ifconfig
/usr/sbin/ifconfig
which firefox
/usr/bin/firefox快捷键
ctrl+c 结束正在运行的命令
alt+. 或者 Esc+. 粘贴上一个命令参数
ctrl+l 清屏mount 挂载光盘
mount /光盘位置 /挂载位置
umount /挂载位置
一个光盘可以挂载在多个地方,多个光盘不能挂载在一个地方通配符
* 任意多个任意字符
ls /root/a* a开头的文件
ls /boot/vm* vm开头的文件
ls /etc/*tab tab结尾的文件
ls /etc/*.conf .conf结尾的文件
ls /etc/re*.conf re开头.conf结尾的文件
ls -d /etc/*as* 包含as的文件夹及文件,-d 仅显示当前目录下,不进入二级目录
? 单个字符,必须要有一个
ls /etc/??tab 搜索tab前面有两个字符的文件
ls /dev/tty? 搜索tty后面有一个字符的文件
ls /dev/tty?? 搜索tty后面有两个字符的文件
[a-z] 多个字符或连续范围中的一个,若无则忽略
ls /dev/tty[3-9]
/dev/tty1 /dev/tty3 /dev/tty5 /dev/tty7 /dev/tty9
/dev/tty2 /dev/tty4 /dev/tty6 /dev/tty8
{a,min,xy} 多组不同的字符,全匹配
ls /dev/tty{1,17,20}
ls /etc/{fs,m}tabalias 别名
alias 别名名称='实际执行的命令行' #设置别名
unalias 别名名称 #取消已设置的别名rm 删除
rm 选项 文件或目录
-r 递归删除(含目录)
-f 强制删除(不询问直接删除)mv 移动
mv 源数据 目的地
mv /opt/1.txt /opt/nsd/ 会将1.txt移动到nsd文件夹
mv /opt/1.txt /opt/nsd 会将1.txt移动,名字变成nsd
mv /opt/1.txt /opt/2.txt 重命名,文件夹也可以cp 拷贝
cp 源数据 目的地
-r 递归,复制目录时必须有此选项
进行强制覆盖
\cp -r /boot /opt #本次操作临时取消别名
cp -r /root /opt/home (复制可以重新命名)如果home不存在,相当于将root文件夹命名为home,如果home存在,会将root文件夹复制到home文件夹里面
复制可以支持两个以上的参数,永远把最后一个参数作为目标,其他所有的参数都作为源数据
cp -r /home /boot /etc/passwd /etc/shells /nsd05
复制与一个点进行连用,将数据复制到当前路径下
cd /opt
cp /etc/passwd .
lstar 压缩
创建tar包
tar 选项 /路径/压缩包名字 /源数据......
-c 动作为创建
-f 指定压缩包的名字(必须在所有选项最后)
-z、-j、-J 调用 gz、bz2、xz格式工具进行处理
此种方法打包解压带原始路径
将/etc/passwd /home 两个文件夹打包为haha.tar.gz
tar -zcf /root/haha.tar.gz /etc/passwd /home
将passwd和home打包,名字为haha.tar.gz
释放tar包
tar 选项 /路径/压缩包名字 选项 /释放的位置
-t 查看归档
-x 释放归档
-f 指定归档文件名称,必须在左右选项的最后
-C 指定路径
tar -xf /root/cbd.tar.gz -C /nsd12
打包后不带原始目录,注意[/路径/ 源数据] 中间有空格
tar高级打包(上面格式打包后解压有目录,可用如下方法-C,打包不会带目录)
tar 选项 /路径/压缩包名字 -C /路径/ 源数据 -C /路径/ 源数据...
同一个目录下有多个文件还可以使用如下方法(打包不带目录,纯净打包-_-)
tar 选项 /路径/压缩包名字 -C /路径/ 源数据 源数据 源数据 源数据 源数据 echo
用于在终端输出文本或变量的值
echo 123456重定向 > >>
将前面命令的输出,作为内容,写入到后面的文件
> 覆盖重定向
>> 追加重定向
head -2 /etc/passwd > /opt/p.txt
hostname >> /opt/p.txt
高级应用
> /opt/p.txt #清空文件内容管道 |
将前面命令的输出,传递给后面命令,作为后面命令的参数
head -4 /etc/passwd | tail -1 #查看passwd第四行
cat -n /etc/passwd | head -8 | tail -2 > /opt/p.txt #以带编号的形式将passwd文件的第7-8行,写入/opt/p.txtwc -l
查看有多少行
cat /etc/passwd | wc -lfind
find 目录 条件 条件...
-type类型(f文本文件、d目录、l快捷方式)
find /boot -type d #查找boot目录下的目录(文件夹)
find /etc -type l #查找etc目录下的快捷方式
find /boot -type f #查找boot目录下的文件
-name文档名称(-iname忽略大小写)
find /etc/ -name "passwd" #查找etc下的名字为passwd文件(一般能明确知道的都不会查,主要用通配符模糊查找)
find /etc/ -name "*tab" #查找etc下名字以tab结尾的文件
find /etc/ -name "*.conf" #查找etc下名字以.conf结尾的文件
find /root/ -name ".*" #查找root下的隐藏数据
find /mnt/ -name "cbd*" -o -type f #两个满足其中一个
-size 文件大小格式(k、M、G)
+代表大于 -代表小于
find /boot/ -size +10M
find /boot/ -size +1M
find /boot/ -size +10M -size -50M #查找大于10M小于50M的文件
-user 按照数据的所有者
find /home/ -user wanglong #查找home下wanglong的文件
-mtime 修改时间(所有的时间都是过去时间)
-mtime +90 #90天之前的数据
-mtime -90 #90天之内的数据
find /var -mtime +90 #三个月之前的数据:
find /root -mtime -10 #最近10天之内的数据
find高级使用
处理find找到的数据,每查找到一个就传递一个
find 目录 条件 -exec 处理命令 {} \;
-exec额外操作的开始
{}永远表示前面find查找的结果
\;额外操作的结束
find /boot/ -size +10M -exec cp {} /mnt \; #查找boot下大于10M的文件,将其拷贝到/mnt目录下
find /boot/ -size +10M -exec ls -lh {} \; #查找boot下大于10M的文件,然后显示大小详细信息
find /etc/ -name "*tab" -type f -exec cp {} /root/mytab/ \; #查找etc下名字以tab结尾且是文件的文件,将其拷贝到/root/mytab下which
查询命令对应的程序文件
which vim #查询命令vim对应的程序文件历史命令
管理/调用曾经执行过的命令
history 查看历史命令列表
history -c 清空历史命令
history -w 记录历史命令为空的状态
!n 执行历史命令中的第n条命令
!str 执行最近一次以str开头的历史命令date 时间
查看/调整系统日期时间
date 查看时间
date -s "2008-9-6 11:17:16" 修改系统时间
date +%Y 显示年
date +%m 显示月
date +%d 显示日
date +%H 显示时
date +%M 显示分
date +%S 显示秒
date +%F 显示年-月-日
date +%T 显示时:分:秒du 磁盘占用空间
du 统计目录占用硬盘的空间
-s 只统计每个参数所占用的总空间大小
-h 提供易读容量单位(K、M等)
du -sh /root 查看root目录占用空间
du -sh /etc 查看etc目录占用空间软/硬连接(快捷方式)
软连接
优点:可以针对目录和文件制作快捷方式,支持跨分区
缺点:当软连接的源文件(目标)被删除或移动后,这个软连接会变成一个“断裂的”或“悬空的”链接,断裂的链接会以明显的红色高亮显示(取决于终端配色)
ln -s /路径/源数据 /路径/快捷方式的名称
ln -s /etc/hosts /hs
绝对路径--直接写绝对路径就可以
相对路径-如果要在bbb文件夹创建软连接(连接到aaa/a.txt),相对路径要以bbb为初始位置
ln -s ../aaa/a.txt bbb/
硬连接
优点:源数据消失,快捷方式仍然有效,类似对文件复制
缺点:只能针对文件制作快捷方式,不支持跨分区
ln /路径/源数据 /路径/快捷方式的名称zip归档工具(跨平台)
跨平台(Windows与Linux)
归档+压缩
zip -r 备份文件.zip 被归档的文档...
-r 被归档的数据有目录,必须加上此选项
zip -r /opt/abc.zip /etc/passwd /home
释放归档+解压操作
unzip 备份文件.zip -d 目标文件夹
unzip /opt/abc.zip -d /nsd
查看压缩包内容
unzip -l 备份文件
unzip -l /opt/abc.zipuname -r查看内核版本
计划任务
按照设置的时间间隔,为用户反复执行某一项固定的系统任务
软件包 cronie、crontabs
系统服务 crond
使用 crontab 命令
–编辑:crontab -e [-u 用户名]
–查看:crontab -l [-u 用户名]
–清除:crontab -r [-u 用户名]
计划任务书写格式
分 时 日 月 周 任务命令行(绝对路径)
* * * * * #每分钟执行一次
30 8 * * * #每天早晨的8点30分,执行一次
30 23 * * * #每天晚上23:30 执行一次
30 23 * * 5 #每周的周五23:30 执行一次
30 23 * * 1-5 #每周的周一至周五23:30 执行一次
30 23 * * 1,3,6 #每周的周一周三周六23:30 执行一次
特别写法:
5 * * * * #每个小时的第五分钟执行一次
*/5 * * * * #每隔5分钟运行一次
38 */2 * * * #每隔2小时运行一次
*:匹配范围内任意时间
,:分隔多个不连续的时间点
-:指定连续时间范围
/n:指定时间频率,每n ...
案例:
每分钟记录当前的系统时间,写入/opt/time.txt
[root@nb ~]# date
[root@nb ~]# date >> /opt/time.txt
[root@nb ~]# cat /opt/time.txt
[root@nb ~]# which date #查询命令程序路径
[root@nb ~]# crontab -e #编写计划任务
* * * * * /usr/bin/date >> /opt/time.txt
[root@nb ~]# crontab -l #查看计划任务内容
[root@nb ~]# cat /opt/time.txt
[root@nb ~]# ls /var/spool/cron #任务文件存放的路径
[root@nb ~]# cat /var/spool/cron/root #记录root用户计划任务sudo提权
/etc/sudoers # 主配置文件
visudo # 编辑(推荐,有语法检查)配置语法
用户 主机=(身份) 命令
wanglong ALL=(ALL) ALL # 所有权限
%wheel ALL=(ALL) ALL # 组权限
user1 ALL=(ALL) NOPASSWD: /usr/bin/systemctl # 免密常用命令
sudo command # 提权执行
sudo -l # 查看自己的权限
sudo -U user -l # 查看他人权限实际示例
# 允许管理服务
user1 ALL=(ALL) /usr/bin/systemctl *
# 允许安装软件
user2 ALL=(ALL) /usr/bin/yum install *用visudo编辑(防语法错误)
遵循最小权限原则
优先使用组管理(%groupname)主机名
hostnamectl set-hostname server
cat /etc/hostname #设置永久主机名配置文件
server
hostname
server
开启一个新的终端查看提示符的变化RPM 软件包
查询软件信息(参数是软件名)
rpm软件包---适用于redhat、centos系列
deb软件包---适用于debian系列
firefox-91.9.0-1.el8_5.x86_64.rpm
软件名 -版本信息.操作系统.硬件架构.rpm
查询是否安装此软件(参数是软件名)
rpm -qa #查看当前系统中所有已安装的软件包
rpm -q firefox #查看软件是否安装
rpm -qi firefox #查询软件信息
rpm -ql firefox #查询软件安装了哪些内容
rpm -qf /usr/bin/vim #查询vim是哪个rpm包的
rpm -qf /usr/sbin/poweroff #查询关机命令是哪个包的
查询某个目录/文件 是哪个rpm包的(即使目录删除也可以查询)
which vim 首先查询这个命令的目录
/usr/bin/vim
查询“软件包”的安装清单:
rpm -qpl /mnt/AppStream/Packages/v/vsftpd-3.0.3-35.el8.x86_64.rpm
查询软件包信息
rpm -qpi /mnt/AppStream/Packages/v/vsftpd-3.0.3-35.el8.x86_64.rpmrpm命令方式:不能自动解决依赖关系
yum命令方式:能自动解决依赖关系
yum仓库构建
作用:自动解决依赖关系安装软件
服务端:1、众多的软件 2、仓库数据文件(repodata)
本地yum仓库:服务器需要有光盘内容即可
客户端:指定服务位置
yum命令执行流程:
yum命令 -- 读取/etc/yum.repos.d/*.repo配置文件内容,从而找到仓库具体位置
客户端文件配置内容:
[源名称] 自定义名称,具有唯一性
name 本软件源的描述字符串
baseurl 指定yum服务端的url地址
enabled 是否启用此频道
gpgcheck 是否验证待安装的rpm包
gpgkey 用于rpm软件包验证的密钥文件
仓库配置文件 /etc/yum.repos.d/*.repo
完整示例
[xixi] 仓库的标识
name=xixi 可以省略
baseurl=file:///mnt/AppStream file://表示本地服务器
enabled=1 可以省略,默认开启
gpgcheck=1 1检测,0不检测
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
[xixi] #实际应用
name=xixi
baseurl=file:///mydvd/AppStream
enabled=1
gpgcheck=0
本地Yum仓库排除错误
1.没有挂载光驱设备
2./etc/yum.repos.d目录下的仓库配置文件内容写错
3./etc/yum.repos.d目录下,错误的配置文件影响yum repoinfo #列出仓库信息
rpm -q httpd #查询httpd是否安装成功
yum list ftp #查询仓库是否有ftp软件(包含fpt就匹配)
yum provides /etc/passwd #仓库中哪个包产生该文件
yum provides "hostname" #查询仓库中哪个软件产生该程序
删/usr/bin/hostname,通过yum恢复
rm -rf /usr/bin/hostname
yum provides /usr/bin/hostname #查询仓库哪个包产生该文件
yum -y reinstall hostname #覆盖安装 ******
yum clean all #清空yum的缓存
yum repoinfo #列出仓库信息
yum search httpd #查询与httpd相关的包
yum info firefox #查询firefox包描述信息用户
用户账号简介
作用:1、可以登陆操作系统 2、不同用户具备不同权限
唯一标识:UID(从0开始,默认最大60000)
zhangsan(UID 1200)
管理员root的UID永远为0
普通用户的UID默认从1000开始组账号简介
作用:方便管理用户
唯一标识:GID(从0开始,默认最大60000)
原则:Linux一个用户必须至少属于一个组
组账户分类:
基本组:一般情况与用户同名,一个用户必须有基本组,基本组只能有一个
附加组(从属组):一个用户可以有多个附加组,也可以没有附加组用户配置文件
/etc/passwd 存放用户基本信息配置文件
head -1 /etc/passwd
root : x : 0 : 0 : root :/root:/bin/bash
用户名:密码占位符:UID:基本组GID:用户描述信息:家目录:解释权用户的创建
useradd 选项 用户名
-u 指定用户UID
-d 指定宿主目录(家目录),默认为/home/用户名
-g指定基本组
-G 指定所属的附加组
groupadd stugrp
useradd -G stugrp nsd06
id nsd06
useradd -G stugrp,tmooc nsd11 将nsd11加入stugrp、tmooc组附加组
-s 指定用户的登录解释器,默认为/bin/bash,/sbin/nologin禁止用户登录操作系统
id 用户名 #查询用户uid/gid信息例:创建用户hakeem,指定家目录为/rhome/hakeem,该用户无法登录系统
//易错题,演示(因为/rhome目录不存在,则无法在/rhome目录下创建用户的家目录)
[root@localhost ~]# useradd -d /rhome/hakeem -s /sbin/nologin hakeem
useradd:无法创建目录 /rhome/hakeem
//上面的用户家目录创建虽然失败了,用户还是依然被创建了,下面删除用户,重新创建
[root@localhost ~]# userdel hakeem
//创建/rhome目录
[root@localhost ~]# mkdir /rhome
//创建用户-d指定用户家目录,-s指定用户解释器为/sbin/nologin(无法登录系统)
[root@localhost ~]# useradd -d /rhome/hakeem -s /sbin/nologin hakeem
//验证效果
[root@localhost ~]# id hakeem
[root@localhost ~]# grep hakeem /etc/passwd用户的修改
usermod 选项 用户名
-l 更改用户账号的登录名称
usermod -l 新用户名 原用户名
-u 用户uid
usermod -u 用户uid 用户名
-d 家目录路径
usermod -d /新目录 用户名 #此命令默认不会自动创建新的家目录
usermod -md /新目录 用户名 #将用户原有的家目录进行移动,并设置相应的权限
-s 登录解释器
-G 修改用户的附加组 #重置附加组(了解)
useradd nsd17
id nsd17
usermod -G stugrp nsd17 修改、重置nsd17的附加组
id nsd17
groupadd tmooc #创建组
usermod -G tmooc nsd17 修改、重置nsd17的附加组
id nsd17
usermod -G root,stugrp nsd17 修改重置nsd17的附加组
id nsd17 设置用户密码
passwd 用户名 #设置用户密码
su - 用户名 #临时切换用户身份
passwd命令支持非交互式设置密码
echo 123456 | passwd --stdin 用户名
grep nsd01 /etc/shadow #保存密码等有效期信息(了解)
nsd01:$6$Qhv/gE3Wigl65sKB$jNOwZa9gY1gkPzXJ59kwYzn2/B2d3GuG3AU9H6lYhKZ8O2PPurlK.PfEl3KHwubhIWiKKHH5AXCeUFMe6Jw3R.:20296:0:99999:7:::
字段1 用户账号的名称
字段2 加密后的密码字符串
字段3 上次修改密码的时间(1970-1-1到达上一次修改密码的时间,所经历的天数)
字段4 密码的最短有效天数,默认0
字段5 密码的最长有效天数,默认99999
字段6 密码过期前的警告天数,默认7
字段7 密码过期后多少天禁用此用户账号
字段8 账号失效时间,默认值为空
字段9 保留字段(未使用)用户初始配置文件
~/.bashrc 每次进入新的Bash环境时执行(开启新的终端)
vim /root/.bashrc #root用户新开终端会首先执行,其他用户需在/home/用户/.bashrc修改
alias hn='hostname'
/etc/bashrc 全局配置文件,影响全体用户(开启新的终端)
vim /etc/bashrc删除用户
userdel -r 用户名
userdel -r nsd01 #连同家目录一并删除
userdel nsd02 #不删除家目录,只删除用户信息手动建立用户家目录
/etc/skel 是新建用户时,会以此目录作为模板建立用户家目录
useradd natasha
rm -rf /home/natasha/
cp -r /etc/skel /home/natasha
chown -R natasha:natasha /home/natasha/ #设置为用户权限
组账户管理
/etc/group 保存组账号的基本信息
stugrp:x:1503:nsd06,nsd11,nsd17
组名:组密码占位符:组的GID:组成员列表
gpasswd 选项... 组名
-a 添加组成员,每次只能添加一个
gpasswd -a 用户名 组名
-d 删除组成员,每次只能删除一个
gpasswd -d 用户名 组名
-M 定义(重置)组成员用户列表,可设置多个用户
gpasswd -M '' 组名 #删除组成员中所有成员
-A 定义组管理员列表(组管理员可以属于此组也可以不属于此组)
用户nsd01要将用户nsd02加入tarena组,但是nsd01没有权限,可以在root下执行
gpasswd -A nsd01 tarena #这是nsd01为管理员
gpasswd -A 'nsd01,nb' tarena #设置nsd01和nb为管理员
删除组
groupdel 组名/etc/gshadow 组的管理信息配置文件
grep tarena /etc/gshadow
tarena:!:nb:kaka
组名:密码加密字符串:组的管理员列表:组成员列表总结
/etc/passwd:用户基本信息配置文件
/etc/shadow:用户密码信息配置文件,密码的详细配置
/etc/group:组基本信息配置文件
/etc/gshadow:组管理信息配置文件权限
基本权限与归属
读取 允许查看内容 -read r
写入 允许修改内容 -write w
可执行 允许运行和切换 -excute x
对于文本文件
r读取权限:cat、less、grep、head、tail
w写入权限:vim、>、>>
x可执行权限:shell与Python
对于目录:
r读取权限:ls命令查看目录内容
w写入权限:能够创建、删除、修改目录的内容
x执行权限:能够cd切换到此目录下(进入此目录)
归属关系
所有者(属主):拥有此文件/目录的用户 -user
所属组(属组):拥有此文件/目录的组 -group
其他用户:除所有者、所属组以外的用户 -other查看数据权限
d rwx r-x rwx . 文件权限格式
d对应目录,-对应文本文件,l对应快捷方式
rwx是user权限
r-x是group权限
rwx是other权限
. 是否这是acl策略,设置了为+号
r w x 分别对应4 2 1修改权限
chmod [ugoa][+-=][rwx] 文件
-R 递归设置权限,文件夹内所有文件需要用此参数
ugoa对应user group other all(所有人)
chmod u-w /nsd10
chmod g=r /nsd10
chmod a=rwx /nsd10
chmod u=---,g=rx,o=rwx /nsd10修改归属关系
chown命令
-R 递归修改归属关系
chown 属主 文件... 修改文件的属主
chown 属主:属组 文件... 同时修改文件属主和属组
chown :属组 文件... 修改文件属组
chown -R zhangsan /opt/aa 递归修改aa文件夹下所有文件的属主linux判断用户具备的权限规则
1、首先查看该用户或者组是否有acl权限
2、查看用户,对于该数据所处的身份,所有者>所属组>其他人,原则是匹配及停止
如果某文件权限为---rwx---,所属主为zhangsan,所属组为xingming
即使zhangsan在xingming组里面,匹配的时候由于先匹配到所有者,所以就会停止,zhangsan即使属于xingming组也没有对文件的操作权限ACL策略
文档归属的局限性
任何人只属于三种角色:属主、属组、其他人
针对特殊的人实现更精细的控制
acl策略能够对个别用户、个别组设置独立的权限setfacl命令
setfacl 选项 u:用户名:权限 文件...
setfacl 选项 g:组名:权限 文件...
-m 修改acl策略
-x 清除指定acl策略
setfacl -x u:用户名 文件
-b 清除所有已设置的acl策略
setfacl -b 文件
-R 递归设置acl策略
setfacl -Rm u:用户名:权限 文件
setfacl -m u:lisi:--- /home/public 设置黑名单
getfacl /目录 查看目录acl策略附加权限(特殊权限)
粘滞位 Sticky Bit权限
占用其他人(Other)的x位
显示为t或T,取决于其他人是否有x权限
适用于目录,用来限制用户滥用写入权
在设置了t权限的目录下,即使用户有写入权限,也不能删除或改名其他用户文档
chmod o+t 目录
Set Gid权限(SGID)
占用所属组(Group)的x位
显示为s或S,取决于属组是否具有x权限
对目录有效
在一个具有SGID权限的目录下,新建的文档会自动继承父目录的属组身份
chmod g+s 目录
Set Uid权限(SUID)了解
占用属主(User)的x位
显示未s或S,取决于属主是否有x权限
仅对可执行的程序有意义
当其他用户执行带SUID标记的程序时,具有此程序属主的身份和相应权限新建文件文件默认均不给x执行权限
其他取决于umask(权限掩码)的设置
新建目录默认权限是755
新建文件默认权限是655
umask 查看umask
umask -S 显示新建目录的默认权限
umask 077 #对应实际权限为770
创建目录时,指定目录的权限
mkdir -m 700 /opt/abc03
-m 无视umask值创建数据指定数据的权限磁盘
lsblk
列出当前系统识别的硬盘 (lsblk 列出当前所以的块设备)blkid
blkid /dev/vb2
查看文件系统类型,全称是 Block ID。查询和显示块设备(如硬盘、分区)的属性信息df -h
df -h /mypart1 全称是 Disk Filesystem。显示 文件系统 的磁盘空间使用情况。流程
识别硬盘 -- 分区规划 -- 格式化 -- 挂载使用分区格式化流程
分区规划
分区方案:MBR与GPT
MBR分区模式
分区类型:主分区、扩展分区(内有逻辑分区)
全不主分区最多只能有4个主分区
扩展分区可以没有,至多有一个
1~4个主分区,或者3个主分区+1个扩展分区(n个逻辑分区)
最大支持容量为2.2TB的磁盘
扩展分区不能格式化,空间并不能直接存储数据
可以用于存储数据的分区:主分区与逻辑分区

fdisk 划分分区
常用交互指令:专门用来划分MBR分区模式
m 列出列表帮助
p 查看现有的分区表
n 新建分区
d 删除分区
q 放弃更改并退出
w 保存更改并退出
格式化磁盘
给空间创建文件系统的过程
文件系统:数据在空间存放的规则
Windows常见文件系统:NTFS FAT(兼容性强)
Linux常见文件系统:ext4(6系列) xfs(7系列以上) FAT
分区后的分区直接存在于 /dev/ 目录下,而不是以物理路径的形式组织
mkfs. (tab)(tab) 连续按两次tab键,可以查看支持的格式
mkfs.ext4 /dev/vdb1 格式化文件系统ext4格式
mkfs.xfs /dev/vb2 格式化文件系统xfs
mkfs.xfs -f /dev/vb2 强制格式化/dev/vb2开机自动挂载
vim /etc/fstab
/dev/sdb1 /mypart1 ext4 defaults 0 0
UUID=332000a3-0102-4fb8-9cf7-5352b9a82093 /d1 ext4 defaults 0 0 更推荐这种方式
| 列序 | 示例值 | 含义解释 |
|---|---|---|
| 1 | /dev/sdb1 | 文件系统(设备):指定要挂载的块设备。这里指的是第一块 SATA/SCSI 硬盘 (sdb) 上的第一个分区 (p1)。注意:更推荐使用 UUID 来代替设备名,因为设备名(如 sdb1)可能会变动。 |
| 2 | /mypart1 | 挂载点:指定设备要挂载到的目录。这个目录必须事先存在,否则挂载会失败。 |
| 3 | ext4 | 文件系统类型:指定设备上使用的文件系统类型。常见的有 ext4, xfs, btrfs, vfat, ntfs, swap 等。 |
| 4 | defaults | 挂载选项:这是一个复合选项,包含了最常用的设置(相当于 rw,suid,dev,exec,auto,nouser,async)。这是最常用的选项。 |
| 5 | 0 | dump 备份:决定文件系统是否需要用 dump 工具进行备份。0 表示忽略,不备份。1 表示需要备份。通常设为 0。 |
| 6 | 0 | fsck 检查顺序:决定系统启动时 fsck 检查文件系统的顺序。0 表示不检查。根文件系统 / 应该设为 1,其他文件系统通常设为 2 或 0。 |
GPT分区模式
全局唯一标识分区表
突破固定大小64字节的分区表限制
可支持4个以上的主分区,最大支持18EB的容量
1EB = 1024PB = 1024 *1024 TB
parted划分分区
-help 查看指令帮助
-mktable gpt 建立指定模式分区表
-mkpart 分区的名称 文件系统类型 start end 指定大小或百分比%作为起始、结束位置
-print 查看分区表
-rm 序号 删除指定的分区
-quit 退出交互换环境
parted进行分区
[root@localhost ~]# parted /dev/vdd
(parted) mktable gpt #指定分区模式
(parted) mkpart #划分新的分区
分区名称? []? haha #随意写,不写也可以
文件系统类型? [ext2]? ext4 #随意写,不会进行格式化
起始点? 0
结束点? 5G
忽略/Ignore/放弃/Cancel? Ignore #选择忽略,输入i(tab)补全
(parted) print #查看分区表信息
(parted) unit GB #使用GB作为单位
(parted) print
(parted) mkpart #划分新的分区
分区名称? []? haha
文件系统类型? [ext2]? ext4
起始点? 5G #为上一个分区的结束
结束点? 100% #全部空间
(parted) print
(parted) quit #退出
[root@localhost ~]# lsblk swap 交换空间
利用硬盘的空间,充当内存的空间
当物理内存占满了,可以将内存的中数据,暂时放入交换空间中,缓解真实物理内存的压力
利用硬盘分区制作交换空间
对分区后的/dev/sdb2 进行格式化交换文件系统
mkswap /dev/sdb2 格式化命令
blkid /dev/sdb2 查看格式化后的文件系统格式 为swap
swapon 查看交换空间组成的成员信息
swapon /dev/sdb2 启用交换分区
free -h 查看交换空间的大小
swapoff /dev/sdb2 停用交换分区
开机自动启用交换分区
vim /etc/fstab
UUID=94f2b445-e6d7-4f2f-a9dd-1a4c20bcecf0 swap swap defaults 0 0逻辑卷
整合分散的空间,空间支持扩大
制作过程:将众多的物理卷(PV)组建成卷组(VG),再从卷组中划分出逻辑卷(LV)
制作逻辑卷
虚拟机新建80G,3个10G主分区,2个20G逻辑分区
建立卷组
格式: vgcreate 卷组名 设备路径......
vgcreate systemvg /dev/sda[1-2]
pvs 查看系统所有物理卷信息
vgs 查看系统卷组信息扩展卷组
vgextend systemvg /dev/sda{3,5,6}
[root@192 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/nvme0n1p2 rl lvm2 a-- <19.00g 0
/dev/sda1 systemvg lvm2 a-- <10.00g 0
/dev/sda2 systemvg lvm2 a-- <10.00g 1.99g
/dev/sda3 systemvg lvm2 a-- <10.00g <10.00g 新增
/dev/sda5 systemvg lvm2 a-- <20.00g <20.00g 新增
/dev/sda6 systemvg lvm2 a-- <20.00g <20.00g 新增
[root@192 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
rl 1 2 0 wz--n- <19.00g 0
systemvg 5 1 0 wz--n- 69.98g 51.98g 新增后硬盘从20G变成70G
建立逻辑卷
lvcreate -L 16G -n vo systemvg
创建逻辑 指定大小为16G 指定逻辑卷名称为vo 从那个卷组创建逻辑卷
vgs 查看卷组信息
lvs 查看逻辑卷信息使用逻辑卷
ls -l /dev/systemvg/vo 查看逻辑卷
mkfs.xfs /dev/systemvg/vo 格式化xfs文件系统
blkid /dev/systemvg/vo 查看文件系统类型
临时挂载使用
mount /dev/systemvg/vo /mydvd
永久挂载
vim /etc/fstab逻辑卷扩展
df -h | grep vo
/dev/mapper/systemvg-vo 16G 147M 16G 1% /mydvd
lvextend -L 18G /dev/systemvg/vo
将逻辑卷vo从16G扩展到18G
vgs 查看systemvg 卷组还剩1.99G可用
[root@192 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
rl 1 2 0 wz--n- <19.00g 0
systemvg 2 1 0 wz--n- 19.99g 1.99g
xfs_growfs /dev/systemvg/vo 刷新xfs文件系统
resize2fs /dev/systemvg/vo 刷新ext4文件系统删除
逻辑卷的删除
正在挂载使用的逻辑卷不能删除
lvremove /dev/systemvg/vo卷组删除
删除卷组的前提:基于此卷组创建的所有逻辑卷,要全部删除
vgremove systemvg #删除卷组物理卷删除
pvremove /dev/vdb{1,2,3,5,6}逻辑卷补充
逻辑卷支持缩减
xfs文件系统:不支持缩减
ext4文件系统:支持缩进啊
卷组划分空间的单位PE
默认1个PE的大小为4M
vgchange -s 1M systemvg #卷组已存在修改PE大小,用于创建具体空间
创建卷组时指定PE大小
vgcreate -s 1M systemvg /dev/vdb[1-2]
vgdisplay systemvg 查看卷组详情信息
创建一个250M的逻辑卷,名字为lvredhat
lvcreate -L 250M -n lvredhat systemvg
[root@192 ~]# lvs
LV VG Attr LSize
root rl -wi-ao---- <17.00g
swap rl -wi-ao---- 2.00g
lvredhat systemvg -wi-a----- 250.00m 新创建的lvredhat
vo systemvg -wi-ao---- 25.00g进程管理
程序:静态没有执行的代码 磁盘空间
进程:动态执行的代码 CPU与内存资源
父进程与子进程
进程编号:PID
查看进程信息
pstree 查看进行
-p 列出对应进程的PID编号
-a 显示完整的命令好
pstree -p wanglong 显示王龙用户开启的进程
systemd(PID永远为1):所有进程的父进程ps
格式 ps [选项]...
常用命令选项
aux a显示当前终端所有进程 u以用户格式输出 x当前用户在所有终端下的任务
-elf -e显示系统内所有进程 -l以长格式输出信息 -f包括最完整的进程信息top 动态查看工具
top -d 刷新秒数 -u 用户名
按大写P进行cpu排序
按大写M进行内存排序pgrep
格式 pgrep 选项... 查询条件
常用命令选项
-l 输出进程名,而不仅仅是PID
-u 检索指定用户的进程
-x 精确匹配完整的进程名
pgrep -l ab #显示进程名包含ab的进程
pgrep -l sys #显示进程名包含sys的进程
pgrep -u lisi #显示lisi用户开启的进程进程前后台调度
•&符号:正在运行的状态放入后台
•Ctrl + z 组合键:挂起当前进程(暂停并转入后台)
•jobs 命令:查看后台任务列表
•fg 命令:将后台任务恢复到前台运行
•bg 命令:激活后台被挂起的任务
[root@localhost ~]# sleep 2000
^Z #按Ctrl+z 暂停放入后台
[1]+ 已停止 sleep 2000
[root@localhost ~]# jobs #查看后台进程信息
[1]+ 已停止 sleep 2000
[root@localhost ~]# bg 1 #让后台编号为1 的进程继续运行
[1]+ sleep 2000 &
[root@localhost ~]# jobs
[1]+ 运行中 sleep 2000 &
[root@localhost ~]# fg 1 #让后台编号为1 的进程恢复到前台
sleep 2000
^C #按Ctrl+c 结束
[root@localhost ~]# sleep 3000 & #正在运行放入后台
[1] 35470
[root@localhost ~]# jobs
[1]+ 运行中 sleep 3000 &
[root@localhost ~]#
关闭进程
Ctrk+c 终端当前命令程序
kill -9 PID 通过PID终止
kill -9 %后台任务编号 通过作业编号终止后台任务
killall -9 进程名... 按进程名终止,批量终止所有匹配进程名的进程
pkill -9 查找条件 包含就算
pkill -9 "java" 按名字终止
pkill -9 "node.*app" 正则匹配终止
pkill -9 -u wangloong 按用户名终止网络
修改网卡命名规则
修改网卡命令规则为(eth0、eth1、eth2……)
ifconfig | head -2
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 00:0c:29:8a:72:4f txqueuelen 1000 (Ethernet)
vim /etc/default/grub #内核引导文件
……..此处省略一万字
GRUB_CMDLINE_LINUX="……quiet net.ifnames=0 biosdevname=0"
……此处省略一万字
grub2-mkconfig -o /boot/grub2/grub.cfg #重新生成网卡命名的规则
reboot #重启系统
ifconfig | head -2
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.81.132 netmask 255.255.255.0 broadcast 192.168.81.255
三种方式配置地址
1.nmcli
nmcli命令的使用:必须要使用nmcli命令的网卡命名(一般和网卡命名ifconfig相同)
nmcli方式:原则必须利用nmcli自己的命名,才能进行网络IP地址的设置
Linux系统内核将网卡命名成eth0,nmcli必须再为eth0网卡再起一个名字
规则:网卡的本名是什么,nmcli起的外号就是什么
nmcli connection show 查看网络命名的链接如果要将使用nmcli创建自己的命名,将网卡ens160 命名成eth0可以使用如下方法
nmcli connection show 查看默认命名
NAME UUID TYPE DEVICE
ens160 75082e17-905f-4087-8b68-120a98186d35 ethernet ens160
nmcli connection delete ens160 删除ens160链接
nmcli connection add type ethernet ifname ens160 con-name eth0
创建 类型以太网 网卡名字 nmcli起的外号
NAME UUID TYPE DEVICE
eth0 75082e17-905f-4087-8b68-120a98186d35 ethernet ens160
外号 实际网卡
修改ip地址、子网掩码、网关地址
nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.31.128/24 ipv4.gateway 192.168.88.0 autoconnect yes
修改 外号 手工配置 ipv4地址 ipv4网关 每次开机自动启用以上所有参数
nmcli connection up eth0 激活2.nmtui
3.配置文件修改
vim /etc/sysconfig/network-scripts/ifcfg-ens160
IPADDR=192.168.88.240
PREFIX=24
GATEWAY=192.168.88.222
ifdown eth0 #停用设备(名字为网卡实际名字)
成功断开设备 'eth0'。
ifup eth0 #启用设备(名字为网卡实际名字)
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/9)
ifconfig | head -2ssh远程登陆
rpm -qa | grep openssh
ssh root@192.168.31.2数据传递
scp=ssh+cp
scp [-r] 用户名@服务器:路径 本地路径 下载服务器路径到本地路径
scp [-r] 本地路径 用户名@服务器:路径 上传路径到服务器路径
ssh公钥
生成公钥与私钥进行验证
ssh-keygen 生成公钥和私钥 一路回车
ls .ssh/
id_rsa id_rsa.pub
私钥 公钥
虚拟机A将公钥传递给虚拟机B,这样A远程登陆B就不用输入密码了
ssh-copy-id root@192.168.31.2
ls /root/.ssh/ 虚拟机B查看
authorized_keys 虚拟机A传过来的密钥DNS
负责域名解析的服务器,将域名解析为ip地址
/etc/resolv.conf 指定DNS服务器地址配置文件常用网络命令
ip addredd show 查看ip(这是最原始的方法,在net-tools包没有【没有ifconfig】安装的情况下)
ip a s 简写
ip address add 192.168.10.1/24 dev ens160 临时添加ip(存储在内存,重启失效)
ip a a 192.168.20.1/24 dev ens160 简写
ip address del 192.168.10.1/24 dev ens160 删除临时ip
ping -c 4 192.168.88.2 -c指定ping的次数日志管理
•常见的日志文件
/var/log/messages 记录内核消息、各种服务的公共消息
/var/log/dmesg 记录系统启动过程的各种消息
/var/log/cron 记录与cron计划任务相关的消息
/var/log/maillog 记录邮件收发相关的消息
/var/log/secure 记录与访问限制相关的安全消息
通用分析工具
–tail、tailf、less、grep等文本浏览/检索命令
–awk、sed等格式化过滤工具
tailf:实时跟踪文件内容
echo 123456 > /opt/1.txt
tail -f /opt/1.txt
users、who、w 命令
–查看已登录的用户信息,详细度不同
last、lastb 命令
–查看最近登录成功/失败的用户信息
[root@server /]# users
[root@server /]# who
pts:图形命令行终端
[root@server /]# last #登录成功的用户
[root@server /]# lastb #登录失败的用户SELinux
Security-Enhanced Linux
美国NSA国家安全局主导开发,一套增强Linux系统安全的强制访问控制体系
集成到Linux内核(2.6及以上)中运行
基于SELinux体系针对用户、进程、目录和文件提供了预设的保护策略,以及管理工具
SELinux的运行模式
enforcing(强制) permissive(宽松)disabled(彻底禁用)
任何模式变成disabled模式都要经历重启系统
getenforce 查看SELinux模式
setenforce 0 临时切换为permissive模式
setenforce 1 临时切换为enforcing模式
永久修改(需要重启)
vim /etc/selinux/config
SELINUX=enforcing|permissive|disabled破解root密码
前提:必须是服务器的管理者,涉及重启服务器
1、重启系统进入救援模式
开启虚拟机,在加载界面按e键
2、在linux开头的行,将ro修改为rw 然后空格输入 rd.break
按ctel+x启动,会看到switch_root:/#
3、切换到硬盘操作系统环境
chroot /sysroot 切换环境,切换到硬盘操作系统的环境
4、重新设置root密码
echo 123456 | passwd --stdin root
5、如果SELinux是强制模式,才需要SELinux失忆,其他模式不需要让SELinux进行失忆
cat /etc/selinux/config #查看SELinux开机的运行模式
touch /.autorelable 让SELinux失忆
或将SELinux改成宽松模式也可以
6、强制重启系统完成修复
reboot -f 强制重启系统
评论0
暂时没有评论