用户及用户组管理命令汇总


命令总结: 

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 显示版本信息