Linux操作系统是一个多用户操作系统,用户在使用的时候必须向系统申请一个帐号,以这个帐号的身份进入系统使用操作系统分配的资源。每个用户都有一个用户名、UID、所属组、密码(非必须)、登录终端等。每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。每个组也有自己的名称、组唯一编号GID 。系统通过UID和GID来区分不同的用户和组,相同的UID和 GID会被系统认为是同一个用户。一般来说,GID和UID是可以不相同的,但绝大多数都会让它们保持一致,组分为主组和附加组两种,在Linux下用户必须拥有一个主组,但可以同时属于多个附加组。
通常我们把Linux下的用户分为以下三类
useradd [option] username
-u 创建时指定用户UID,配合 -o 选项不检查用户UID的唯一性
-g 指定新用户的主组,主组必须已经存在,可以使用组名或GID
-G 指定新用户附属组,多个组以逗号分割
-N 新建用户时不在创建同名主组,使用GID为100的组作为主组
-c 添加描述信息
-d 指定新用户homedir
-r 创建系统用户,默认不会创建homedir,可以配合 -m选项创建
-s 指定新用户登录shell
-M 不创建homedir
-D 查看配置文件中的默认值(/etc/default/useradd)
-D -s 修改配置文件中的默认登陆shell
示例:
[root@VMCent6 ~]# useradd -u 1024 -g root -G bin,adm -c ‘this is a new user‘ -d /home/test -s /sbin/nologin newuser
\\创建名为newuser的新用户,UID 为1024,主组为root,附加组为bin,adm,用户描述为this is a new user ,homedir为/home/test,并且指定不可登录。
[root@VMCent6 ~]# useradd -D \\在不指定参数的情况下,系统读取此文件默认设定
GROUP=100 \\使用-N时不创建同名主组,将此用户组作为新用户主组
HOME=/home \\新建用户默认homedir
INACTIVE=-1 \\是否启用账户过期,-1表示禁用
EXPIRE= \\帐号过期时间,空表示不启用
SHELL=/bin/bash \\默认登录shell
SKEL=/etc/skel \\默认框架目录
CREATE_MAIL_SPOOL=yes \\是否创建mail目录
[root@VMCent6 ~]# useradd -D -s /sbin/nologin \\新用户默认登陆shell为nologin
[root@VMCent6 ~]# useradd -D
..
SHELL=/sbin/nologin
..
[root@VMCent6 ~]# cat /etc/default/useradd
..
SHELL=/sbin/nologin
..
userdel [option] username
-r \\删除用户的同时递归删除用户homedir
-f \\强制删除用户即使正在登录,会同时删除用户homedir
usermod [options] username
-l:修改用户名,仅仅只是改用户名,其他的一切都不会改动(uid、家目录等)
-u:给用户指定新的GID,GID必须唯一,除非同时使用了-o选项
-g:修改用户主组,可以是以gid或组名。
-m:移动homedir内容到新的位置,须配合-d选项一起使用
-d:修改用户的homedir位置,若不存在则自动创建。默认旧的homedir不会删除如果同时指定了-m选项,会将旧homedir中内容移动到新的目录中,如果当前用户homedir不存在或没有,则不会创建新的homedir
-o:允许用户使用非唯一的UID
-s:修改用的shell,留空则选择默认shell
-c:修改用户注释信息
-a:将用户以追加的方式加入到辅助组中,只能和-G选项一起使用
-G:将用户加入指定的附加组中,若此处未列出某组,而此前该用户又是该组成员,则会删除该组中此成员
-L:锁定用户的密码,将在/etc/shadow的密码列加上前缀"!"或"!!"
-U:解锁用户的密码,解锁的方式是移除shadow文件密码列的前缀"!"或"!!"
-e:帐户过期时间,时间格式为"YYYY-MM-DD",如果给一个空的参数,则立即禁用该帐户
-f:密码过期后多少天,帐户才过期被禁用,0表示密码过期帐户立即禁用,-1表示禁用该功能
passwd命令用来修改用户密码
passwd [option] username
-d \\删除指定用户密码
-l \\锁定用户-u解锁用户
-e \\强制用户下次登录必须修改密码
-n \\指定密码最短使用期
-x \\最长使用期
-w \\提前几天警告
--stdin \\从标准输入接收密码
echo magedu | passwd --stdin nginx \\将ngix密码改为magedu
cat file | chpasswd \\从file文件批量修改密码
chpasswd < file \\file文件格式为每行对应一个用户及密码,以‘:‘分割
newusers file \\从file批量创建用户,file格式同/etc/passwd格式
修改指定用户密码策略
chage [option] username
-l \\显示指定用户密码策略
-E \\指定账户过期时间,0为立即过期
-M \\密码最大生存期,-m最小生存期
-W \\警告天数
/etc/passwd文件中存放系统用户信息,格式如下(截取部分内容):
[root@VMCent6 ~]# cat /etc/passwd
...
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
...
/etc/passwd 以":"为分隔符分成七列,每部分含义如下
!!修改此文件可能造成严重的后果,不建议直接修改此文件
/etc/shadow存放用户的登录密码等信息,由于其数据特殊性,普通用户并不能访问此文件。同样不建议直接进行修改。格式如下(截取部分内容):
[root@VMCent6 ~]# cat /etc/shadow
root:$6$CcFPE5IR8rRV4jXV$sxD7yVJoNLFWxQiaCO/193dr0L83ZbVAmckEovfxy5bAwN40k2oYyTSZHon4IjN4BaUhxL/7BnUkni5RwGJ0J.:17621:0:99999:7:::
bin:*:17246:0:99999:7:::
daemon:*:17246:0:99999:7:::
adm:*:17246:0:99999:7:::
lp:*:17246:0:99999:7:::
sync:*:17246:0:99999:7:::
shutdown:*:17246:0:99999:7:::
halt:*:17246:0:99999:7:::
...
具体含义如下,依旧是‘:’作为分隔符:
/etc/login.defs包含系统默认密码策略以及一些其他默认设定
PASS_MAX_DAYS 99999 \\默认最长口令有效期,/etc/shadow中第5个字段
PASS_MIN_DAYS 0 \\最短口令有效期,/etc/shadow中第4个字段
PASS_MIN_LEN 5 \\密码最短长度
PASS_WARN_AGE 7 \\提醒天数
...
UID_MIN 500 \\普通用户UID起始值
UID_MAX 60000 \\最大值,-u指定的值不受此影响
...
GID_MIN 500 \\groupadd新建组的起始GID
GID_MAX 60000 \\最大值
...
CREATE_HOME yes \\新用户是否默认创建homedir
...
ENCRYPT_METHOD SHA512 \\默认加密算法
...
UMASK 077 \\新建用户UMASK值,权限相关
...
USERGROUPS_ENAB yes \\新新建用户是否同时创建同名组
/etc/skel是一个目录,包含新用户创建homedir文件夹时的文件
参照上文useradd命令部分
groupadd用来创建新组
groupadd [option] groupname
-g \\指定GID,必须唯一,除非使用-o
-r \\创建系统组
groupmod用来修改组的属性
groupmod [option] grpname
-n ngrpname \\指定新组名
-g GID \\新GID
gropumems组成员管理
groupmems [option] [action]
-a \\指定用户加入组
-d \\从组中删除指定用户
-p \\清除所有组员
-l \\显示组成员
-g \\指定要修改的组仅root可用
和user相同,分别在/etc/group和/etc/gshadow文件保存着组信息和组密码信息
/etc/group格式如下
组名:组密码(占位符,加密后密码在个shadow文件):GID:以当前组为附加组的组成员
/etc/gshadow格式如下
组名:加密后组密码:组管理员:以当前组为附加组的组成员(以逗号分割)
参考内容:http://www.cnblogs.com/f-ck-need-u/p/7011669.html
更多资料:https://www.linuxidc.com/Linux/2016-10/136251.htm
原文地址:http://blog.51cto.com/13672361/2094392