一、用户和用户组管理简介:
linux系统是一个多用户、多任务的操作系统。
在linux系统中,每个用户都有唯一的身份标识(UID),每一个用户至少属于一个用户组(GID)
id [OPTION]... [USERNAME]
DESCRIPTION
Print user and group information for the specified USERNAME, or
(when USERNAME omitted) for the current user.
-a ignore, for compatibility with other versions 显示uID号和gid号
-Z, --context
print only the security context of the current user
-g, --group 查看用户gid
print only the effective group ID
-G, --groups 查看用户群组ID
print all group IDs
-n, --name 查看用户名
print a name instead of a number, for -ugG
-r, --real
print the real ID instead of the effective ID, wi th -ugG
-u, --user
print only the effective user ID
用户:两类
根用户(root):唯一的,一般不允许修改名字。
普通用户:只管理自己的文件,其它需要root用户授权。
二、普通用户的管理:useradd(添加用户) userdel(删除用户) usermod(修改用户属性) 与之相关的文件:cat /etc/password /etc/shadow /home
useradd详解:
-c “注释信息” 用户注释信息 如:[root@localhost ~]# useradd test100 -c "cheshi"
test100:x:501:501:cheshi:/home/test100:/bin/bash
-d 用户登录时系统所使用的目录
-e 账户失效期限 MM/DD/YY 如:2015年4月30日 04/30/15
-r 建立系统账户
-u 用户uid
-g 用户gid
-M 不建立用户家目录
-s 用户的shell useadd -s /usr/sbin/nologin
-D (可以查看用户属性)可以对用户默认属性进行修改; 如:useradd -D
案例:添加一用户名为 student uid=1000 gid=1000 家目录=/home/student shell=/bin/bash 账户有效期=2015年10月30日
[root@localhost ~]# groupadd -g 1000 student 首先建立1000的用户组
[root@localhost ~]# useradd -u 1000 -g 1000 -s /bin/bash -e 10/30/15 student
注意:指定-g 1000 时,其用户组1000必须事先存在。
[root@localhost ~]# tail -l /etc/passwd
test100:x:501:501:cheshi:/home/test100:/bin/bash
student:x:1000:1000::/home/student:/bin/bash
[root@localhost ~]# passwd student 指定密码
[root@localhost ~]# su student 切换用户
[student@localhost root]$
三、root@localhost /]# cat /etc/passwd
root(用户名):x(密码):0(uid):0(gid):root(注释信息):/root(家目录):/bin/bash(使用的shell)
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
stap-server:x:155:155:Systemtap Compile Server:/var/lib/stap-server:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
ldap:x:55:55:LDAP User:/var/lib/ldap:/sbin/nologin
zabbix:x:500:500::/home/zabbix:/bin/bash
#(表示停用的用户)test100:x:501:501:cheshi:/home/test100:/bin/bash
student(用户名):x(密码):1000(uid):1000(gid):(注释信息):/home/student(家目录):/bin/bash(使用的shell)
[root@localhost /]#
四、[root@localhost /]# cat /etc/shadow 共9个字段,用;分开
root(用户登录名):(影子密码)$6$0brSR4CV$t8s15Y.7HQ.4Qg5bk2wG6JbTwIcMyoqnwg5xpYGsz2Z5UV.mLc2JrTSLfv8wJqcPYghlXu9Fs2mdcbQ5Icbff0:(修改密码的天数)16169:(多少天不能修改密码)0:(多少天需修改密码)99999:(提醒用户修改密码的天数)7:::
bin:*:15980:0:99999:7:::
daemon:*:15980:0:99999:7:::
adm:*:15980:0:99999:7:::
lp:*:15980:0:99999:7:::
stap-server:!!:16168::::::
sshd:!!:16168::::::
tcpdump:!!:16168::::::
ldap:!!:16169::::::
zabbix(用户登录名):(未启动密码,无法登录)!!:16534:0:99999:7:::
test100(用户登录名):(未启用密码,无法登录)!!:16537:0:99999:7:::
student(用户登录名):(影子密码)$6$ChGHEs7X$mrvz2qHoXJSMMWS5UhaVqxBpmJ/yF4XASCfahroYyKgO5wBWm16bHqMTrSUBe0..wxuYX7hcwS34ErhJnadfN.:16537:0:99999:7::16738:
[root@localhost /]#
五、修改用户账户属性:
usermod -c “” 更新用户注释信息
-d 修改用户家目录
-e 修改用户账户停用时间 格式MM月/DD日/YY年
-g 修改用户登录所属的组,即GID
-u 修改uid
-s 修改shell
-l 修改登录时的名字。
六、修改用户密码:root用户除修改自己的密码外,还可以修改其它用户的密码。其它用户只能修改自己的密码。
passwd -l 锁定用户不能登录 [root@localhost /]# passwd -l student
-u 解锁用户 [root@localhost /]# passwd -u student
-d 删除用户密码 [root@localhost /]# passwd -d student
-w 设定密码过期前,发出警报
七、删除用户:密切相关的文件 /etc/passwd /etc/shadow /etc/group
userdel+username 删除用户,保留家目录及其相关属性
-r 删除用户及其家目录
ps -aux grep | "httpd" 查看相关进程。 kill 4001 强制删除进程。
八、用户默认配置文件 /etc/login.defs
[root@localhost /]# cat /etc/login.defs
# *REQUIRED*
# Directory where mailboxes reside, _or_ name of file, relative to the
# home directory. If you _do_ define both, MAIL_DIR takes precedence.
# QMAIL_DIR is for Qmail
#
#QMAIL_DIR Maildir
MAIL_DIR /var/spool/mail 管理员邮箱位置
#MAIL_FILE .mail
# Password aging controls:
#
# PASS_MAX_DAYS Maximum number of days a password may be used.
# PASS_MIN_DAYS Minimum number of days allowed between password changes.
# PASS_MIN_LEN Minimum acceptable password length.
# PASS_WARN_AGE Number of days warning given before a password expires.
#
PASS_MAX_DAYS 30 默认密码可以使用的天数
PASS_MIN_DAYS 30 连续使用的天数
PASS_MIN_LEN 5 密码最小长度
PASS_WARN_AGE 7 密码失效前多少天开始报警
#
# Min/max values for automatic uid selection in useradd
#
UID_MIN 500 自动生成uid最小值
UID_MAX 60000 uid最大值
#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN 500 自动生成gid最小值
GID_MAX 60000 gid最大值
#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD /usr/sbin/userdel_local
#
# If useradd should create home directories for users by default
# On RH systems, we do. This option is overridden with the -m flag on
# useradd command line.
#
CREATE_HOME yes 设定自动创建家目录
# The permission mask is initialized to this value. If not specified,
# the permission mask will be initialized to 022.
UMASK 077 设定新建文件或目录得权限是077
# This enables userdel to remove user groups if no members exist.
#
USERGROUPS_ENAB yes 如果组内成员为空,自动删除该用户组。
# Use SHA512 to encrypt password.
ENCRYPT_METHOD SHA512
[root@localhost /]#
十、root密码恢复。两种方法,一是进入单用户模式 二是进入救援模式
(1)当系统启动时,按上下键 按e键,进入编辑模式,输入single(进入单用户模式),esc返回上一级,按b重启,开机后设置新的密码。
(2)光盘引导启动,启动菜单选择Linux Rescue模式。 启动后用vim编辑器,删除root密码字段,重启,使用passwd重新设置密码。
十一、用户组的管理 /etc/group /etc/gshadow
groupadd -g(GID) -r(创建小于500的系统组) 如groupadd -g 1000 student
修改用户组属性 groupmod -g(修改gid) -n(修改用户组名称) 如:groupmod -g 550 -n director teacher
删除用户组 groupdel teacher
十二、 /etc/group 文件 权限644
[root@localhost ~]# cat /etc/group
root(用户组名称):x(用户组密码):0(GID):组成员列表
bin:x:1:bin,daemon
daemon:x:2:bin,daemon
sys:x:3:bin,adm
adm:x:4:adm,daemon
tcpdump:x:72:
slocate:x:21:
ldap:x:55:
zabbix:x:500:
test100:x:501:
student(用户组名称):x(用户组密码):1000(GID):(组成员)
[root@localhost ~]#
十三、 /etc/gshadow 文件 644
[root@localhost ~]# cat /etc/gshadow
root(用户组名称):(用户组密码):(用户组管理员账户):(组成员列表)
bin:::bin,daemon
daemon:::bin,daemon
sys:::bin,adm
adm:::adm,daemon
tty:::
disk:::
cgred:!::
stap-server:!::
sshd:!::
tcpdump:!::
slocate:!::
ldap:!::
zabbix:!::
test100:!::
student:!::
[root@localhost ~]#
十四、用户和用户组管理常见问题处理:
(1)查询当前系统中存在的用户 who
例如:[root@localhost ~]# who
root pts/0 2015-04-12 21:56 (183.228.19.221)
(2)查询最近一月登录的用户:last
例如:[root@localhost ~]# last
\root pts/0 183.228.19.221 Sun Apr 12 21:56 still logged in
root pts/1 183.228.19.221 Sun Apr 12 16:14 - 16:20 (00:06)
root pts/0 183.228.19.221 Sun Apr 12 15:04 - 16:14 (01:09)
root pts/1 183.228.19.210 Sat Apr 11 23:40 - 23:54 (00:13)
root pts/2 183.228.19.210 Sat Apr 11 23:16 - 01:50 (02:34)
root pts/1 183.228.19.210 Sat Apr 11 23:09 - 23:17 (00:08)
root pts/0 183.228.19.210 Sat Apr 11 22:58 - 01:20 (02:21)
root pts/0 :0.0 Wed Apr 9 09:51 - down (00:02)
root tty1 :0 Wed Apr 9 09:50 - down (00:04)
reboot system boot 2.6.32-431.el6.i Wed Apr 9 09:49 - 09:54 (00:04)
root pts/0 :0.0 Wed Apr 9 09:36 - down (00:00)
root tty1 :0 Wed Apr 9 09:35 - down (00:01)
[root@localhost ~]#
(3)删除系统预设的一些不必要的账号;
十五、账号管理常用命令:
(1)id:用于显示当前用户的uid、gid和用户所属组列表
[root@localhost ~]# id
uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
(2)whoami 用户显示当前用户的名称
[root@localhost ~]# whoami
root
(3)w 显示当前登录用户信息
实验:常见用户共享目录;
例如:三个用户 student1 student2 student3 共享目录为/home/student
(1)[root@localhost ~]# groupadd student
(2)[root@localhost ~]# useradd -u 1001 student1 -g student 创建三个用户并且设置密码
[root@localhost ~]# useradd -u 1002 student2 -g student
[root@localhost ~]# useradd -u 1003 student3 -g student
(3)[root@localhost home]# chmod 770 student /home/下建立student文件夹,且修改权限为770
(4)[root@localhost home]# chmod g+s /home/student 使目录组中所有用户具有所有权限
(5)[root@localhost home]# chgrp student /home/student 设置目录所有权