用户管理
一. 用户管理基础
1. 用户的分类
(1) 超级用户(UID=0)
(2) 普通用户(UID=500-...)
(3) 伪用户(UID=1-499)
2. 用户组的分类
(1) 标准组
(2) 私用组
3. 用户管理的文件
(1) /etc/passwd
作用: 存储系统的用户信息
格式:
用户名:口令:UID:主组GID:描述:主目录:shell
实例:
root:x:0:0:root:/root:/bin/bash
(2) /etc/shadow
作用: 存储用户的口令信息
格式:
用户名:口令:最后一次修改口令日期:口令的最小使用天数:口令的最大使用天数:口令失效前多少天警告:过期后多少天禁用账户:有效期:保留
实例:
root:$123948asldew:13562:0:9999:7:::
(3) /etc/group
作用: 存储系统的用户组信息
格式:
用户组名:口令:GID:成员列表
实例:
root:x:0:root,bin
(4) /etc/gshadow
作用:存储用户组口令信息
格式:
用户组名:口令:管理员:成员
实例:
root:$13asdfaasd:admin:root,bin
(5) /etc/login.defs
作用:存储新建用户的部分默认规则信息
内容:
MAIL_DIR 路径 //设置用户的默认邮箱位置
PASS_MAX_DAYS 数字 //设置口令的最大使用天数
PASS_MIN_DAYS 数字 //设置口令的最小使用天数
PASS_MIN_LEN 数字 //设置口令的最小长度
PASS_WARN_AGE 数字 //设置口令的过期警告日期
UID_MIN 数字
UID_MAX 数字 //设置自动生成的UID范围
GID_MIN 数字
GID_MAX 数字 //设置自动生成的GID范围
CREATE_HOME yes/no //设置系统是否自动创建用户主目录
(6) /etc/default/useradd
作用: 存储新建用户的部分默认规则信息
内容: GROUP=数字 //设置用户默认主组,当禁用私用组时有效
HOME=路径 //设置用户主目录的默认位置
INACTIVE=数字 //口令过期后多少禁用账户
EXPIRE=日期 //设置用户默认有效期
SKEL=路径 //设置默认用户配置文件的位置
SHELL=路径 //指定用户的默认shell
(7) 用户环境配置文件
-/etc/profile //用户的登录脚本
-.bash_profile //用户个人登录脚本
-.bash_history //用户命令历史记录文件
-.bash_logout //用户注销脚本
-.bashrc //设置命令别名
二. 用户管理命令
1. groupadd
作用: 创建用户组
格式:groupadd [参数] 用户组名
实例:#groupadd users
#groupadd -g 100 -o hrs
2. groupdel
作用: 删除用户组
格式:groupdel 用户组名
实例:#groupdel hrs
3. groupmod
作用: 修改用户组信息
格式:groupmod 参数 用户组名
实例:#groupmod -g 900 -o hrs
#groupmod -n houres hrs
4. gpasswd
作用:设置组的口令、设置组的管理员或组的成员
格式: gpasswd [参数] 用户组名
实例:#gpasswd hrs
#gpasswd -A u1 hrs
#gpasswd -a u1 hrs
#gpasswd -d u1 hrs
5. useradd
作用:创建用户
格式:useradd [参数] 用户名
参数:-u 数字 //指定用户的UID
-o //与-u连用,指定重复的UID
-g 用户组名 //指定用户的主组
-G 用户组名 //指定用户的附加组
-d 路径 //指定用户的主目录
-s 路径 //指定用户的shell
-e 日期 //指定用户的有效期
实例:#useradd user1
#useradd -u 0 -o admin
6. passwd
作用: 修改用户口令
格式:passwd [参数] [用户名]
实例:#passwd
#passwd user1
#passwd -d user2
#passwd -l user1
#passwd -u -f user1
7. userdel
作用: 删除用户
格式: userdel [参数] 用户名
实例:#userdel user1
#userdel -r user1
8. usermod
作用:修改用户信息
格式:usermod 参数 用户名
参数: -u 数字 //修改用户的UID,可-o参数,使用不唯一的UID
-g 用户组名 //修改用户主组
-G 用户组名 //修改用户的附加组
-d 路径 //修改用户的主目录
-s 路径 //修改用户的shell
-e 日期 //修改用户的有效期
-l 新用户名 //修改用户名称
实例:#usermod -u 0 -o -g 0 user2
9. groups
作用:查看用户所属组的信息
格式:groups [用户名]
实例: #groups
#groups user1
10. id
作用:查看用户uid、主组及附加组信息
格式: id [参数] [用户名]
实例:#id
#id user2
#id -u user2
#id -g user2
#id -G users
#id -gn user2
11. who
作用: 查看当前已登录的用户信息
实例:#who
12. w
作用: 查看当前已登录的用户信息
实例:#w
13. last
作用:查看最近几次的用户登录情况
实例:#last
#last -1
#last root
#last -1 root
#last 1
14. lastlog
作用:查看所有用户的最后一次登录活动
实例:#lastlog
15. su
作用:切换用户环境
格式: su [-/参数] [用户名]
实例:$su
$su - root //中间加了-表示转换的时候附带权限
$su -c "/usr/sbin/useradd u3" root
16. exit
作用:退出用户环境
实例:#exit
17. logout
作用:注销用户
实例:#logout
18. wall
作用:发送广播消息
实例:#wall
19. write
作用:向指定用户发送消息
格式: write 用户名 [终端名]
实例:#write user1
#write user1 tty3
三. 用户安全管理
1. 文件访问权限管理
(1) 文件访问权限种类
-基本权限
a. 读 (r/4)
文件:允许用户打开文件,读取文件内容
目录:允许用户列出目录内容
b. 写 (w/2)
文件:允许用户修改文件内容
目录:允许用户在目录中创建/删除子对象
c. 执行(x/1)
文件:允许用户运行文件
目录:允许用户进行目录
-特殊权限
a. suid (s/4)
应用在可执行文件上,任何用户执行文件时都以文件拥有者的身份执行
b. sgid (s/2)
应用在可执行文件上,任何用户执行文件时都以文件拥有组成员身份执行
c. 粘着位 (t/1)
应用在目录文件上,在目录中删除对象时,只能删除用户自己拥有的对象
(2) 文件访问者
-文件拥有者
-文件拥有组成员用户
-其他用户
(3) 文件访问权限的操作
-chmod
作用:修改文件的访问权限
格式:chmod [参数] 权限值/用户+\-权限 文件
实例:#chmod 755 /abc/d1
#chmod 1777 /abc/soft
#chmod u+w,a-x /abc/f1
#chmod u+s,g+s,o+t /abc/d1
#chmod -R 755 /abc/d1
-chown
作用: 修改文件的拥有者
格式:chown [参数] 用户名[.用户组名] 文件
实例:#chown u2 /abc/f1
#chown u2.g1 /abc/f2
#chown -R u2 /abc/d1
-chgrp
作用: 修改文件的拥有组
格式:chgrp [参数] 用户组名 文件
实例:#chgrp g1 /abc/f3
#chgrp -r g1 /abc/d1
-umask
作用:查看或修改权限掩码
格式: umask [权限值]
实例:#umask
#umask 0044
-lsattr
作用: 查看文件的属性
格式: lsattr [文件]
实例:#lsattr
#lsattr /abc/f1
-chattr
作用:修改文件的属性
格式:chattr +/-/=属性 文件
属性: a 在文件中追加内容,不要删除或修改内容
在目录中可创建对象,但不能删除
i 只读
实例:#chattr +a /abc/d1
2. 系统权限的分配
(1) 分配权限
#chmod 740 /etc/sudoers
#vi /etc/sudoers
.....
格式: 接受权限的用户名 登录主机=(用户名) 命令
实例: u1 ALL=(root) /usr/sbin/useradd
#chmod 440 /etc/sudoers
(2) 接受权限的用户必须使用sudo调用授权的程序
sudo -u 用户名 命令
实例: $sudo -u root /usr/sbin/usreadd u2
3. 用户的限制
(1) 认识PAM
-PAM(可插拔验证模块)是一种身份验证机制,可为应用程序提供身份验证及访问验证服务
-PAM采用模块化结构,所有模块都存放在/lib/security目录中
-每个支持PAM验证的程序都需要在/etc/pam.d中建立相应的配置文件
(2) 限制系统拒绝普通用户登录
-修改/etc/pam.d/login文件
#vi /etc/pam.d/login
.......
auth required pam_nologin.so
......
-在/etc/下创建nologin文件
#touch /etc/nologin
(3) 限制用户的登录时间
-修改/etc/pam.d/login文件
#vi /etc/pam.d/login
..........
account required pam_time.so
......
-修改/etc/security/time.conf
#vi /etc/security/time.conf
格式:服务;终端名;用户名;时间范围
实例:login;*;root;Al0800-1800
(4) 限制用户登录地点
-修改/etc/pam.d/login文件
#vi /etc/pam.d/login
..........
account required pam_access.so
.....
-修改/etc/security/access.conf文件
#vi /etc/security/access.conf
........
格式: 权限:用户:地点
实例: -:root:LOCAL
(5) 限制root用户的登录终端
-修改/etc/pam.d/login文件
#vi /etc/pam.d/login
..........
auth required pam_securetty.so
....
-修改/etc/securetty文件
#vi /etc/securetty
....
终端名
.....
(6) 限制使用su命令
-修改/etc/pam.d/su文件
#vi /etc/pam.d/su
......
auth required /lib/security/$ISA/pam_wheel.so 用户名/group=用户组名
....
4. 用户安全建议
(1) 删除不需要的用户
(2) 设置复杂的用户口令
(3) 尽量少用管理员用户直接登录
(4) 限制管理员远程登录
(5) 离开终端时应该锁定