用户和组管理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用户和组管理相关的知识,希望对你有一定的参考价值。
用户和组管理
每个用户都有一个UID,管理员root为0,普通用户1-65535。
系统用户:1-499(centos6),1-999(centos7)
登录用户:500+(centos6),1000+(centos7)
/etc/passwd 用户及其属性信息
/etc/group 组及其属性信息
/etc/shadow 用户密码及其相关属性
/etc/gshadow 组密码及其相关属性
/etc/passwd 文件格式:7
username:password(x):UID:GID:GECOS(用户全名或注释):home directory:shell
/etc/shadow 文件格式:8
username:加密后的口令:最后一次更改密码的时间(从1970年1月1日起至今的天数):最短密码有效期0天:最长密码有效期99999表示永不过期:密码过期前几天通知用户更改口令:密码过期后几天锁定账户:账户的有效期
$6 sha512 ;$5 sha256 ;$1 md5 128bit
!叹号表示锁定用户,禁止登录,!!双叹号更为保险,而且在centos7上不允许解锁空口令用户,即usermod -U tom 无法执行(先设置tom口令为空tom:!!:)
/etc/group 文件格式:4
groupname:x:gid:members(以当前组为附加组的用户列表,分隔符为逗号,)
/etc/gshadow 文件格式:4
groupname:!:administrators:members
###所有系统级操作尽可能不要直接更改配置文件,而是通过命令来改
useradd
创建新用户
Usage: useradd [options] LOGIN useradd -D useradd -D [options] -u 定义在/etc/login.defs -o 配合-u选项,不检查uid的唯一性 -g 指定用户所属基本组,可为组名或gid -c 用户的注释信息 -d 指定家目录,目录必须不存在,系统自动创建 -D 显示或改变默认useradd的配置 -s 指定用户默认shell,参考/etc/shells -G 指定附加组,组必须存在 -N 不创建同名组作为主组,使用users组作为主组 -r 创建系统用户 id<500(centos6);id<1000(centos7)
默认值设置: more /etc/login.defs more /etc/default/useradd useradd -D 显示添加用户的默认配置属性 useradd -D -s shell 更改默认shell useradd -D -b base_dir 更改默认base目录 useradd -D -g group 更改默认组 cat /etc/login.defs 默认登录设置 authconfig --passalgo=sha256 --update 更改密码加密算法 家目录的文件模板,可修改或添加文件,默认文件.bashrc... ll /etc/skel/* rm -rf /home/userb //误删除新用户家目录 cp -r /etc/skel /home/userb //重新生成家目录的默认配置文件
useradd userb
创建一个新用户时系统会同时修改以下4个文件,为了避免手工修改配置文件引发的错误和不同步,推荐用useradd命令方式来添加用户
ll /etc/passwd /etc/shadow /etc/group /etc/gshadow 同时修改这4个文件
date //查看时间检验文件是否为最新更改
ll /home //useradd命令会同时创建同名家目录
ll /var/spool/mail //同时创建同名的邮件文件
linux系统中关注的是id号,而不是名称,删除用户后,家目录不会同步删除,显示为id号,再创建同id号的账户则自动接管家目录
usermod
修改用户的基本信息
usermod [options] LOGIN -c 备注说明信息 -d 指定新家目录,但不会立即创建;若要创建并移动原家目录数据到新目录,则同时使用-m选项 -e 指定账户过期日期,格式为YYYY-MM-DD -f 设置非活动期限 -g 指定属组 -G 指定附加组,配合-a使用 -l 指定登录名 -L 锁定用户 -s 指定新shell -u 指定uid -U 解锁用户 usermod -L userabc 锁定用户 usermod -U userabc 解锁 usermod -aG g1 userabc 将userabc添加g1组中 usermod -l userabc usera 将用户userabc更名为usera usermod -G "" userabc 删除所有附加组 usermod -G userabc userabc 同上 getent shadow userabc 查看指定用户的密码信息
实验:注意提前备份或快照
将root id改为非0后,即系统中没有id=0的root账户,系统将无法启动,恢复方式如下:
实验平台:centos6*,(7*启动菜单有些差别,方法一样)
重新启动在启动菜单按a后加上参数init /bin/bash;centos7上是在Linux16那一行添加参数
mount -o remount,rw /
vi /etc/passwd 更改root id为0
sync 保存
reboot
userdel
删除用户
groupadd
创建新组
groupadd [options] GROUP -g 指定gid号,手工指定的gid号不受login.defs定义的范围限制; [gid_min,gid_max]--文件/etc/login.defs定义自动分配的gid -r:创建系统组,id<500(centos6);id<1000(centos7) groupadd -g 666666 group2 手工指定的gid号不受范围限制
groupmod
更改组名,组ID和组密码
groupmod [options] GROUP -g 更改组ID -n 更改组名 -p 更改组密码
groupdel
删除指定组
groupdel g1
删除组,必须为非主组,即主组下没有用户
chage
修改帐号和密码的有效期限
chage [options] LOGIN -d 上一次更改密码的日期,格式为YYYY-MM-DD,如果设置为0,则用户在下次登录时会提示必须更改密码 -E 账户有效期expiredate -I 密码失效时间Password inactive -l 显示用户的密码策略 -m 最短密码有效期,更改密码的最短间隔天数mindays -M 最长密码有效期,更改密码的最长间隔天数maxdays -W 密码过期前几天发出警告warndays chage -d 0 tom 下次登录强制重设密码 chage -m 0 -M 42 -W 14 -I 7 tom chage -E 2016-09-10 tom
设置默认口令参数,影响后续新增用户的密码策略
/etc/login.defs
/etc/default/useradd
新建用户的默认配置(centos7.3)
#chage -l test Last password change : Jun 03, 2017 Password expires : never Password inactive : never Account expires : never Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 7
chsh
变更登录系统的默认shell
chsh [-s shell] [-l] [-u] [-v] [username] chsh -l //查看系统支持的shell cat /etc/shells //同上 echo $SHELL //查看当前使用的shell chsh -s /bin/zsh usera //更改用户的shell tail /etc/passwd //查看更改后的用户shell
chfn
用来改变finger命令显示的信息
-f 姓名 -h 家中电话 -o 办公地址 -p 办公电话 chfn abc //直接按照步骤更改用户信息 finger abc //查看用户信息
id
显示用户ID及所属组的ID
id [OPTION]... [USER] -g 显示用户属组ID -G 显示用户附加组ID -r 显示实际ID -u 显示用户ID
finger
查找并显示用户信息
finger [-lmsp] [user ...] [[email protected] ...] -l 默认显示的信息 -s 以一行显示 -p 不显示计划任务信息 chsh -s /bin/csh usera 更改usera的默认shell getent passwd usera 查看指定用户的passwd信息,而非全部 more /etc/passwd | grep abc 功能同上
logname //用来显示用户名称
groups
显示用户所属组
groups 显示当前用户的所属组
groups usera 查看指定用户的所属组
groupmems
更改和查看组成员
groupmems [options] [action] options: -g 更改为指定组(只有root) actions: -a 指定用户加入组 -d 从组中删除用户 -p 从组中清空所有成员 -l 显示组成员列表 groupmems -l -g g2 查看g2组中成员 groupmems -a usera -g g2 往g2组中添加usera用户 groupmems -d usera -g g2 删除usera用户 groupmems -p -g g2 清空组成员
将用户加入附加组的3种方法:
usermod -aG groupname username gpasswd -a username groupname groupmems -a username -g groupname
passwd
用于让用户可以更改自己的密码
passwd [OPTION...] <accountName> -k 设置只有在密码过期失效后才能更改 -d 删除密码(root权限) -l 锁定用户 -u 解锁用户 -f 强制执行 -S 列出用户的密码信息为一行显示 -e:强制用户下次登录修改密码 -n mindays:指定密码最短使用期限 -x maxdays:最大使用期限 -w warndays:提前多少天开始警告 -i inactivedays:非活动期限 --stdin:从标准输入接收用户密码 echo "password" | passwd --stdin username 编写脚本更改用户密码 #passwd -S abc abc PS 2017-06-03 0 35 8 10 (Password set, SHA512 crypt.) #passwd -S aaaa aaaa LK 2017-06-03 0 99999 7 -1 (Password locked.) echo centos | passwd --stdin userb 自动设置用户口令 echo centos | passwd --stdin test &> /dev/null 不输出提示信息 getent passwd > username 导出当前所有系统用户,然后删除其中的系统账号
gpasswd
更改组密码或管理组成员
gpasswd [option] GROUP -a 添加用户到组 -d 从组中删除用户 -A 指定组管理员,使其具有管理权限,即可以增删组中用户 -M 指定组成员 -r 删除组密码 -R 限制用户登入组,只有组中的成员才可以用newgrp加入该组 newgrp usera //临时切换主组,如果用户本不属于此组,则需要组密码 touch newabc //创建文件newabc ll newabc //查看文件属组 -rw-r--r--. 1 root usera 0 May 27 20:52 newabc
newusers
批量创建用户
文件格式必须按照passwd文件的格式,即用户名1:x:UID:GID:用户说明:用户的家目录:所用SHELL
vi user 创建相同格式的passwd文件 test1:x:2000:2000::/home/test1:/bin/bash test2:x:3000:3000::/home/test2:/bin/csh :wq newusers user 批量创建用户命令newusers ll /home/test1 目录为空,即newusers命令不会自动创建目录文件
chpasswd
批量更新用户口令
vi password 创建用户密码文件,格式为username:password,并且不能有空行 test1:centos test2:redhat :wq cat passwd | chpasswd 或者chpasswd < passwd 读取用户密码文件 openssl rand -base64 10 随机生成一个10bit长度的口令
pwconv
用来开启用户的投影密码
开启后会将密码记录在/etc/passwd文件中,关闭后会将密码记录在/etc/shadow文件中,原passwd文件中的密码段用x代替
pwunconv
用来关闭用户的投影密码
grpconv
用来开启群组的投影密码
开启后系统会将密码直接记录在/etc/group文件中,关闭后会将密码记录在/etc/gshadow文件中
grpunconv
用来关闭群组的投影密码
vi编辑命令直接更改并自动检查语法格式
vipw
vigr
grpck
用于验证组文件的完整性
grpck /etc/group /etc/gshadow
pwck
用来验证系统认证文件内容和格式的完整性
pwck /etc/passwd
nologin
拒绝用户登录系统
vi /etc/passwd 找到需要禁止登录的用户,更改其shell字段为/sbin/nologin即可
touch /etc/nologin 创建nologin文件,禁止除了root以外的所有用户登录,删除文件即可恢复
su
切换用户或以其他用户身份执行命令
su username:非登录方式切换,即不会读取目标用户的配置文件,不改变当前工作目录
su - uername:登录方式切换,会读取目标用户的配置文件,并切换至家目录,即完全切换
root 通过su切换至其他用户无需密码;非root用户切换时需要密码
su [-] username -c cmd //切换用户身份执行指定命令
su -l username //相当于su - username,即完全切换
su - [root] 切换到root时root可省略
注意通过su切换之后,最好及时exit退出,否则会引起一些命令执行错误。
su - root -c ‘cat /etc/shadow‘ 切换到root身份执行cat /etc/shadow命令
本文出自 “rackie” 博客,请务必保留此出处http://rackie386.blog.51cto.com/11279229/1931933
以上是关于用户和组管理的主要内容,如果未能解决你的问题,请参考以下文章