用户权限管理
用户与用户组
用户与角色分类
用户是根据角色定义的。可分三类用户角色,root用户,普通用户,虚拟用户
虚拟用户实际不存在,只是为了方便管理,满足进程或文件的属主需求
用户和组配置文件
/etc/passwd
对所有用户可读,每行含义如下
用户名:口令:用户标识:组表示:注释:主目录:默认shell
口令 其中口令是加密的口令,而且不是明文,比如用x *代替,这种是shadow技术,真正加密的用户口令在/etc/shadow中
用户标识 即uid,uid范围在0-65535,0是root用户的uid,1-99系统保留作为管理账号,普通用户uid从100开始。在linux系统中,普通用户uid默认从500开始。当给普通用户的uid设为0后,就具有了root用户的权限,存在风险
/etc/shadow
这个文件存放/etc/passwd的加密密码,只有root用户有读权限,文件格式
用户名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:保留字段
加密口令 若加密口令是* ! x等字符,则用户不能登录系统
最后一次修改时间 当前到最近一次用户改密码的间隔天数,可用passwd改用户密码,查看此字段变化
最小时间间隔 两次改密码时间最小间隔
最大时间间隔 最大改密码时间间隔
警告时间 系统开始警告用户到密码正是失效的间隔天数
不活动时间 表示用户口令过期多少天后,系统会自动禁用此用户,用户无法登录系统
失效时间 表示用户生存期 超过该字段账号失效 若该字段为空 则用户永久可用
/etc/group
存放用户组信息,文件格式如下
组名:口令:组标识:组内用户列表
口令 也是加密非明文,存在了/etc/gshadow中
组标识 即GID
组内用户列表 以逗号间隔
/etc/login.defs
该文件用来定义创一个用户时的默认配置,看几个常见的配置
MAIL_DIR /var/xxx/mail # 创用户时,在该目录创一个用户mail目录
PASS_MAX_DAYS 999 # 密码持续保持有效最大天数
PASS_MIN_DAYS 5 # 同上,最小天数
PASS_MIN_LEN # 密码最小长度
PASS_WARN_AGE # 口令到期前多少天通知用户密码快到期了
UID_MIN 500 创用户时最小的UID,从该uid开始
UID_MAX GID_MIN GID_MAX
CREATE_HOME yes/no # 创用户时是否创用户主目录
/etc/default/useradd
定义了创建用户后一些默认属性,比如用户主目录,适用的shell等
GROUP=123 # 用户默认的GID
HOME=/home # 用户主目录默认创建位置
INACTIVE=-1 # 是否启用用户过期是否禁用,-1表示不用此配置
EXPIRE= # 账号过期日期,不设置表示不启用
SHELL=/bin/bash # 指定新建用户的shell类型
SKEL=/etc/skel # 指定用户主目录默认文件来源,即新用户主目录下文件都是从这里复制来的
改此文件除了文本编辑器 还可以用useradd命令的-D选项改
添加 切换 删除用户组命令
groupadd
groupadd -g GID -o(表示新用户组GID可以与已存在组的GID相同)
newgrp
可以切换用户的属组。创用户时可先指定用户可以所属的组有哪些,再用这个命令根据需要切换属组
groupdel
增删改查用户命令
useradd
创建用户过程 创用户时,先读取login.defs 和/etc/default/useradd根据这两个配置添加用户,然后向/etc/passwd 和/etc/group添加用户和用户组记录,其中的加密文件也会自动生成,然后按/etc/default/useradd配置创建用户主目录,最后复制/etc/skel所有文件到用户主目录
usermod
注意 改用户组可以usermod也可以newgrp
userdel
文件权限
常见文件类型有 -(普通文件) d(目录) c(字符设备文件) b(块设备文件) s(套接字文件) p(管道文件) l(符号链接文件)
ll命令每行如下:
drwxrwxrwx 3 root root 4096 Jun 19 testfile
3是该文件的硬连接数量
4096是文件大小,单位默认是bytes
testfile 以.开头的文件是隐藏文件,只能ls -a才能显示
chmod
主要有两种格式
chmod who +|-|= mode filename 比如chmod u=rwx,g+w,o+w testfile
chmod 755 testfile
磁盘存储管理
/dev下有大量设备文件,可分为字符设备(c)和块设备(b)。字符设备的存取是以字符流方式进行的,依次传一个字符,比如打印机,终端等;块设备是以数据块方式存取的,常见设备是磁盘。通过块设备读取时,先从内存中读写,而不是直接传到物理盘
磁盘设备的表示法
常见磁盘类型有IDE,STAT,SCSI。表示法主要有两种
1 主设备号+次设备号+磁盘分区号
对于IDE磁盘 hda1 hdb2
对于SCSI磁盘 sda1 sdb2
对于终端设备 tty1 tty2 ttyS5
2 主设备号+[0-n],y
对于IDE (hd[0-n], y)
对于SCSI (sd[0-n], y)
UEFI BIOS MBR GPT
UEFI 统一可扩展固件接口,定义了一种在操作系统和平台固件之间的接口标准,用于操作系统自动从预启动的启动系统环境加载到一种操作系统上,时开机化繁为简。UEFI准确说是一种规范,不同厂商根据UEFI进行实现做出的PC固件,可以叫UEFI固件
BIOS 基本输入输出系统 用汇编语言编程,用中断执行输入输出操作。UEFI比BIOS好在:读取分区表,访问某些特定文件,执行特定格式代码
MBR 主引导分区 即硬盘的主引导记录分区列表,硬盘的0柱面,0磁头,1扇区成为主引导分区。MRBR主要有三部分组成,分别是主引导程序/硬盘分区表DPT和硬盘有效标志。主引导程序占446字节,DPT占64字节,硬盘有效标志占2字节。MBR分区表64字节,所以只有4个分区,因为每个分区长16字节,所以MBR不支持2T以上分区
GPT 全局唯一分区列表 是一个物理硬盘的分区结构,用来代替BIOS中的MBR。相比MBR,GPT没有4个主分区的限制,最大盘大小为18EB,仅支持64位系统
UEFI目标是取代BIOS,UEFI不支持MBR,仅支持GPT
fdisk分盘
分盘有很多命令,如fdisk,cfdisk,parted,此处介绍fdisk
fdisk可命令执行或交互执行
进入交互窗口后,输入m可查看命令帮助,常用的交互命令有 d删除 n新增盘 l查看分区信息 p查看分区表 q不保存退出 w保存退出 m查看帮助 t修改磁盘类型(比如将主分区改为逻辑分区 或者反过来改)
分区以后还要格式化分区,可以使用命令mkfs(默认为ext2,也可以加参数指定类型) 或 mkfs.ext4/...
parted分盘
fdisk只能划分小于2T的盘,可以用parted命令完成对2T以上盘的划分
parted由GNU开发,命令,功能等比fdisk更强大
GPT和MBR相比,每个盘支持128个分区,支持大于2T的分区,最大卷大小18EB
文件系统管理
文件系统选择标准
linux常见文件系统有dos文件系统,windows下有FAT系列(FAT16 FAT32),NTFS,光盘文件系统ISO-9660,单一文件系统EXT2和日志文件系统EXT3/4,XFS,集群文件系统GFS,分布式文件系统HDFS等
读操作频繁同时小文件很多
可以EXT4。因为EXT3是线性的,当目录下文件较多,EXT3性能就下降较多,相比之下,EXT4有延迟分配,多块分配盘区,使EXT4适合大量小文件操作。因此从性能考虑,此种场景下EXT4首选。业务如果需对文件进行大量增删,EXT4也是更高效文件系统,接下来依次是XFS,EXT3
写操作频繁
可以选XFS。写入性能在XFS,EXT4,EXT3差别不大,但效率(cpu)最好的是XFS
对性能和数据安全要求不高的情况
可以考虑EXT3或EXT2,因为EXT2没有日志记录功能,可以节省很多磁盘性能
网络文件系统安装与配置(NFS)
安装
安装服务rpcbind,libnfsidmap,nfs-utils即可
工作模式
远端挂盘使用
定义nfs服务端
配置
配置文件在/etc/exports
/home/share 192.168.1.*(rw,root_squash) *(ro,anonuid=123)
ro read only
rw read+write
no_root_squash 信任客户端 如果客户端的UID是root,则此用户有对共享资源最高权限。权限大有风险需谨慎
root_squash 当客户端root登入时,对资源的使用属主和属组都会被转为nfsnobody,只有可读权限
all_squash 不管客户端已什么用户登入nfs,权限都会转变为nfsnobody
no_all_squash 客户端UID和GID和服务端相同时,才对资源有读写权限
anonuid 将登入NFS的用户权限均设为指定UID,此UID必须已存在
anongid 和anonuid类似
sync 同步写入磁盘 默认选项
async 资料先写道内存 不会直接写入硬盘
服务操作
当仅修改/etc/export时,无需重启服务生效,执行exportfs即可生效
exportfs可以批量对共享资源进行分享,收回分享等操作
定义nfs客户端
客户端需要安装nfs-utils和rpcbind
nfs受防火墙影响,使用需注意
挂载资源
用正常mount命令挂载即可
开机自动挂载nfs
编辑/etc/fstab即可
安全设定
nfs没有实际对用户验证,只通过UID GID等,存在安全风险,有如下应对方法
合理编辑/etc/export权限
设定nfs目录最大copy数量,该参数在/etc/sysconfig/nfs文件中RPCNFSDCOUNT设定,默认为8,改了以后需要生效,重启nfs,nfs-config服务可生效
linux进程管理监控
进程分类和状态
进程分类
系统进程:对内存等系统资源分配的进程,root用户也无法干预系统进程
用户进程:顾名思义。用户进程可细分为交互进程,批处理进程和守护进程
父子进程
所有进程都是pid为1进程的后代,
进程监控管理
ps
ps -aux|head -1;ps -aux|grep httpd
进程状态
S表休眠进程
R表正在运行进程
Z表僵尸进程
<表高优先进程
N表低优先级进程
+表后台进程
s表父进程
top
TIME单位是0.01秒,表示进程到现在总共占用cpu的时间
lsof
lsof可以列举打开的文件,可以关联文件和进程
lsof filename
lsof -c nfs 显示nfs进程打开的文件
lsof -p pid
lsof -i 监控指定协议,端口,主机等信息
pgrep
pgrep可根据程序名查询进程pid
-l 打印pid和进程名(默认只打印pid,一个数字)
-o打印所有进程第一个进程pid
-n 打印所有进程最后一个pid
cron
介绍
任务分为两类,系统任务调度和用户任务调度
系统任务调度 /etc/crontab
用户任务调度 /var/spool/cron
使用
crontab [-u user] [file]
-u user 为某个用户设定定时任务
file表示将file内容作为任务列表传入cron,如果文件不存在,则cron交互接收任务列表
-e 编辑当前用户的cron文件内容
-l 显示某用户的cron文件内容
五个时间分别代表:分钟 小时 天 月 周
时间操作符
* 所有时间值
, 时间列表范围
- 连续时间范围
/ 时间间隔频率
关闭进程
kill -9强制结束
kill -2 非强制结束,ctrl+c一般发出信号等于kill -2
kill -15 正常结束进程
部分父进程结束后未释放子进程,此时子进程的父进程pid会变成1,此时再kill子进程即可