vim 文本编辑器
插入模式
a 光标后
A 行尾
o 光标所在行下一行
O 光标所在行上一行
i 光标前
I 行首
s 删除光标所在位置的字符并进入插入模式
S
命令模式
d 删除
dd 删除当前行
dgg 删除光标到文档首
dG 删除光标到文档尾部
d$ 删除光标到行尾,包括光标所在位置字符
d^ 删除光标到行首,不包括光标所在位置的字符
dw 按单词删除
gg 跳转到文档首部行首
G 跳转到文档尾部行首
u 撤销之前的操作
Ctrl+r 重做
行号G 跳转到指定行
x 删除光标所在位置的内容
行数yy 复制光标所在行开始第几行
p 粘贴到光标所在行的下一行
cc 剪切当前行
行数cc 剪切当前行开始的几行
H 跳转到当前屏幕输出的最上面一行
L 跳转到当前屏幕输出的最下面一行
M 跳转到当前屏幕输出的中间那一行
$ 行尾
^ 行首
w 按单词进行移动光标
r 替换光标所在的字符
h 往左按字符移动光标
j 往下(后)按行移动光标
k 往上(前)按行移动光标
l 往右按字符移动光标
末行模式
:w 保存
:w FILENAME 另存为FILENAME
:q 退出
:wq 保存退出
:q! 强制退出不保存
:set nu 显示行号
:行号 跳转到指定行
:set nonu 取消显示行号
:%s/被替换内容/替换后的内容/g
:%s/内容
/ 查找字符串
n
N
:noh 取消高亮显示
:r /FILENAME 读取指定文件的内容到当前文件
eg:
1.关闭域名解析
vim /etc/ssh/sshd_config
匹配关键字 DNS
将该行复制粘贴后将#号取消yes改为no
保存退出
重启服务: systemctl restart sshd
2、配置postfix服务
cp /etc/postfix/main.cf /etc/postfix/main.cf.bak
vim /etc/postfix/main.cf
#配置邮件服务器主机名
76 myhostname = mail.openlab.com
#配置域名
83 mydomain = openlab.com
#指定邮件发送时的域名
99 myorigin = $mydomain
#指定网络接口
113 inet_interfaces = all
116 加注释
#指定服务器的目标区域
164 mydestination = $myhostname,localhost.$mydomain,localhost,$mydomain
#指定允许网络网段地址
264 mynetworks = 192.168.221.0/24
#转发域
296 relay_domains = $mydestination
:wq
[root@localhost~] #systemctl restart postfix
用户和组的基本信息
-
用户和组的相关信息
/etc/passwd
用户相关信息
/etc/login.defs
设置用户创建时默认相关信息
/etc/defualt/useradd
用户添加时会创建的相关信息设置
/etc/skel
用户家目录下相关隐藏文件
/etc/group
组相关信息
/etc/gshadow
组密码
/etc/shadow
用户密码
/var/spool/mail
用户邮箱记录 -
用户类别
管理员 0 root
普通用户 1-65535,2^16个
| 1-200 系统中的管理用户
|-系统用户 201-999,专门用来运行后台进程和服务的用户,不允许登陆系统(服务用户)
|-一般用户 1000-60000,后面的很少使用 -
用户组类别
按照用户类别的分法
管理员组 root
普通组- |-常用分法
|-(主)基本组,用户的默认组
|-附加组 额外组,默认组以外的其他组
- |-常用分法
用户和组的管理
用户管理
- 查看用户信息
/etc/passwd
冒号隔开的七个字段
(1) account 用户名
(2) password 密码,x为密码占位符,目标为/etc/shadow第二个字段
(3) UID 用户ID
(4) GID 基本组ID,额外组信息在/etc/group文件中
(5) CECOS 用户基本信息
(6) HOME DIR 用户家目录,系统用户不允许登陆
(7) shell 用户的默认shell,/etc/shells保存了所有的合法shell
用户管理
-
添加用户
useradd
useradd USERNAME/adduser
-u
UID 指定UID
-g
GID 指定基本组
-G
GID1,GID2,… 指定附加组
-c
“注释信息” 指定用户注释信息 chfn
-d
/path/to/dir 指定某个目录为用户家目录
-s
/shell 指定用户使用的shell chsh -s
chsh -s
修改用户shell -
usermod 修改用户相关信息,选项同useradd
-u
修改UID
-g
修改基本组,基本组必须事先存在
-G
这个选项会覆盖之前的附加组,和-a选项配合使用
usermod -a -G
追加附加组
-c
修改用户注释信息
-s
修改用户shell
-l
修改登陆名 -
删除用户
userdel
userdel USERNAME
-r
删除用户时删除用户家目录和用户的邮箱 -
查看用户的ID信息
id
查看用户的ID信息,选项同useradd
-u
显示UID
-G
显示附加GID
-g
显示GID
添加组和组管理
- 添加组
groupadd
添加一个组
-g
GID
-r
添加系统组- 删除组
groupdel
删除一个组 (不能删除基本组)- 修改组
groupmod
修改一个组
-g
GID
-n
GRPNAME 修改组名
用户和组的在系统中的配置信息
/etc/login.defs
用户的相关默认属性
添加用户就是在/etc/passwd、/etc/shadow、/etc/group中添加用户相关信息
默认属性都来自/etc/default/useradd /etc/skel
/etc/default/useradd
文件格式
GROUP=100 组(在linux当中用户默认组有两种模式公有模式,私有模式当前我们学习的linux是一种私有模式)
HOME=/home 家目录
INACTIVE=-1 密码宽限期限
EXPIRE= 账户过期期限不启用
SHELL=/bin/bash 指定shell
SKEL=/etc/skel 默认文件
CREATE_MAIL_SPOOL=yes 邮件配置
密码管理
/etc/shadow
冒号隔开的九个字段
(1) account 用户名
(2) password 加密后的密码,格式为666???$* !!或者* 账户锁定 salt
(3) 最后一次修改时间 从1970年1月1日到最后一次密码改变的时间所经过的天数
(4)密码最短使用期限 为0表示不限制
(5) 密码最长使用期限 密码使用多长时间之后必须要改密码,99999表示可不更改
(6)密码过期警告时间 密码过期前多少天进行警告,提示用户改密码,但是不锁定用户
(7) 密码过期宽限期限 密码过期后必须改密码的时间,如果还没改,锁定用户,就只能找网管了
(8)账号过期精确时间 如果为99999,意味着永不过期
(9)保留字段
-
修改用户密码
passwd 修改用户密码
–stdinecho “redhat” | passwd --stdin USERNAME
-l
锁定用户账号密码
-u
解锁用户账号
-n
指定密码最短使用期限
-x
指定密码最长使用期限
-w
指定警告时间
-i
指定宽限动时间
-d
删除用户密码,在redhat中,空密码用户禁止登陆
change age
-d
指定最后一次修改密码日期
-E
过期日期
-I
宽限时间
-m
最短使用期限
-M
最长使用期限
-w
警告时间 -
设置组密码
gpasswd +用户名设置组密码
-a
添加用户到组
-d
将指定用户移出本组
-M
设置组成员列表
-A
指定管理员(组长)
-r
删除组密码
-R
限制用户登录组,只有组中成员才能加入该组 newgrpnewgrp 登陆一个新组
使用exit退出新组
权限
权限:指权利范围即行为的的限制
- 文件
读r 写 w 执行x 扩展权限(.) - 目录
r 文件 查看(cat tac more less tail head)
w 编辑添加文件目录
x 命令是否可以进入该目录
修改用户和权限
chown 修改所属用户
chown USERNAME FILENAME
chown USERNAME:GROUPNAME FILENAME
chown USERNAME.GROUPNAME FILENAME
chown GROUPNAME FILENAME
用冒号隔开,冒号前是用户,冒号后是组
chgrp 只修改所属组
chgrp GROUPNAME FILENAME
777 目录 r—ls x----cd w ----创建目录、文件 mv cp
666 文件 r—六个查看cat tac more less head tail w----编辑 nano vim > >>
x—命令
字符形式描述权限: r w x (u g o)
-rw- r-- r-- . 1 xiaodou doudou 0 1月 17 11:44 123
u g o
6 4 4
- 修改权限
chmod 修改权限
u
所属用户
g
所属组
o
其他
增加权限+
取消权限-
chmod u=rwx,g+w,o-r FILENAME
- 权限掩码
umask 查看系统默认权限掩码值 ,权限掩码 (权限过滤符)
umask 033 更改权限掩码
安全上下文
安全上下文(一类定义某个进程允许做什么的许可和权限的集合)
权限 特权 完整性等级、访问令牌
secure context
- 进程的权限取决于用户的发起者的权限,而并非执行文件本身。
进程访问文件时,先查看用户权限,如果不是,再查看进程的发起用户是不是目标文件所属组成员
系统任何进程开始都保存为一个文件,由用户执行可执行文件后成为进程,而能否执行,取决于用户对可执行文件有没有权限,而程序一旦执行后转为进程,那么进程就与之前的可执行文件无关,进程的权限为进程发起者的权限,而进程能否访问某个文件,则取决于发起者是否有权限访问目标文件,而这一切就叫做安全上下文
特殊权限
特殊权限
(文件)
SUID:4 运行程序时,进程的所属用户是程序文件自身的权限,而不是进程发者 u+s 4UID强制位
`chmod u[+|-]s FILENAME`
如果文件原来有执行权限就显示为s,反之显示S
SGID:2 运行程序时,进程的所属组是程序文件自身的所属组,而不是进程发起者的所属组 g+s 2Gid强制位
chmod g[+|-]s DIRNAME
Sticky:1 在一个公共目录,每个用户都可以创建文件,删除自己的文件,但不能删除别人的文件 o+t 1冒险位
chmod o[+|-]t DIRNAME
./+ 扩展权限
getfacl
u: 用户
g: 组
setfacl
Filesystem Access Control list
-m 设定
setfacl -m u:UID:perm 文件 目录
setfacl -m g:GID:perm
-x 取消(访问 控制列表的条目)
setfacl -x u:UID 指定目录或文件名
u: 用户
g: 组
-b 取消 (将所有扩展权限全部取消)
setfacl -b 指定目录或文件名
磁盘分区
磁盘分区 40G 18G
基于mbr(主引导记录) 一般
可分为4个主分区 或者3个主分区+1个扩展分区+32个逻辑分区
gpt (苹果一般默认分区格式) 256个主分区
- ide PATA
工作需要cpu全程参与,在多任务的情况下会系统反应慢;一个ide系统可连接4个IDE设备; IDE硬盘是传统的并口硬盘,现在已经被SATA硬盘即串口硬盘所淘汰。 - sata
SATA硬盘比IDE硬盘传输速度高;接口不同;支持热插拔 - scsi
SCSI接口,则完全通过独立的高速的SCSI卡来控制数据的读写操作,CPU就不必浪费时间进行等待, 显然可以提高系统的整体性能。 scsi可连接7~15个设备;SCSI的性能更稳定、耐用,可靠性也更好;价格高
s >>> scsi SATA
ide >>> d
a b
sda 第一块scsi设备
sda1 第一块scsi设备上第一个分区
sdb 第二块scsi设备
sdb1 第二块scsi设备上第一个分区
sr0-------是指光盘 /dev/cdrom
s sata
r rom
0 总线上第一个sr设备
分区信息
disk -l 查看分区情况
#df -h 磁盘使用情况
#free -m 内存信息
total used free shared buff/cache available
Mem: 3776 659 2410 10 706 2837
Swap: 1999 0 1999
其中的相关说明:
Mem:表示物理内存统计
-/+ buffers/cached:表示物理内存的缓存统计
Swap:表示硬盘上交换分区的使用情况(这里我们不去关心)
系统的总物理内存:255268Kb(256M),但系统当前真正可用的内存并不是第一行free 标记的 16936Kb,它仅代表未被分配的内存。
我们使用total1、used1、free1、used2、free2 等名称来代表上面统计数据的各值,1、2 分别代表第一行和第二行的数据。
total: 表示物理内存总量。
used: 表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用。
free: 未被分配的内存。
shared: 共享内存,一般系统不会用到,这里也不讨论。
buffers: 系统分配但未被使用的buffers 数量和使用的cache 数量。
磁盘分区具体步骤
#fdisk /dev/sda
m 帮助界面
n 新建分区
e 扩展分区
enter 磁盘开始位置(默认)
enter 结束位置(默认)
p 打印分区情况
n
enter
+10G
p
n
enter
enter
w
#partprobe 同步
#mkfs.xfs /dev/sda5 格式化
#mkfs.xfs /dev/sda6
mount /dev/sda5 /sda5
#cd /sda5
#touch haha xixi hehe
#umount /sda5
#### 挂载
- 开机自动挂载
#blkid 查看设备UUID
vim /etc/fstab
我们通过
#blkid获取/dev/sda5 的uuid 是否备份 开机检查优先级
UUID=0e5fd12f-0ce7-43a6-825e-8f7b539b8f33 /sda5 xfs defaults 0 0 不检查
设备 挂载点目录 文件系统参数默认设置
#mount -a 将/etc/fstab 内容从新加载
#reboot
#mount - 两种挂载方式:
临时使用:#mount /dev/sda5 /test
test]#touch haha hehe xixi
~]#umount /test
开机自动挂载:vim /etc/fstab
设备名(UUID) 挂载点目录 文件系统格式xfs 文件系统参数 dump备份 检查优先级
#blkid 查看设备对应的UUID值
#reboot 重启虚拟机
测试:重启后在test目录看到haha xixi hehe 三个文件说明实现开机自动挂载
磁盘配额
磁盘配额实验
1.关闭selinux
setenforce 0
systemctl stop firewalld
2.创建测试用户
3.创建逻辑分区,ext4并实现开机自动挂载
4.该分区支持quota操作
vim /etc/fstab
UUID="23675f12-e603-4f9d-99f6-c31fa9f1f5e7" /mnt ext4 defaults,usrquota,grpquota 0 0
mount -a
5.生成配置磁盘配置的数据库文件quotacheck -vug /mnt(v 详细信息 u用户配额 g组配额)
6.指定用户添加磁盘限额:edquota -u UNAME
Linux磁盘限额的特点
作用范围:针对指定 文件系统(分区)
限制对象:普通用户帐号、组帐号
限制类型:磁盘容量(默认单位为KB)、文件数量
限制方法:软限制、硬限制
quota对文件系统的限制主要分为:容量限制或文件数量限制
限制inode用量:就是用户可以新建的文件数量
限制block用量:就是用户可以使用的磁盘容量,比较常见的限制方式
Disk quotas for user hehe (uid 1002):
Filesystem blocks soft hard inodes soft hard
/dev/sda5 0 30 50 0 4 6
7.开启所有磁盘限额:quotaon -a
创建指定大小的文件:
dd if=/dev/zero of=/mnt/aa bs=1K count=4000
8.关闭磁盘配额
#关闭单个磁盘的磁盘配额
quotaoff /mnt
#关闭所有已经开启的磁盘配额
quotaoff -a
#反之,开启所有磁盘配额
quotaon -a
#如果不再使用磁盘配额,可以将配置文件也删除
rm -rf /public/aquota.*
#最后删除/etc/fstab中的自动挂载即可