五、Linux用户管理和服务管理
一、用户管理命令
摘要:
用户信息文件: /etc/passwd
user1:x:500:500::/home/user1:/bin/bash
第一列:用户名
第二例:密码位(x代表设置了密码)
第三列:UID 用户ID
0: 超级用户
1-499: 系统用户(伪用户,不允许登录linux,绝对不允许删除,是用来启动linux服务或者命令或者程序的)
>500: 普通用户 (默认500-60000)
第四列:GID 初始组ID
第五列:用户说明
第六列:家目录
第七列:用户登录之后的权限
/bin/bash
影子文件: /etc/shadow (用户密码保存文件,权限000,root也要wq!才能保存)
组信息文件: /etc/group
sc : x : 500 :
组名:组密码位:组ID:组中附加用户
windows创建的用户都在user组
1、添加用户
useradd 用户名 添加用户
useradd 选项 用户名
选项:
-g 组名 指定初始组 不要手工指定
-G 组名 指定附加组,把用户加入组,使用附加组
-c 说明 添加说明
-d 目录 手工指定家目录,目录不需要事先建立
-s /bin/bash 手工指定用户登录之后的权限
-u uid: 指定UID
useradd -g aa bb 添加bb用户,同时指定初始组为aa
useradd -G user1 aa 添加用户aa,指定附加组为user1
gpasswd -a 用户名 组名
useradd -g 组名 用户名
user1:
初始组:每个用户初始组只能有一个,一般都是和用户名相同的组作为初始组
附加组:每个用户可以属于多个附加组,要把用户加入组都是加入附加组
2、设定密码
passwd 用户名
passwd 改变当前用户密码
passwd user1 改变user1用户密码
3、删除用户
userdel -r 用户名 -r连带家目录一起删除
4、添加组
groupadd 组名
5、删除组
groupdel 组名 注意:组中没有初始用户
6、把已经存在的用户加入组
gpasswd -a 用户名 组名 把用户加入组
gpasswd -d 用户名 组名 把用户从组中删除
二、用户相关命令
1、id 用户名 显示用户的UID,初始组合附加组
2、su - 用户名 切换用户身份 - 连带环境变量一起切换
env 查看Linux操作环境
三、ACL权限 用来解决用户对文件身份不足的问题
举例:/work 项目提交目录
所有者、所属组有提交更改创建权限,其他人无任何权限
leigong --> 所有者
lggroup --> 所属组
/work/ 权限 770
操作:
mkdir /work
chmod 770 /work/
useradd leigong
groupadd lggroup
gpasswd -a leigong lggroup (所有者加入组)
将所有者leigong加入到lggroup组中
gpasswd -a user1 lggroup (用户user1加入组)
将用户user1加入到lggroup组中
chown leigong:lggroup /work
ll -d /work/
1、getfacl 文件名 查询文件的acl权限
2、setfacl 选项 文件名 设定acl权限
-m 设定权限
-b 删除权限
班主任以5权限进到了work目录
删除facl权限
setfacl -m u:用户名:权限 文件名
setfacl -m g:组名:权限 文件名
setfacl -m u:aa:rwx /test 给test目录赋予aa是读写执行的facl权限
setfacl -m u:cc:rx -R soft/ 递归赋予acl权限,只能赋予目录
-R 递归
setfacl -b /test 删除acl权限
setfacl -x u:用户名 文件名 删除指定用户的ACL权限
3、setfacl -m d:u:bzr:5 -R /work/ acl设置默认权限 d(default)
注意:默认权限只能设置目录
注意:如果给目录赋予acl权限,两条命令都要输入
setfacl -m u:用户名:rx -R 文件名 只对已经存在的文件生效
setfacl -m d:u:bzr:rx -R 文件名 只对未来要新建的文件有效
四、输出重定向和多命令顺序执行
1、输出重定向 (把应该输出到屏幕的输出,重定向到文件)
> 覆盖的方式写进文件
>> 追加的方式写进文件
ls > aa 覆盖到aa
ls >> aa 追加到aa
ls fdhfjsolk 2>>aa 错误信息记录到aa文件 2 错误信息 注意:错误输出,不能有空格
掌握:
ls >> aa 2>&1 错误和正确都可以输入到aa,可以追加, 2&1把标准错误重定向到标准正确输出
ls >> aa 2>>/tmp/bb 正确信息输入aa,错误信息输入bb
五、服务和进程管理
进程管理三个主要任务:
判断服务器健康状态 正常、非法 top
查看所有正在运行的进程 ps pstree
强制终止进程 kill pkill
服务器合理资源范围 70/90:内存占用不超过70%,CPU占用不超过90%
一、进程查看
1、ps aux 查看当前系统所有运行的进程
-a 显示前台所有进程
-u 显示用户名
-x 显示后台进程
服务器遵循70/90原则,即内存占用率不超过70%,CPU占有率不超过90% !!!
user: 用户名
PID: 进程ID PID=1的进程永远是/sbin/init 系统启动的第一个进程
%CPU: CPU占用百分比
%MEM: 内存占用百分比
VSZ: 虚拟内存占用量 KB
RSS: 固定内存占用量
TTY: 登录终端 tty1-7本地终端 1-6字符,7图形;pts/0 - 255 远程终端
STAT: 进程状态 S:睡眠 D:不可唤醒 R:运行 T:停止 Z:僵死 W:进入内存交换 X:死掉的进程 <:高优先级 N:低优先级 L:被锁进内存 s:含子进程 +:位于后台 l:多线程
START: 进程触发时间
TIME: 占用CPU时间
COMMAND: 进程本身
2、pstree 查看进程树
pstree -p 查看进程树(包括inode号)
3、top
第一行:系统当前时间 系统持续时间 登录用户数量 1,5,15分钟之前的平均负载
第二行:进程总数 进程总数125个,1个运行,124个休眠
第三行:CPU占用率 %id空闲辈分比
第四行:内存使用 总共 使用 空闲 缓存
第五行:swap使用
可通过1,5,15分钟之前的平均负载、CPU空闲率、内存空闲率判断服务器的基本压力
操作命令:
M:内存排序
P: CPU排序
q: 退出
4、进程管理 终止进程 (没事别老杀进程,apache、mysql等进程都有启动终止命令)
kill 信号 PID 结束单个进程
-9 强制
killall -9 进程名 结束一类进程
pkill -9 进程名 结束一类进程
w 判断登录用户
pkill -9 -t 终端号 把某个终端登录的用户踢出去(只有超级用户才能提其他用户)
pkill -9 -t pts/0 把user1用户踢下去,踢完之后user1用户连接状态变成了红色
六、Linux服务管理
默认情况下,所有的服务管理命令(如:service、ntsysv、chkconfig)都不能识别源码包安装的服务
一、分类
RPM包安装的服务
1、独立的服务 (独立服务放在内存,直接响应速度快;缺点占内存)
启动:
A:service 服务名 start|stop|restart
B:/etc/rc.d/init.d/服务名 start 标准启动
自启动:
A:chkconfig --level 2345(开机级别) httpd on|off
B:vi /etc/rc.local
/etc/rc.d/init.d/httpd start (建议用第二个)
2、基于xinnetd的服务 (xinetd服务自己占内存,它管理的服务部占内存,缺点慢;;用得越来越少)
ntsysv
源码包安装的的服务
启动
/usr/local/apache2/bin/apachectl start
自启动
vi /etc/rc.local
/usr/local/apache2/bin/apachectl start
二、系统默认安装的服务
1、确定服务分类
chkconfig --list 查看RPM包安装的服务的自启动状态
运行级别:0-6
0 关机
1 单用户模式
2 不完全多用户,不包含NFS服务
3 完全多用户,字符界面
4 未分配
5 图形界面
6 重启
init 0 关机
init 6 重启