用户及用户组管理命令汇总
命令总结:
useradd, usermod, userdel, passwd
groupadd, groupdel, groupmod, gpasswd, newgrp
chage, chsh, chfn, who, id, finger
su, w
============================================================================================================
文件总结:
/etc/passwd 用户的账号信息
/etc/shadow 用户密码和相关的账户设定
/etc/group 组的账号信息
/etc/gshadow 组的密码信息
/etc/passwd文件:
account:password:UID:GID:GECOS:directory:SHELL
登录名:密码点位符:UID:GID:注释信息:家目录:用户的默认shell
用户可以加入多个组:
基本组(passwd文件中的GID为用户的基本组,附加组信息在/etc/group中)
附加组
/etc/shadow文件:
username:encrypted_password:Last_password_change_date:minimun_password_age:maximum_password_age:password_warning_period:password_inactivity_period:account_expiration_date:reserved_filed
用户名:加密的密码:最近一次修改密码的时间:密码最短使用期限:密码最长使用期限:密码过期警告区间:密码非活动期限:账号过期期限:保留区域
username: 必须为有效并存在的用户名
encrypted_password:
Last_password_change_date:
上次密码修改时间,从1970年1月1日起-至修改当时的天数
0:表示下次登陆必须修改密码
空:表示密码aging功能被禁用
minimum_password_age:
允许用户再次修改密码的时间段
0 表示不限制再次修改密码的时间
maximum_password_age:
xx天后,用户必须要更改密码的时间段。
xx天后,原密码仍然有效,下次登陆时候会被提示更改密码
空: 用户没有maximum_password_age和password_warning_period, password_inactivity_period.
如果maximum < minimum, 则用户不能更改密码
password_warning_period:
距离maximum的日期,用户会被警告需要更改密码
0:不会被提醒更改密码
password_inactivity_period:
密码过期后的宽限期天数,从maximum到inactivity之间,原密码仍然有效
过了maximum,继续超过inactivity的天数,则密码无法再次登录
空: 没有过期后的inactivity强制时间段
account_expiration_date:
账号过期的日期,从1970年1月1日到设定的天数
不同于密码过期,如果账号过期,用户将无法通过密码登陆系统
空: 账号永不过期
0: 账户过期日期为1970年1月1号, 可理解为账户被禁用
reserved_filed:
保留字段,目前无用
man 5 shadow 可以查看全部详细/etc/shadows文件的解释文档
/etc/group文件:
groupname:组密码点位符:GID:user_list(属于该groupname组的username_list,使用逗号隔开)
user_list: 以此组作为附加组的用户列表
/etc/gshadow 组的密码信息
groupname:encrypted password:administrators:members
groupname: 系统中存在的有效的组名
encrypted password: 加密的密码
administrators: 必须是逗号分隔的用户名
administrators内的用户可以更改组密码, 也可以更改组内成员
members: 必须是逗号分割的用户名
members内的用户可以无需密码访问该组
应该使用/etc/group内的user list
============================================================================================================
用户账号管理:
useradd - 创建新用户,或者 更新 新用户账号信息
useradd [-D] [options] LOGIN
当不加 -D 选项, 系统将更新系统文件来完成创建:
1. 添加新用户(/etc/passwd)
2. 与用户同名的组(/etc/group)
3. 创建与用户名同名的HOME目录(/home/USERNAME)
[options]
-u UID 用户标识符
-g GID 所属的基本组
-G GID 所属的附加组
-c 'COMMENT' 注释信息
-d /path/to/home 指定user家目录,如果此目录事先存在,创建时会有警告
-s SHELL: 必须是/etc/shells文件中存在的shell
-m 强制给用户创建家目录
-M 不给用户创建家目录
-r 创建系统用户(0<UID<499, 没有aging信息,没有家目录,如果需要给系统用户创建家目录,需要-m指定)
usermod - 修改一个用户账号
usermod [options] USERNAME
-u UID
-g GID
-G GID 修改用户的附加组;此选项与-a一起使用来追加方式修改附加组
-c 'COMMENT'
-d /path/to/home
-m选项可保证创建家目录,并将用户原有的文件移动至新的家目录中
-s SHELL
-l LOGIN_NAME 修改登录名
-L lock 锁定
-U unlock 解锁
userdel - 删除用户账号,并且删除相关文件
userdel [options]
[options]
-f,--force 强制删除用户,甚至用户已经登陆。并且强制删除用户home,mail,spool
-r, --remove 删除用户,home,mail,spool. 位于其他文件系统的文件不会被删除
passwd - 更新用户的授权口令的工具
--stdin: 从标准输入读取密码(从管道)
-l: lock 锁定密码(root only)
-u: unlock 解锁密码(root only)
====================================================================================================
用户组管理
groupadd - 创建新组
groupadd [options] group
-g: GID 指定GID
-r: 系统组
groupdel - 删除组
groupdel group
groupmod - 修改系统中的组定义
groupmod [options] group
-g: GID: 修改为指定的GID
-n:修改为新的组名
gpasswd - 管理 /etc/group 和 /etc/gshadow
-a, --add 添加用户到该组
-d, --delete 从该组中删除用户
-A, --administrators 设置该组的管理员
-M, --members 设置该组的成员
newgrp - 在当前登陆的session中更改GID, 如果使用了[-] 则登陆的用户的环境将重新初始化, 如果没用[-] 则不会改变当前环境变量,家目录等。
如果没有给定组名,将尝试登陆该用户的预设组
newgrp相当于login指定,当他是以相同的账号,另一个组的名字,再次登录系统。
若使用newgrp切换GID,用户必须是该组的用户(root用户除外),或者知道该组密码。
newgrp [-] [group]
===========================================================================================================
用户,用户组的管理小工具
chage - 更改用户密码过期信息
-d, --lastday 最后一次更改的日期天数,从1970年1月1日开始计算
-E, --expiredate 更改用户密码过期的日期天数,从1970年1月1日开始计算
也可以使用 YYYY-MM-DD 格式来设置
-I, --inactive
-l, --list 查看账户的aging information
-m, --mindays 从更改密码当时开始,设置最小有效天数
-M, --maxdays 设置最大有效密码天数
-W, --warndays 设置需要更改密码之前的警告天数
chsh - 更改用户shell
chfn - 修改用户的finger information
who - 显示登陆的用户信息
id - 查看用户信息
id USERNAME
-g
-G
-n
-u
finger - 用户信息查看
su - 切换用户:
su [option] USERNAME
-l: 完全切换, l可省略
-c: 'COMMAND': 仅以指定用户运行命令,并取回结果
w - 查看登陆的用户,而且可以查看他们正在做什么
w - [husfV] [user]
-h 不打印标题
-u 查看当前进程和cpu用时的信息时候,忽略用户名
-s 短模式,不打印login tim, JCPU or PCPU times
-f
-V 显示版本信息