用户管理和服务管理
1.用户信息文件: /etc/passwd
1)root :x: 0 :0: root :/root :/bin/bash
用户名 密码位 UID GID初始组ID 用户说明(可有可无) 家目录 用户登录之后的权限
用户ID
0 管理员
1-499 系统用户(伪用户)
>500 普通用户
如果普通用户最后的登陆权限变为/sbin/nologin/则该用户就无法登陆->可暂时禁止用户登
2)影子文件: /etc/shadow 加密后的密码在此文件里面
99999为密码的 有效期!!!!后面的7天为给提示让用户改密码!!
初始组:每个用户初始组只能有一个,初始组只能有一个,一般都是和用户名相同的组作为初始组
附加组:每个用户可以属于多个附加组。要把用户加入组,都是加入附加组
3)组信息文件: /etc/group
想要知道一个用户属于呢个初始组先/etc/passwd查找组ID 再通过组ID/etc/group查出属于哪个组
结构---组名:组密码位:组ID:组中附加用户!!
如何把用户变为附加用户:把machongtest1 作为machongtest的附加用户
Machongtest1为附加组 不会影响Machongtest1初始组的建立(此种方式Machongtest1必须不存在)--大写G
小写g-->注意 使用小写g是不会创建自身的初始组的!!
2.useradd 用户名 useradd 选项 用户名
选项:
-g 组名 指定初始组 不要手工指定
-G 组名 指定附加组,把用户加入组,使用附加组
-c 说明 添加说明
-d 目录 手工指定家目录,目录不需要事先建立
-s /bin/bash 手工指定用户登录之后的权限
useradd -g aa bb 添加bb用户,同时指定初始组为aa
useradd -G user1 aa 添加用户aa,指定附加组为user1
3.设定密码 passwd 用户名 ->管理员修改密码
passwd 改变当前用户密码
4.删除用户 userdel -r 用户名(-r 连带家目录一起删除)
5.添加组 groupadd 组名
-g->添加用户user5的时候给定初始组为1
-G->添加用户user6的时候给定其附加组为1
User5离开了自身的1组不会存活 所以1组不能删 要想删除1组必须先删除user5
User6离开了附加组还是可以存活的 所以只需删除user5就可删除组1
6.删除组 groupdel 组名 注意:组中没有初始用户。
7.把已经存在的用户加入组
gpasswd -a 用户名 组名 用户加入附加组(用户名必须存在)
root:x:0:user1,user2 或者直接在后面加入附加组
gpasswd -d 用户名 组名 把用户从附加组中删除(用户名必须存在)
8.id 用户名 显示用户的UID,初始组,和附加组
[user1@CentOS6 ~]$ id
uid=504(user1) gid=504(user1) 组=504(user1),0(root)
9.su - 用户名 切换用户身份 (- 连带环境变量一起切换 建议使用完整切换!)
env
[root@CentOS6 machong]# gpasswd -a user1 84 把user1加入附加组84
[root@CentOS6 machong]# gpasswd -a user2 84 把user12附加组84
[root@CentOS6 machong]# mkdir /www 创建www
[root@CentOS6 machong]# chown root:84 /www/ 更改www的所属主和所属组
[root@CentOS6 machong]# chmod 770 /www/ 更改所属主和所属组权限
[root@CentOS6 machong]#
root@CentOS6 machong]# chmod 1770 /www/ 更改所属主和所属组权限
1-隐藏权限 sbit用户上传的东西只可以本用户删除
[root@CentOS6 machong]# ll -d /www/
drwxrwx--T. 2 root 84 4096 7月 2 10:13 /www/
[root@CentOS6 machong]#
设置特殊用户权限 wr
[root@CentOS6 machong]# setfacl -m u:bnz:rx /www
[root@CentOS6 machong]# ll -d /www
drwxrwx---+ 2 root 84 4096 7月 2 10:13 /www
[root@CentOS6 machong]#
查看文件权限
root@CentOS6 machong]# getfacl /www
getfacl: Removing leading '/' from absolute path names-->只有相对路径不会报错
# file: www
# owner: root
# group: 84
user::rwx
user:bnz:r-x
group::rwx
mask::rwx
other::---
10.ACL权限 用来解决权限身份不足的问题的 单独给予用户权限
1) getfacl 文件名 查询文件的acl权限
2) setfacl 选项 文件名 设定acl权限
-m 设定权限
-b 删除权限
setfacl -m u:用户名:权限 文件名
setfacl -m g:组名:权限 文件名
setfacl -m u:aa:rwx /test 给test目录赋予aa用户是读写执行的acl权限
setfacl -m u:cc:rx -R soft/ 赋予递归acl权限,只能赋予目录
-R 递归
setfacl -b /test 删除acl权限
3) setfacl -m d:u:aa:rwx -R /test acl默认权限。注意:默认权限只能赋予目录
[root@CentOS6 www]# touch test1
[root@CentOS6 www]# touch test2
[root@CentOS6 www]# setfacl -m u:bnz:rx -R /www(有可能会造成权限溢出,尽量不用)
[root@CentOS6 www]# ll
总用量 8
-rw-r-xr--+ 1 root root 0 7月 2 10:53 test1
-rw-r-xr--+ 1 root root 0 7月 2 10:53 test2
注意:如果给目录赋予acl权限,两条命令都要输入
-R 递归
-m u:用户名:-R 权限 只对已经存在的文件生效
-m d:u:用户名:-R 权限 只对未来要新建的文件生效 d
[root@CentOS6 www]# setfacl -b -R /www 递归删除权限
11.把命令写入文件里面:
1)ls > aa 覆盖到aa
2)ls >> aa 追加到aa
3)ls gdlslga 2>>aa 错误信息输出到aa 强调:错误输出,不能有空格
2 错误信息
[root@CentOS6 www]# ls cjsakj 2>> test2
[root@CentOS6 www]# cat test2
ls: 无法访问cjsakj: 没有那个文件或目录
掌握
ls >> aa 2>&1 错误和正确都输入到aa,可以追加
2>&1 把标准错误重定向到标准正确输出
[root@CentOS6 www]# ll >> test3 2>&1
[root@CentOS6 www]# ll cfdsmlksmd >>test3 2>&1
[root@CentOS6 www]# cat test3
总用量 12
-rw-r--r--. 1 root root 330 7月 2 11:18 test1
-rw-r--r--. 1 root root 52 7月 2 11:19 test2
-rw-r--r--. 1 root root 18 7月 2 11:22 test3
ls: 无法访问cfdsmlksmd: 没有那个文件或目录
[root@CentOS6 www]#
ls >> aa 2>>/tmp/bb 正确信息输入aa,错误信息输入bb
12.服务和进程管理
1)进程管理三个主要任务:
判断服务器健康状态
查看所有正在运行的进程
强制终止进程
2)进程查看 ps aux 查看当前系统所有运行的进程(-a 显示前台进程/-u 显示用户名、-x显示后台进程)
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 2872 1384 ? Ss Jul01 0:03 /sbin/init
user:用户名
pid: 进程id。PID 1 init 系统启动的第一个进程
%CPU:cpu占用百分比
%MEM:内存占用百分比
VSZ: 虚拟内存占用量 KB
RSS: 固定内存占有量
Tty: 登录终端 tty1-7 本地终端 1-6 字符 7图形
pts/0-255
alt+F1-F7
stat 状态 S:睡眠 D:不可唤醒 R:运行 T:停止 Z:僵死 W:进入内存 交换 X:死掉的进程 <:高优先级 N:低优先级 L:被锁进内存 s:含子进程 +:位于后台 l:多线程
start 进程触发时间
time 占用cpu时间
command 进程本身
3)pstree 查看进程树
4)top 每三秒钟刷新一次( M 内存排序/ P CPU排序/ q 退出)
top - 12:18:17 up 1 day, 3:07, 2 users, load average: 0.00, 0.00, 0.00
Tasks: 144 total, 1 running, 143 sleeping, 0 stopped, 0 zombie进程
Cpu(s): 0.0%us, 0.3%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st空闲
Mem: 629444k total, 600520k used, 28924k free, 108592k buffers
Swap: 2047992k total, 8k used, 2047984k free, 241448k cached
第一行: 系统当前时间 系统持续时间 登录用户 1,5,15分钟之前的平均负载(越小越好)
第二行:进程总数
第三行:CPU占用率 %id 空闲百分比
第四行:内存使用: 总共 使用 空闲 缓存
第五行:swap使用
5)进程管理 终止进程
root@CentOS6 ~]# kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
A)kill 信号(-9) PID(进程id号) 结束单个进程
-9 强制
B)killall -9 进程名 结束一类进程
pkill -9 进程名
C)w 判断登录用户
root@CentOS6 ~]# w
12:36:45 up 1 day, 3:26, 3 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 :0 09:15 3:25m 15.65s 15.65s /usr/bin/Xorg :0
-nr -verbose -audit 4 -auth /var/run/gdm/a
root pts/0 192.168.140.22 12:28 0.00s 0.15s 0.08s w
user1 pts/1 192.168.140.22 12:36 6.00s 0.04s 0.04s -bash
[root@CentOS6 ~]#
pkill -9 -t 终端号 把某个终端登录的用户踢出
pkill -9 -t tty1 把本地登录终端1登录用户踢出
[root@CentOS6 ~]# pkill -9 -t pts/1
[root@CentOS6 ~]#
13.系统运行级别
1) dmesg 查看系统启动信息
cat /var/log/dmesg 系统启动信息日志
dmesg | grep eth0 查看eth0信息
dmesg | grep CPU 查看cpu信息
[root@CentOS6 ~]# dmesg | grep CPU
Transmeta TransmetaCPU
PAT not supported by CPU.
SMP: Allowing 1 CPUs, 0 hotplug CPUs
NR_CPUS:32 nr_cpumask_bits:32 nr_cpu_ids:1 nr_node_ids:1
PERCPU: Embedded 14 pages/cpu @c1a00000 s35928 r0 d21416 u2097152
Initializing CPU#0
mce: CPU supports 0 MCE banks
CPU0: Intel(R) Core(TM) Duo CPU T2400 @ 1.83GHz stepping 0c
Brought up 1 CPUs
microcode: CPU0 sig=0x6ec, pf=0x1, revision=0x54
[root@CentOS6 ~]#
[root@CentOS6 ~]# dmesg | grep eth0
eth0: registered as PCnet/PCI II 79C970A
eth0: link up
eth0: no IPv6 routers present
[root@CentOS6 ~]#
2)系统运行级别
0 关机
1 单用户
2 不完全多用户,不含NFS
3 完全多用户
4 保留
5 图形界面
6 重启
A)runlevel 查询系统运行级别
[root@CentOS6 ~]# runlevel
N 5 (N(none) 空格 5) N代表上一个级别 5当前级别
[root@CentOS6 ~]#
B)init 运行级别 改变运行级别
[root@CentOS6 ~]# init 3
[root@CentOS6 ~]# init 5
关机init 0 重启init 6
C)修改系统默认运行级别(是否进入图形界面3,5)
vi /etc/inittab init配置文件
#
id:5:initdefault:(系统默认运行级别,可修改!!!注意0和6不能够设为默认!!!)
~
14.linux服务管理
1)Rpm包安装的服务
A)独立的服务(快,占内存)
启动
a) service httpd start(红帽专有命令)
[root@CentOS6 ~]# cp /usr/local/apache2/bin/apachectl /etc/rc.d/init.d/
[root@CentOS6 ~]# netstat -tlun | grep 80
tcp 0 0 :::80 :::* LISTEN
[root@CentOS6 ~]#
删除(源码包通过红帽专有命令启动 只需复制文件apache2/bin/apachectl)
[root@CentOS6 ~]# rm -rf /etc/rc.d/init.d/apachectl
[root@CentOS6 ~]# service apachectl start
apachectl: 未被识别的服务
[root@CentOS6 ~]#
b) /etc/rc.d/init.d/httpd start(常规命令)
自启动
a) chkconfig --level 2345 httpd on|off
[root@CentOS6 ~]# chkconfig --list | grep httpd
httpd 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
[root@CentOS6 ~]# chkconfig --level 2345 httpd on
[root@CentOS6 ~]# chkconfig --list | grep httpd
httpd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
[root@CentOS6 ~]#
b) vi /etc/rc.local(修改配置文件 把apache标准启动命令写入,系统启动之后在输入用户名密码之前最后调用的文件,检测touch /var/lock/subsys/local该文件的最后修改时间就知道计算机是什么时候最后启动的)
/etc/rc.d/init.d/httpd start(a和b只能有一个启动 建议使用此方法,系统默认第一个)
B)基于xinetd的服务(慢,占内存小)
查看是否安装:rpm -q xinetd
A.挂载
B.Yum -y install xinetd
C.查看 chkconfig --list(!!!只能查看rpm包的自启动状态!!!)
D.ntsysv rpm包安装服务,自启动管理工具
2)源码包安装的服务
1) 启动
/usr/local/apache2/bin/apachectl start
2) vi /etc/rc.local
/usr/local/apache2/bin/apachectl start
15.计划任务
1)ps aux | grep crond / chkconfig --list | grep crond确定服务必须启动
[root@CentOS6 ~]# ps aux | grep crond
root 1649 0.0 0.2 7064 1260 ? Ss Jul01 0:02 crond
root 16975 0.0 0.1 5964 748 pts/0 S+ 19:15 0:00 grep crond
[root@CentOS6 ~]#
[root@CentOS6 ~]# chkconfig --list | grep crond
crond 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
[root@CentOS6 ~]#
2)crontab -e 编辑定时任务(备份etc目录)
分钟 小时 天 月 周
* * * * * 命令
10 * 31 * * 命令 每个月中31号中的每个小时中第10分钟执行一次
10 * * * * 命令 每个小时中第10分钟执行一次
5 4 * 5-10 * 命令 5-10月每天的凌晨4点五分执行一次
*/10 * * * * 命令 每10分钟执行一次
5 4 1,15 * * 命令 1号和15号4点五分执行日期和星期不要同时指定,会超出预期
5 4 10 * 5 命令 每个月10号的4点五分执行 && 每周五4点五分执行
*/20 4 * 5 2 命令 五月每周二 凌晨四点 每隔20分钟执行一次
0 4 10-15 7,9,10 * 命令 七九十月中10-15号的四点整执行 第一位不可是*(任意)
第一个*:一小时中第几分钟 0-59
第二个:一天中第几个小时 0-23
第三个:一个月中第几天 1-31
第四个:一年第几个月 1-12
第五个:一周中星期几 0-6 (其中0就是星期日7)
3)注意事项:
A)选项都不能为空,必须填入,不知道的值使用通配符*表示任何时间
B)每个时间字段都可以指定多个值,不连续的值用,间隔,连续的值用-间隔
C)间隔固定时间执行书写为*/n格式
D)命令应该给出绝对路径
E)星期几何第几天不能同时出现
F)最小时间范围是分钟,最大时间范围是月
4)注意:
crontab -l 查看系统定时任务
crontab -r 删除定时任务
5)定时测试
A)crontab -e
B) 0 5 * * * echo 这是一个定时测试 >> /tmp/testwrite
C) [root@CentOS6 ~]# date -s 04:59:58
D)[root@CentOS6 tmp]# cat testwrite
这是一个定时测试