linux基础部分(CentOS 7.x)
第一章 计算机硬件知识
服务器种类
硬件服务器
云服务器
服务器外观
机架式服务器
塔式服务器
刀片式服务器
dell服务器型号
时间 1U 2U
十年前 1850 1950 2850 2950
10-13年 R410/R610 R710 (11代)
14-至今 R420/R430 R620/R630 R720 R730
服务器组成
cpu 硬盘 内存 电源 主板 风扇 光驱 显卡 声卡
处理器
Cpu的 棵树 或者 个数 路
服务器cpu的个数2-4颗
笔记本i3 i5 i7
服务器 至强系列 E3 E5 E7
金牌 银牌 铜牌
内存
临时储存的地方 介于CPU和硬盘之间
运行的所有程序都会在内存中运行
程序 静态的内容 文档 视屏 可执行的程序 存放在磁盘的数据 称为程序
进程 把静态的内容运行起来 把系统的程序存放在内存中运行 称为进程
守护进程 持续不断的运行 称为守护进程
buffer && cache
buffer 写入数据到内存中 这个数据的内存空间称为缓冲区 写缓存
Cache 从内存读取数据,这个数据内存空间称为 缓存区 读缓存
raid 0 1
raid 0方法1 两块600G硬盘组合 1.2T 800G的文件损坏? 彻底损坏 无法恢复
raid 1方法2 两块600G硬盘组合只能使用600G 备份 同时写两份数据 1份损坏 另一块正常使用
安装操作系统方法
使用U盘
使用网络方式安装
使用批量化自动化安装操作系统kickstar cobbler
第二章 linux发展史
69年在贝尔实验室unix诞生
谭宁邦 写了minix
斯托曼 FSF 自由软件基金会
托瓦兹 创建linux内核
GNU #GNU is not unix 没有流行 组件流传了下来 bash gcc awk
GPL 通用公共许可
unix优点
技术成熟 可靠性高
极强的可伸缩性
强大的网络功能
开发功能
数据库支持能力
发行版本
Ubuntu 开发人员
Redhat或centos 服务器多
Debian 或 FreeBSD 安全人员使用 多用于渗透 安全
SUSE 德国多 专业使用数据库 电子邮件网络
红旗 麒麟 中文版
面试题:Redhat与centos的区别
centos 是redhat一个分支
centos 是Redhat去掉logo和部分非自由软件在编译而成
centos免费版本
redhat部分收费
第三章 虚拟机创建&&xhsell排错
更改网卡
net.ifnames=0 biosdevname=0
分区
/boot 200
sawp 物理内存1.5倍
/ 剩下内存
xshell 排错
看IP
ping ip
改网卡
vmware服务
centos7 关闭NetworkManager
端口
无法上网
ping 网关
ping 公网
DNS域名解析
看网关
第四章 基本命令使用
路径
相对路径:当前路径
绝对路径:从根下的路径到指定的目录/文件路径
pwd 查看当前路径
cd 改变当前工作目录
ls 显示目录中的内容
- l 显示详细信息(等价于ll)
- r 逆向排序 a-z
mkdir 创建目录
-p 递归创建目录
touch 创建文件
cp 复制
- r 复制目录及目录下的文件所以 递归复制
echo 输出内容分到桌面
> 重定向 先清空 再写入
>> 追加重定向
{} 生成序列
cat 查看文件内容
- n 显示行号
tree 以树状图显示目录
-d 只显示目录
-F 在目录后面加上/ 用来区分目录或文件
-L 显示目录层级(加参数)
rm 删除文件或目录
-r 递归删除目录及目录下的文件
-f 强制删除不提示
mv 移动或者改名
第五章 Vim编辑器
打开文件
vim file.name
编辑
i o
退出
esc 到视图模式
保存
Shift + :
w 保存退出
q 退出
q! 强制退出
wq 保存并退出
wq! 强制保存并退出
vim 快捷键
光标的移动
G 快速移动到文件尾部
10G 快速移动到第十行
gg 1G 快速移动到行首
$ End 快速移动光标所在行的行尾
^ Home 0 快速移动光标所在行的行首
复制粘贴剪切删除 视图模式下
yy 复制当前光标所在行
2yy 复制光标所在连续两行
p 粘贴到光标所在行的下一行
3p 粘贴三次内容
dd 剪切光标所在的行
2dd 剪切光标所在的连续两行
d$ d+End 剪切光标所在到行尾
u 撤销操作
D 剪切光标所在到行尾
d^ d+home d0 删除光标所在到行首
dG 剪切光标所在行到文件尾部
dw 剪切一个单词
s 删除一个字母
x 删除一个字母
编辑模式
i a 进入编辑模式
o 进入光标所在行的下一行编辑
O 进入光标所在行的上一行编辑
C 删除光标所在行行尾并进入编辑模式
A 移动到行尾并进入编辑模式
cc 删除整行进入编辑模式
批量操作
1.ctrl + v 选中行
2.按大写I
3.输入要添加的内容
4.按两次esc
1.ctrl + v 选中行
2.r
3.输入替换内容
vim 不正常退出
1.直接删除.swp 文件 进行编辑 新写入的内容会消失
2.如何恢复
vim -r oldboy.txt 按回车保存退出
删除.swp 文件即可
第六章 目录结构
挂载磁盘
mount /dev/cdrom /mnt/
网卡配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet #网络类型 以太网
BOOTPROTO=none #获取ip地址
三种配置方法
1.none 静态
2.DHCP 动态获取
3.static 静态
NAME=eth0 #配置文件名 网卡名称
DEVICE=eth0 #硬件网卡名称
UUID=842a0ef2-ed4b-4fb4-aa1b-8d4e70b0eacd
#唯一标识 系统为每一个硬件设备分配唯一标识(克隆虚拟机删除)
ONBOOT=yes #开机自动启动
IPADDR=10.0.1.200 IP地址 局域网内唯一 公网上唯一
PREFIX=24 #子网掩码 决定我们网络中可使用ip地址数量
GATEWAY=10.0.1.254 #网关 大门口
DNS1=10.0.1.254 #域名解析服务器 可快速方便访问服务器
负责把域名解析为ip地址
/etc/hosts 本地解析配置文件 DNS解析 解析主机名称
/etc/hostname 主机名称配置文件
1.如何查看当前主机名
hostname centos6/7 想同
2.如何临时修改主机名
hostname 主机名 centos6/7 相同
3.如何永久修改主机名
vim /etc/hostname centos7重启生效
vim /etc/sysconfig/network cetnos6
4.如何临时+永久修改主机名
hostname set-hostname 主机名 centos7
hostname 先临时修改 再更改配置文件
vim /etc/sysconfig/network cenros6
/ect/resolv.conf 配置DNS服务器的配置文件
/etc/rc.local 开机自启执行文件中命令
/etc/fstab 磁盘挂载配置文件 开机自动挂载
/etc/issue 登录服务器前显示的内容
/etc/issue.net 登录服务器前显示的内容
/etc/moth 连接服务器后显示的内容
/etc/inittab 服务器开机后运行级别
centos 6.x
0 关机
1 单用户模式 救援模式 忘记密码
2 多用户模式 没有NFS网络支持
3 完全多用户模式 默认使用
4 待开发
5 桌面模式
6 重启
centos 7.x
0 poweroff.target
1 rescue.target
2 multi-user.target
3 multi-user.target
4 mulit-user.target
5 graphical.target
6 reboot.target
1.如何查看当前的运行级别
centos 6 查看方法
cat /etc/inittab
id:3:initdefault:
centos 7 查看方法
root@oldboyedu ~#: systemctl get-default
multi-user.target
2.如何临时修改启动级别centos 6 / 7相同
init 0 关机
init 5 桌面
init 6 重启
3.如何永久修改运行级别 开机后自动运行那个功能那个级别
centos 6 配置方法
vim /etc/inittab id:3:initdefault:
centos 7 配置方法
systemctl set-default runlevel5.target
/etc/profile 环境变量 开机自动运行
/etc/bashrc 环境变量 别名
.bashrc 环境变量 针对当前登录用户生效
.bash_profile 环境变量 针对当前登录用户生效
/var variable 变化的 日志文件
/var/log/messages 日志信息 记录了系统运行的记录
/var/log/secure 系统的安全日志
/proc/cpuinfo 处理器的一些信息
/proc/meminfo 查看内存信息
/proc/loadavg 平均负载
/proc/mounts 了解 系统挂载的详细信息
第七章 安装方式
yum 安装
yum -y install package.name
yum 卸载
yum -y remove package.name
yum 查找包名
yum provides package.name
rpm 安装
rpm 安装方式
rpm -ivh package.name
-i install
-v 显示安装过程
-h 人类可读模式
rpm -qa 查看软件是否安装
-q 查看
-a 所有
-l 列表
rpm 卸载软件
rpm -e package.name
编译安装
.configure make makeinstall
第八章 虚拟机优化
yum 源
yum repolist #查看当前使用的软件仓库
rpm -qa #查看已安装的软件
yum list #查看这个仓库有什么软件可装
更改yum源为阿里云源
备份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
下载新仓库到本地
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
Selinux
如何查看当前selinux是否开启
getenforce
如何临时关闭selinux
setenforce Permissive
setenforce 0
永久关闭selinux 需要重启
/etc/selinux/conf
enforcing # 开启状态 运行中
permissive # 关闭状态但是会提示警告信息
disabled # 完全关闭状态
SELINUX=disabled
防火墙
centos6.x iptables
centos7.x firewalld
如何查看当前防火墙是否运行
systemctl status firewalld
中间的常用命令
start 开启
stop 停止
restart 重启
reload 加载
status 状态
systemctl is-active firewalld # 查看防火墙运行状态
如何临时关闭防火墙
systemctl stop firewalld
永久关闭防火墙
systemctl disable firewalld
如何查看是否开机禁止启动防火墙
systemctl status firewalld.service 第二行显示 enabled 开机自动启动
[root@alexlnb ~]#systemctl is-enabled firewalld.service
enabled
禁止启动
systemctl disable firewalld.service
centos6 iptables的关闭和禁止启动
centos6
/etc/init.d/iptables stop
service iptables stop
chkconfig iptable off
/etc/init.d/iptables status # 查看状态
字符集
如何查看系统默认的字符集 centos7
[root@alexlnb ~]#echo $LANG
en_US.UTF-8
临时修改默认的字符集
LANG='zh_CN.UTF-8'
永久修改字符集
/etc/locale.conf
LANG="en_US.UTF-8"
centos 6 修改字符集
临时修改
echo $LANG
LANG='zh_CN.UTF-8'
永久修改字符集
/etc/sysconfig/i18n
source /etc/sysconfig/i18n
第九章 vim进阶和文本命令
vim 底行模式
:set nu 显示行号
:set nonu 取消显示行号
ZZ 保存并退出
搜索
/ 搜索的内容
n 查找下一个内容 往下查找
N 查找上一个内容 往上查找
1copy10 # 把第一行的内容复制到第10行的下面 简写co
1,3copy10 # 把第一行到第三行的内容复制到第10行的下面
1move10 # 把第一行的内容移动到第10行的下面 简写mo
1,3move10 # 把第一行到第三行的内容移动到第10行的下面
1d # 删除第一行的内容
1,5d # 删除第一行到第五行的内容
取消高亮
:noh
替换
s###g # s替换标志 g 全局替换
cat 查看文本内容
-n 显示行号
-A 在行尾加上$ 表示行结束
less 查看文本内容(大文件)
-N 显示行号
空格 f 显示下一页内容
b 显示上一页内容
gg 快速移动到首页
100G 快速到100行
g 快速移动到第一页
G 快速移动到文件的底部
/ 搜索
n 查找下一个内容
N 查找上一个内容
q 退出
more 查看内容一页一页显示
f 往下翻页
b 往上翻页
空格 往下翻页
head 默认显示前十行
-n 显示文件的行数 可简写 -2 -n2
-c 显示文件的前n个字符 不常用
tail 默认显示文件后十行
-n 显示文件的行数 简写-2 -n2
-f follow 实时显示文件的内容变化
-F 实时显示文件内容的变化 监控文件 文件不存在会时时等待文件的出现
tailf === tail -f
tailf 不读磁盘 速度快
tail -f 读磁盘 速度慢
seq 生成序列
tr 替换不能对文件进行操作 1 对 1
-d 删除内容
-c 取反
特殊符号
. 代表当前的目录
.. 代表上一级目录
# 注释 不生效的内容 shell编程的第一行有用 root用户提示符
~ 代表家目录
$ 代表普通用户提示符
> 重定向
>> 追加重定向
< 输入重定向
- 上一次所在的目录
| 前面命令的输出 作为后面命令的使用
\ 转义字符
alias 别名
永久定义别名
把配置写入/etc/profile中
环境变量的生效顺序 /etc/profile-> /etc/bashrc
第十章 文件属性
indoe 节点
33575001 inode
文件的类型
rw-r--r-- 文件的权限
. selinux
1 硬链接个数
root 属主
root 属组
18 文件的大小
12月 12 20:37 时间
bash.sh 文件名
inode index node # 存放着文件的属性和文件具体的位置的指针 不包含文件名
block 快 文件的具体存放位置
文件类型
- 普通文件
drwxr-xr-x d 目录 directory
lrwxr-xr-x l 软链接
brw-rw---- b 快设备
crw-rw-rw- c 字符设备
p 管道设备
文件相关命令
which 查看命令的全路径
file 查看文件的类型
whereis 查看文件的具体位置和文件的帮助
第十一章 文件查找之find
find 查找命令
find 在哪里找 -类型 f -名字 "1.txt"
-name # 按名称查找 test.txt
-iname # 查找到的内容不区分大小写
-size # 按照大小查找 -b -k -M -G
-maxdepth # 按最大的深度等级查找
-mtime # 按照文件的修改时间查找modify
-类型 -type
f 普通文件
d 目录
按名称查找
find /tmp/ -type f -name "test.txt"
按文件的后缀查找 所有.txt结尾的文件
find /tmp/ -type f -name "*.txt"
不区分大小写搜索
find /tmp/ -type f -iname "*.txt"
按照大小查找 -size
find ./ -type f -size +100k # 查找当前目录 大小100k的文件
按时间查找
find -type f -mtime +7 -mtime -30 #查找7-30内的文件
移动
find ./ -type f -size +1M|xargs -i mv {} /tmp
mv `find /tmp/ -type f -name "7.txt"` .
find /tmp/ -type f -name 8.txt -exec mv {} /opt \;
删除
find /tmp/ -type f -name "5.txt"|xargs rm
rm `find ./ -type f -name 7.txt`
find ./ -type f -name "3.txt" -exec rm {} \;
复制
find /tmp/ -type f -name "6.txt"|xargs -i cp {} .
cp `find /tmp/ -type f -name 8.txt` .
find ./ -type f -name "4.txt" -exec cp {} /tmp \;
序列匹配
find /tmp -type f -name '[1-8].txt' # 匹配1-8以.txt结尾的文件
df -i 查看indoe使用情况
df -h 查看block使用情况
第十二章 软硬链接
硬链接
硬链接的特点:
1)在相同文件系统中具有相同inode号的文件 互为硬链接 ll -i
2)相当于文件的多个入口 类似于超市的多个入口
3)文件默认的硬链接为1 目录默认的硬链接为2 且目录无法做硬链接(会出现循环)
4)删除源文件和目标文件任意一个文件 文件不会真正的删除
5)只有同时删除源文件和目标文件 文件才会被删除 (普通文件)
6)删除源文件和目标文件 并且没有被系统或程序调用 则被真正删除 进程调用
7)如果删除文件的空间在存放其他文件 则被删除文件无法恢复 或者使用fsck命令进程磁盘检查 空间也会被系统回收
8)硬链接文件是普通文件 使用rm删除即可
9)硬链接为防止文件的误删做的备份
10)不能跨文件系统
软链接
软链接特点:
1)Inode号不同
2)类似于windows的快捷方式 里面存放了源文件的指针指向
3)删除软链接文件不影响源文件
4)删除源文件则文件被真正的删除 软链接不会删除 但是不可用
5)做软链接尽量使用全路径
6)删除一定要注意不能删除源文件(>后面的为源文件)
权限讲解
-rw-r--r-- 1 root root 58 Dec 28 16:10 1.pl
主 组 其他 主 组 大小 时间 文件名
Access: 访问时间 cat查看 当文件无修改 则时间不会变
Modify: 修改时间 vim echo 修改
Change: 属性的修改时间 属性信息 -rw-r--r-- 1 root root 1.3M Dec 18 10:53
为什么目录的硬链接数为2
每个目录下都有一个硬链接"."号,和对应上级目录的硬链接".."
在父目录里创建一个子目录,父目录的链接数增加1(每个目录里都有..来指向父目录)。但是在父目录里创建文件,父目录的链接数不会增加
第十三章 打包压缩
tar
z 使用gzip压缩
c create 创建
v 显示过程 verbose
f 指定压缩文件
解包:tar zxvf FileName.tar
打包:tar czvf FileName.tar DirName
gz
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName
.tar.gz .tgz
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName
bz2
解压1:bzip2 -d FileName.bz2
解压2:bunzip2 FileName.bz2
压缩: bzip2 -z FileName
.tar.bz2
解压:tar jxvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName
bz
解压1:bzip2 -d FileName.bz
解压2:bunzip2 FileName.bz
.tar.bz
解压:tar jxvf FileName.tar.bz
zip
解压:unzip FileName.zip
压缩:zip FileName.zip DirName
第十四章 通配符
命令1|命令2 ###管道符号 传递的是普通的字符串,文本 来自于前一个命令
|xargs ###管道符号 与xargs 传递的是把字符串变成了 文件名
. #当前目录,任意一个字符(正则)
.. #当前目录的上一级目录
* #任意0个或多个字符(文本)(通配符)
> #输出重定向 会清空原来的内容 然后在向文件里面追加内容
>> #追加输出重定向 追加到文件的最后一行
< #输入重定向 tr xargs
<< #cat 用来给文件追加多行文本
# #注释 linux会忽视他。给人看的。解释说明。
# root 超级用户的 提示符
$ shell
$变量 ====>取变量里面的内容
手 鞋盒子 拿出鞋 ====>取变量里面的内容
&& # 前面的命令执行成功 则执行后面的命令 不成功则不执行后面的命令
cd /backup && ls 如果backup存在则执行ls 如果backup不存在 则不行ls
|| # 前面的命令执行失败 则执行后面的命令 不失败则不执行
cd /backup || mkdir backup 如果cd执行失败 则创建目录backup
如果cd成功 则不会执行后面的创建命令
; # 前面的命令成功和失败 都会继续执行后面的命令
cd /backup;ls /opt 不管cd是否成功 都会继续执行分号后面的命令
"" # 大部分都是字符串 能解析变量 不能解析通配符
错误重定向 正确重定向 &>/dev/null 定向到空
ls > test.txt # 命令执行的结果为正确的才可重定向到test.txt
1> 只接收正确的结果 重定向 前清空在写入
1>> 只接收正确的结果 追加
2> 只接收错误的结果
2>> 只接收错误的结果 追加
'' 输出不解析变量 所见即所得
"" 解析变量 不能解析通配符
不加引号和加双引号类似 能解析变量 但是能解析通配符
`` 执行命令 把命令的结果留在原地 其他命令调用 和$()相同
第十五章 正则符号
基础正则
^ 以什么什么开头
$ 以什么什么结尾的行
' ' 过滤空格 不显示空行
^$ 表示空行
. 过滤任意一个字符 不会匹配空行
* 前面的字符串出现0次或0次以上
.* 所有 包含空行
[] 匹配中括号中的任意一个字符
扩展正则
[^] 取反 中括号和默认语句'' 都不会匹配空行
+ 前面的字符出现1次或1次以上
{} 匹配次数
第十六章 三剑客
grep 过滤字符串
-r 递归搜索
-v 取反
-o 显示匹配过程
-n 显示过滤出内容的行号
-w 统计单词
-i 不区分大小写
-c 过滤内容的总行数
格式
grep -参数 '字符串' 文件名
过滤1
[root@alexlnb ~]#grep '1' test.txt
1
10
查找空行
grep ^$ logs.log
查找以leo开头的行
grep ^leo logs.log
sed 替换,查找
-e 指定多命令
-f 指定命令文件
-i 修改源文件
-n 取消默认输出
-r 支持扩展正则
p 打印
d 删除 临时删除
c 替换
s 全局替换g
a 追加 在当前行的下一行插入内容
i 插入 在当前行插入新的内容
sed -参数 '字符串' 文件
查找第三行
sed '3p' file
查找1到3行
[root@alexlnb ~]#sed -n '1,3p' 1.txt
111111111111
2222222222
333333333333
明确匹配最后一行
[root@alexlnb ~]#sed -n '$p' 1.txt
55555555555555
模糊匹配// 字符串匹配
sed '/字符串/p' file
[root@alexlnb ~]#sed -n '/lizhenya/p' oldboy.txt
I am lizhenya teacher!
our site is http:www.lizhenya.com
lizhenya
匹配显示lizhenya的行到test之间的行
lizhenya
fags
gswgsreh
test
删除第 2 行
sed '2d' test.txt
匹配每一行的第一个old替换为new
sed 's/old/new/' test.txt
如何匹配出 10.0.1.200 255.255.255.0
inet 10.0.1.200 netmask 255.255.255.0 broadcast 10.0.1.255
root@13k ~#: ifconfig|sed -n '2p' |sed -r 's/^.*inet (.*) net.* (.*) bro.* /\1\2/g'
10.0.1.200 10.0.1.255
awk 查找
NR 行
NF 列
== 等于
> 大于
< 小于
>= 大于等于
<= 小于等于
!= 不等于
&& 并且
|| 或者
awk '{print $n}' 文件
取第一行到第五行
[root@alexlnb ~]#awk 'NR<6' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
取第一列
[root@alexlnb ~]#awk '{print $1}' 1.txt
oldboy
lizhenya
1
5
指定分隔符取列
[root@alexlnb ~]#cat 2.txt
oldboy
[root@alexlnb ~]#awk -F "d" '{print $1}' 2.txt
ol
搜索匹配
[root@alexlnb ~]#awk '/root/' test.txt
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
查找以root开头的行
[root@alexlnb ~]#awk '/^root/' test.txt
root:x:0:0:root:/root:/bin/bash
查找以root开头的行 并打印第一列和最后一列
[root@alexlnb ~]#awk -F: '/^root/{print $1,$NF}' test.txt
root /bin/bash
数字比较
[root@alexlnb ~]#awk '$1>2' 2.txt
4 5 6
3 1 2
查看行号
awk '{print NR,$0}' test.txt
第十七章 开机流程
Centos6.X init
串行启动 如果某一项服务挂掉 无法启动 则后面的全部无法正常启动
centos7.X systemd
并行启动 如果某一项服务挂掉 不影响系统正常启动
开机流程centos 6
开机BIOS自检
MBR引导
grub引导菜单
加载内核kernel
启动init进程
读取inittab文件,执行rc.sysinit,rc等脚本
启动mingetty,进入系统登陆界面
开机流程centos 7
按下电源
开机自检
MBR引导
GRUB菜单
加载内核
启动systemd
读取systemd/system文件
初始化 /usr/lib/systemd/system
并行 启动服务
进入登陆界面
第十八章 用户管理
让一个命令或者一个服务开机自启动
/etc/rc.local 需要给源文件x权限 可执行命令 服务启动 脚本
chkconfig iptables on 开机启动
systemctl enable firewalld 开机启动
/etc/profile 开机加载 或者重新打开窗口连接 重新加载
用户分类
管理员 root
虚拟用户
普通用户
useradd 创建用户
-u 指定uid
-g 指定gid
-s 指定解释器
-M 不创建家目录
passwd 创建密码
交互式
passwd 用户 密码
非交互式
echo 密码 | passwd --stdin 用户
usermod 修改用户信息
-s 修改解释器
-u 修改用户uid
-g 修改属于组
-G 属于多个组
chown 修改用户属主属组
-R 递归
groupadd 添加用户组
-g 指定组ID
groupdel 删除用户组
userdel 删除用户
-r 连根拔起 用户和家目录一并删除
第十九章 批量化创建用户
普通创建
非交互式创建
echo 123456|passwd --stdin oldboy
sed 批量创建用户
echo test{01..10}|xargs -n1|sed -r 's#(.*)#useradd \1;echo 123456|passwd --stdin \1#g'|bash
sed 批量删除用户
echo oldboy{1..10}|xargs -n1|sed -r 's#(.*)#userdel -r \1#g'|bash
awk 批量创建用户
echo oldboy{1..10}|xargs -n1|awk '{print "useradd " $1";echo 123456|passwd --stdin " $1}'|bash
awk 批量删除用户
echo oldboy{1..10}|xargs -n1|awk '{print "userdel -r " $1}'|bash
随机模块
$RANDOM 0 - 32767
echo $RANDOM
高级创建
非交互式创建
useradd oldboy;echo `echo $RANDOM|md5sum|cut -c1-8`|passwd --stdin oldboy
sed 批量创建用户
echo test{1..10}|xargs -n1|sed -r 's#(.*)#useradd \1;pass=`echo $RANDOM|md5sum|cut -c1-8`;echo $pass|passwd --stdin \1;echo \1 $pass >>passwd.txt#g'|bash
sed 批量删除用户
for i in {1..10};do userdel -r test$i;done
awk 批量创建用户
echo test{1..10}|xargs -n1|awk '{print "useradd "$1";pass=`echo $RANDOM|md5sum|cut -c1-8`;echo $pass|passwd --stdin "$1";echo "$1" $pass >>passwd.txt"}'|bash
awk 批量删除用户
for i in {1..10};do userdel -r test$i;done
第二十章 文件权限
最小化原则 安装操作系统 需要什么安装什么
保护root 禁止root登录 更改默认SSH端口 22端口
给重要的命令+i 给重要的文件加a
给重要的文件或命令做一个指纹
r:read 读
w:write 写
x:execute 执行
读 r -> 4
写 w -> 2
执行 x -> 1
方法1:mode法
格式:chmod who opt per file
who:u g o a(all)
opt:+ – =
per:r w x X
方法2:数字法
格式:chmod XXX file
rwx rw- r–
111 110 100
7 6 4
r:4
w:2
x:1
rwx 对文件的作用
r 可读 不可写 不可执行
w 不可写 不可执行 可追加 如果想写入 必须和r 配合使用
x 啥都不能干 想要执行 必须和r 进行配合
rwx 对目录的作用
r 不能进入目录 只显示文件名 不显示详细信息 配合x 使用
w 啥都不能干 控制是否在目录下创建 删除 重命名必须和x配合使用
x 可进入到目录可以查看文件内容
UMASK值
作用:取消对应的权限,影响创建文件和目录的默认权限
对目录: umask+default=777(dir)
对文件:666-umask:观察结果,如果有奇数,奇数位+1,偶数不变
三种权限 suid sgid sticky
suid
作用:给一个用户继承二进制程序所有者拥有的权限
例:ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd
给file文件增加suid权限
chmod u+s file
chmod 4755 file suid数字法表示为4
sgid
作用1:给一个用户继承二进制程序所有组拥有的权限
例:ll `which cat`
-rwxr-sr-x. 1 root root 48568 Mar 23 2017 /bin/cat
给file文件增加sgid权限
chmod g+s file
chmod 2755 file sgid数字法表示为2
sticky
作用:作用于目录上,此目录的文件只能被所有者删除
如:ll -d /tmp
drwxrwxrwt. 17 root root 4096 Apr 4 10:02 /tmp
给dir目录添加sticky权限
chmod o+t dir
chmod 1777 dir sticky数字法表示为1
ACL 访问控制列表
添加ACL权限
setfacl -m u:wang:0 file 使wang账户对指定file文件无权限
setfacl -m u:mage:rw file 使mage账户对指定file文件有读写权限
setfacl -m g:g1:rw file 使g1组对指定file文件有读写权限
getfacl file 查看指定file文件的ACL权限
删除ACL权限
setfacl -x u:wang file 删除wang账户对指定file文件的ACL权限
setfacl -x g:g1 file 删除g1组对指定file文件的ACL权限
ACL权限下的mask
设置用户对指定文件所能拥有的最大权限(限高作用)
setfacl -m mask::r file 使指定文件file所拥有的最大权限位读r
setfacl -x mask::r file 取消指定文件file的最大权限限制mask
setfacl -b f1 取消f1文件所有的ACL权限
备份和恢复ACL权限
getfacl -R /tmp/dir1>acl.txt 将dir1目录下ACL权限备份
setfacl -R –set-file=acl.txt /tem/dir 恢复dir1目录下ACL权限
文件权限常用命令
chown 设置文件所有者(普通用户无法修改文件所有者)
chgrp 设置文件所属组(普通用户要想该所属组,前提是文件所有者为自己,自己在所属组中)
chmod 设置指定文件权限
chattr 给指定文件添加保护,避免root账户误操作
+i 锁定文件,不能删除,不能改名,不能更改内容
-i 解锁+i
-a 锁定文件,不能删除,不能改名,但可追加内容(追加重定向)
-a 解锁+a
+A 指定文件读时间atime不再更改
lsattr 查看指定文件是否有锁定状态
setfacl 设置文件ACL权限
-m mask::r file 使指定文件file所拥有的最大权限位读r
-x mask::r file 取消指定文件file的最大权限限制mask
-b f1 取消f1文件所有的ACL权限
-R –set-file=acl.txt /tem/dir 恢复dir1目录下ACL权限
getfacl 查看文件ACL权限
第二十一章 crontab 定时任务
crontab 安装:
yum -y install crontabs
相关服务
service crond start 启动服务
service crond stop 停止服务
service crond restart 重启服务
service crond reload 重新载入配置
service crond status 查看crontad服务状态
chkconfig crond --list 查看crontab服务是否已设置为开机启动
chkconfig crond on 加入开机自动启动
命令格式
crontab [-u user ] file
crontab [-u user ] [ -e | -l | -r ]
参数说明:
-u user:用来设定某个用户的crontab 服务
file 文件的名字
-e 编辑crontab文件内容
-l 显示crontab文件内容
-r 删除定时任务配置
配置说明
* * * * * 命令
分 时 日 月 周
服务
邮件服务
systemctl stop postfix
root邮件的地址
/var/spool/mail/root
小文件的目录
/var/spool/postfix/maildrop/
实例
*/1 * * * * date >> /root/date.txt
每分钟执行一次 date命令
30 21 * * * /usr/local/etc/rc.d/httpd restart
每晚的21:30 重启apache
45 4 1,10,22 * * /usr/local/etc/rc.d/httpd restart
每月的1 10 22 号 4:45重启apache
10 1 * * 6,0 /usr/local/etc/rc.d/httpd restart
每周六 周日的1:10 重启apache
0,30 18-23 * * * /usr/local/etc/rc.d/httpd restart
每天18:00至23:00 之间每隔30分重启apache
* 23-7/1 * * * /usr/local/etc/rc.d/httpd restart
晚上11点到早上7点之间 ,每隔一个小时重启apache