Linux 用户管理
1. 用户账号简介
- 作用: 1.可以登陆操作系统 2.不同的用户具备不同的权限
- 唯一标识:UID(编号从0开始的编号,默认最大60000)
- 管理员root的UID:永远为0
- 普通用户的UID:默认从1000开始
- 系统用户的UID:1~999
[root@localhost ~]# head -1 /etc/passwd #显示文件第一行 root:x:0:0:root:/root:/bin/bash 用户名:密码占位符:UID:基本组GID:用户描述信息:家目录:解释器
1.1 useradd
useradd命令 用于Linux中创建的新的系统用户。useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在
/etc/passwd
文本文件中。
格式:
useradd [选项]... 用户名
选项:
-u:指定 用户UID
-d:指定宿主目录(家目录),默认为 /home/用户名
-G:指定所属的附加组,-g指定基本组
-s:指定用户的登录解释器,默认为/bin/bash
-u:指定 UID 编号
例:
#指定UID创建用户
useradd -u 1500 nsd02
#查看用户信息
grep nsd02 /etc/passwd
# 禁止用户nsd12登录
# /sbin/nologin:禁止用户登录操作系统
useradd -s /sbin/nologin nsd12
1.2 usermod
usermod命令 用于修改用户的基本信息
格式:
usermod [选项]... 用户名
选项:
-l:更改用户帐号的登录名称
-u:用户id
-d:家目录路径
-s:登录解释器
-G:附加组 #重置附加组
-l:更改用户帐号的登录名称
-u:用户id
-s:登录解释器
例:
#修改用户的解释器程序
usermod -s /sbin/nologin stu13
#修改用户名字
usermod -l stu13 nsd13
#将用户原有的家目录进行移动,并且设置相应的权限
usermod -md /mnt/abc16 nsd16
1.3 passwd
用于让用户可以更改自己的密码
格式:
passwd [选项]... 用户名
选项:
--stdin:从标准输入(比如管道)取密码
例:
# 非交互式设置密码
echo redhat | passwd --stdin nsd18
# 交互式设置密码
passwd nsd18 #交互式设置
更改用户 nsd18的密码 。
新的 密码: #输入新密码
无效的密码: 密码少于 8 个字符
重新输入新的 密码: #重新输入新密码
passwd:所有的身份验证令牌已经成功更新。
注意:
/etc/shadow,保存密码字串/有效期等信息
每个用户记录一行,以:分割为9个字段
[root@localhost ~]# grep nsd01 /etc/shadow
nsd01:$6$NVe937Nd$B0n94XrpQ.LipQHTpYh0iV/M4jCLdccfHxzRLprdxDzwk8WDDh/TzdTfh8lA9y9WKJ.8Ls/l5.w/1W.nV6CFX/:18481:0:99999:7:::
# 上一次修改密码的时间:自1970-1-1到达上一次修改密码的时间,所经历的天数
# 字段1:用户帐号的名称
# 字段2:加密后的密码字符串
# 字段3:上次修改密码的时间
# 字段4:密码的最短有效天数,默认0
# 字段5:密码的最长有效天数,默认99999
# 字段6:密码过期前的警告天数,默认7
# 字段7:密码过期后多少天禁用此用户账号
# 字段8:帐号失效时间,默认值为空
# 字段9:保留字段(未使用)
1.4 userdel
userdel命令 用于删除给定的用户,以及与用户相关的文件。若不加选项,则仅删除用户帐号,而不删除相关文件。
格式:
userdel [-r] 用户名
选项:
-r 选项,家目录/用户邮件也一并删除
例:
userdel -r nsd18 #连同家目录一并删除
userdel nsd20 #不删除家目录,只删除用户信息
2. 组账号简介
- 作用: 方便管理用户
- 唯一标识:GID(编号从0开始的编号,默认最大60000)
- 原则:Linux一个用户必须至少属于一个组
- 组账户的分类:
- 基本组:一般情况与用户同名,一个用户必须有基本组,基本组只能有一个
- 附加组(从属组):一个用户可以有多个附加组,也可以没有附加组
- /etc/group,保存组帐号的基本信息
- 每个组记录一行,以:分割为4个字段
[root@localhost ~]# grep stugrp /etc/group stugrp:x:1504:nsd06 组名:组密码占位符:组的GID:组成员列表
2.1 gpasswd
gpasswd命令 是Linux下工作组文件/etc/group
和/etc/gshadow
管理工具。
格式:
gpasswd [选项]... 组名
选项:
-a:添加组成员,每次只能加一个
-d: 删除组成员,每次只能删一个
-M:定义(重置)组成员用户列表,可设置多个用户
例:
#添加用户kaka到tarena组
gpasswd -a kaka tarena
#将nb用户从tarena组中删除
gpasswd -d nb tarena
#设置组管理员
gpasswd -A nb tarena
注意:
/etc/gshadow:组的管理信息配置文件
[root@localhost ~]# grep tarena /etc/gshadow
tarena:!:nb:
组名:密码加密字符串:组的管理员列表:组成员列表
[root@localhost /]# gpasswd -A 'nb,kenji' tarena #设置多个组管理员
[root@localhost /]# grep tarena /etc/gshadow
[root@localhost /]# gpasswd -A '' tarena #删除所有的组管理员
[root@localhost /]# grep tarena /etc/gshadow
3. 用户配置文件
- /etc/passwd:存放用户基本信息配置文件
[root@localhost ~]# head -1 /etc/passwd #显示文件第一行 root:x:0:0:root:/root:/bin/bash 用户名:密码占位符:UID:基本组GID:用户描述信息:家目录:解释器
3.1 用户初始配置文件
主要的初始配置文件:
- ~/.bashrc:每次进入新的Bash环境时执行(开启新的终端)
#定义永久别名
[root@localhost ~]# vim /root/.bashrc
……
alias hn='hostname'
……
开启新的终端进行测试:
[root@localhost ~]# hn
/etc/bashrc:全局配置文件,影响全体用户 (开启新的终端)
[root@localhost ~]# vim /etc/bashrc
……
alias myls='ls -ld'
……
#新开一个终端验证
[root@localhost ~]# useradd nsd21
[root@localhost ~]# su - nsd21 #相当于开启新的终端
[nsd21@localhost ~]$ myls /opt
[nsd21@localhost ~]$ exit
登出
[root@localhost ~]#
3.2 用户与组重要的配置文件
/etc/passwd: 用户基本信息配置文件
/etc/shadow: 用户密码信息配置文件
/etc/group: 组基本信息配置文件
/etc/gshadow: 组管理信息配置文件
补充:
Linux系统执行useradd命令,会完成那些操作?
1.会在/etc/passwd增加一行信息
2.会在/etc/shadow增加一行信息
3.会在/home新增用户家目录
4.会在/var/spool/mail增加用户邮件文件
5.会在/etc/group增加一行组信息
6.会在/etc/gshadow增加一行组的管理信息