配置文件和格式

/etc/passwdlogin name:passwd:UID:GID:注释(finger  username 查看注释):用户家目录:shell

/etc/group:群组名:群组密码(记录在gshadow):GID:以当前组为附加组的用户列表:(分隔符为逗号)

/etc/shadow: login name:passwd:last  changed:min:max:warn:inact:expire

/etc/gshadow:群组名:群组密码:组管理员列表:以当前组为附加组的用户列表: (分隔符为逗号)

groupgshadow附加组应同步

 

用户管理

用户必须属于一个且只有一个主组,一个用户可以属于零个或多个辅助组

 

1.useradd命令

*   -u UID; -ou 不检查uid唯一性 ;  -g 指明用户基本组 ;  -c 注释信息;  -s shell程序;  -G 附加组 ;-r 系统用户 ;-d 指定家目录-m配合  ;-p   这个命令是需求提供md5码的加密口令,普通数字是不行的。

示例:

创建用户gentoo,附加组为binroot,默认shell/bin/csh,注释信息为"Gentoo  Distribution"

[root@centos6  ~]#useradd  -G bin,root -s /bin/csh -c "Gentoo Distribution" gentoo
  [root
@centos6 ~]#getent passwd gentoo
  gentoo:x:
515:515:Gentoo  Distribution:/home/gentoo:/bin/csh
  [root
@centos6 ~]#id gentoo
  uid=
515(gentoo) gid=515(gentoo) groups=515(gentoo),0(root),1(bin)

创建系统用户

[root@centos7 ~]# useradd -r -s /sbin/nologin -d /etc/mysql mysql  ----新增系统用户mysql  shelll类型为sbin/nologin(不可交互式登陆)

 

系统用户 -r ----有三个特征  :

  1. UID1000内系统账户(centos7)

  2. 默认家目录和其家目录下配置文件.邮箱不会自动生成  要手动在home下创建配置文件,在/home 目录下创建新家目录,并修改家目录、相应的配置文件权限会将/etc/shel目录下的隐藏文件拷贝到家目录下

  3. 如果指定家目录 需加上-d -m 

示例如下:

[root@centos7 ~]#useradd -r -s /sbin/nologin zab  #默认不指定家目录 需要手动创建家目录并创建配置文件

zab:x:987:982::/home/zab:/sbin/nologin 

[root@centos7  ~]#ll /home

total  4

drwx------.  14 beings beings 4096 Jul 14 12:51 beings

[root@centos7  ~]#cp -r /etc/skel /home/zab

[root@centos7  ~]#ls -al /home/zab

total  12

drwxr-xr-x.  3 root root  74 Jul 30 15:45 .

drwxr-xr-x.  4 root root  29 Jul 30 15:45 ..

-rw-r--r--.  1 root root  18 Jul 30 15:45  .bash_logout

-rw-r--r--.  1 root root 193 Jul 30 15:45 .bash_profile

-rw-r--r--.  1 root root 231 Jul 30 15:45 .bashrc

drwxr-xr-x.  4 root root  37 Jul 30 15:45 .mozilla

[root@centos7  ~]#chown -R zab:zab /home/zab

[root@centos7  ~]#ls -al /home/zab

total  12

drwxr-xr-x.  3 zab  zab   74 Jul 30 15:45 .

drwxr-xr-x.  4 root root  29 Jul 30 15:45 ..

-rw-r--r--.  1 zab  zab   18 Jul 30 15:45 .bash_logout

-rw-r--r--.  1 zab  zab  193 Jul 30 15:45 .bash_profile

-rw-r--r--.  1 zab  zab  231 Jul 30 15:45 .bashrc

drwxr-xr-x.  4 zab  zab   37 Jul 30 15:45 .mozilla

所以上面操作最好指定家目录

[root@centos7 ~]#useradd -r -s /sbin/nologin -d -m /home/zab zab

 

*如果一个用户账号被删除,未被删除家目录,为了访问该以前该家目录。可以设置指定uid跟该账号一样的用户,就可以访问该被删除用户的家目录

[root@centos7  ~]# ll /home

total 8

drwx------.  14 beings beings 4096 Jul 14 12:51 beings

drwx------.  3 liu     liu      74 Jul 23 10:26 liu

drwx------.  5 wang    wang   4096 Jul 23 10:49 wang

drwx------.  3   1002 wang     74 Jul 23 10:14 zhang

[root@centos7  ~]# useradd -u 1002 li

[root@centos7  ~]# ll /home

total 8

drwx------.  14 beings beings 4096 Jul 14 12:51 beings

drwx------.  3 li      li       74 Jul 23 11:41 li

drwx------.  3 liu     liu      74 Jul 23 10:26 liu

drwx------.  5 wang    wang   4096 Jul 23 10:49 wang

drwx------.  3 li     wang     74 Jul 23 10:14 zhang

来看其他示例

1

# useradd -d  /usr/sam -m sam

此命令创建了一个用户sam,其中-d-m选项用来为登录名sam产生一个主目录/usr/sam/usr为默认的用户主目录所在的父目录)。

2

# useradd -s /bin/sh -g group -G adm,root gem

此命令新建了一个用户gem,该用户的登录Shell/bin/sh,他属于group用户组,同时又属于admroot用户组,其中group用户组是其主组。

这里可能新建组:groupadd  group groupadd adm   

注:可以有多个附加组,但主组唯一

增加用户账号就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件,如/etc/shadow/etc/group等。

Linux提供了集成的系统管理工具userconf,他能用来对用户账号进行统一管理。

注:

      用户帐户本身在 /etc/passwd 中定义。Linux 系统包含一个 /etc/passwd 的同伴文件,叫做 /etc/shadow。该文件不像  /etc/passwd,只有对于 root 用户来说是可读的,并且包含加密的密码信息。

 

2.usermod 命令

此处着重介绍  -G  ; -d

*-G ----新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项

*-d ----新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用-m选项

常用的其他选项包括-c,-d-m,-g,-G-a,-s,-u,-o等,这些选项的意义和useradd命令中的相同,能为用户指定新的资源值。

示例1

[root@centos7  ~]#useradd -d /app/zab zab

[root@centos7  ~]#ls -al /app/zab

total  12

drwx------.  3 zab  zab   74 Jul 30 15:52 .

drwxr-xr-x.  3 root root  16 Jul 30 15:52 ..

-rw-r--r--.  1 zab  zab   18 Nov 20   2015 .bash_logout

-rw-r--r--.  1 zab  zab  193 Nov 20   2015 .bash_profile

-rw-r--r--.  1 zab  zab  231 Nov 20   2015 .bashrc

drwxr-xr-x.  4 zab  zab   37 Jul 14 11:17 .mozilla

[root@centos7  ~]#usermod -d /home/zab -m zab

[root@centos7  ~]#ll /app

total  0

[root@centos7  ~]#ll /home

total  4

drwx------.  14 beings beings 4096 Jul 14 12:51 beings

drwx------.  3 zab     zab      74 Jul 30 15:52 zab

[root@centos7  ~]#ls -al /home/zab

total  12

drwx------.  3 zab  zab   74 Jul 30 15:52 .

drwxr-xr-x.  4 root root  29 Jul 30 15:53 ..

-rw-r--r--.  1 zab  zab   18 Nov 20   2015 .bash_logout

-rw-r--r--.  1 zab  zab  193 Nov 20   2015 .bash_profile

-rw-r--r--.  1 zab  zab  231 Nov 20   2015 .bashrc

drwxr-xr-x.  4 zab  zab   37 Jul 14 11:17 .mozilla

示例2

# usermod -s /bin/ksh -d /home/z -g developer -m sam

此命令将用户sam的登录Shell修改为ksh,主目录改为/home/z,用户组改为developer

#usermod    -g cheng  zte1

#此命令是改动用户zte1所属的组为cheng这个组

 

 

3.userdel命令

userdel  选项 用户名

常用的选项是-r,他的作用是把用户的主目录一起删除。

例如:

# userdel -r  sam

此命令删除用户sam在系统文件(主要是/etc/passwd/etc/shadow/etc/group等)中的记录,同时删除用户的主目录。

 

4.用户修改其他命令

4.1.passwd命令

代码:

passwd  选项 用户名

可使用的选项:

-l  锁定口令,即禁用账号。

-u  口令解锁。

-d  使账号无口令。

-f  强迫用户下次登录时修改口令。

如果默认用户名,则修改当前用户的口令。

例如:假设当前用户是sam,则下面的命令修改该用户自己的口令:

$ passwd

Old  password:******

New  password:*******

Re-enter new  password:*******

如果是root用户,能用下列形式指定任意用户的口令:

# passwd sam

New  password:*******

Re-enter new  password:*******

普通用户修改自己的口令时,passwd命令会先询问原口令,验证后再需求用户输入两遍新口令,如果两次输入的口令一致,则将这个口令指定给用户;而终极 用户为用户指定口令时,就不必知道原口令。为了安全起见,用户应该选择比较复杂的口令,最佳使用不少于8位的口令,口令中包含有大写、小写字母和数字,并 且应该和姓名、生日等不相同。

为用户指定空口令时,执行下列形式的命令:

代码:

# passwd -d  sam

此命令将用户sam的口令删除,这样用户sam下一次登录时,系统就不再询问口令。

passwd命令还能用-l(lock)选项锁定某一用户,使其不能登录,例如:

代码:

# passwd -l  sam

echo 密码 | passwd --stdin 用户名 ----一次修改用户名密码 不用重复输入两次 root权限

 

4.2. chage 修改用户密码时间配置信息

[root@zab app]# chage zab ---修改密码时间配置信息

Changing the  aging information for zab

Enter the new  value, or press ENTER for the default

 

Minimum Password Age [0]:

Maximum Password Age [99999]:

Last Password Change (YYYY-MM-DD) [2017-07-22]:

Password Expiration Warning [7]:

Password Inactive [-1]:

Account Expiration Date (YYYY-MM-DD) [-1]:

也可使用命令指定如下:

[root@zab  app]# chage -m 0 -M 42 -W 14 -I 7 zab

4.3. getent命令 查看用户系统数据相关记录

[root@zab app]# getent shadow zab  ----getent 查看系统数据库相关记录

zab:!!:17369:0:42:14:7::

4.4. finger 命令 查看用户相关个人信息

4.5. chfn 命令   修改用户相关个人信息

[root@zab app]# chfn zab ----修改个人信息

Changing  finger information for zab.

Name []:

Office []:

Office Phone  []:

Home Phone  []:

 

4.6. 修改用户shell类型

Finger  information not changed.

[root@zab app]# chsh zab ----修改shell类型

Changing  shell for zab.

New shell  [/bin/bash]:

 

其它命令:

pwcov   #同步用户从/etc/passwd 到/etc/shadow

pwck   #pwck是校验用户配置文件/etc/passwd 和/etc/shadow文件内容是否合法或完整

newusers   passwd格式文件 批量创建用户

chpasswd   批量修改用户口令

配置文件v/etc/default/useradd v/etc/skel/* v/etc/login.defs v

 

用户组管理

每个用户都有一个用户组,系统能对一个用户组中的所有用户进行集中管理。不同Linux系统对用户组的规定有所不同,如Linux的用户属于和他同名的用户组,这个用户组在创建用户时同时创建。用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就对/etc/group文件的更新。

用户组(group)就是具有相同特征的用户user)的集合体;比如有时我们要让多个用户具有相同的权限,比如查看、修改某一文件或执行某个命令,这时我们需要用户组,我们把用户都定义到同一用户组,我们通过修改文件或目录的权限,让用户组具有一定的操作权限,这样用户组下的用户对该文件或目录都具有相同的权限,这是我们通过定义组和修改文件的权限来实现的;

举例:

我们为了让一些用户有权限查看某一文件,比如是个时间表,而编写时间表的人要具有读写执行的权限,我们想让一些用户知道这个时间表的内容,而不让他们修 改,所以我们能把这些用户都划到一个组(用chgrp命令),然后来修改这个文件(用chmod命令)的权限,让用户组可读(用chgrp命令将此文件归 属于这个组),这样用户组下面的每个用户都是可读的,其他用户是无法访问的。

 

1、增加一个新的用户组使用groupadd命令。格式如下:

代码:

groupadd  选项 用户组[用户组添加后,将用户进行组赋予用chownchgrp指令]

能使用的选项有:

-g  GID 指定新用户组的组标识号(GID)。

-o  一般和-g选项同时使用,表示新用户组的GID能和系统已有用户组的GID相同。

1

# groupadd  group1

此命令向系统中增加了一个新组group1,新组的组标识号是在当前已有的最大组标识号的基础上加1

2

# groupadd -g  101 group2

此命令向系统中增加了一个新组group2,同时指定新组的组标识号是101

3:

.创建下面的用户、组和组成员关系

名字为admins 的组

用户natasha,使用admins  作为附属组

用户harry,也使用admins  作为附属组

用户sarah,不可交互登录系统,且不是admins  的成员,natashaharrysarah密码都是centos

[root@centos6 ~]#groupadd admins
  [root@centos6 ~]#useradd -G admins natasha
  [root@centos6 ~]#useradd -G admins harr
Y

[root@centos6 ~]#useradd -r -s /sbin/nologin  sarah
  [root@centos6 app]#vim passwd.txt
  natasha:centos
  harry:centos
  sarah:centos
  [root@centos6 app]#cat passwd.txt |chpasswd

 

2、如果要删除一个已有的用户组,使用groupdel命令,格式如下:

代码:

groupdel  用户组

例如:

# groupdel  group1

此命令从系统中删除组group1

3、修改用户组的属性使用groupmod命令。其语法如下:

代码:

groupmod  选项 用户组

常用的选项有:

-g  GID 为用户组指定新的组标识号。

-o  -g选项同时使用,用户组的新GID能和系统已有用户组的GID相同。

-n  新用户组 将用户组的名字改为新名字

1

# groupmod -g  102 group2

此命令将组group2的组标识号修改为102

2

# groupmod -g  10000 -n group3 group2

此命令将组group2的标识号改为10000,组名修改为group3

4、如果一个用户同时属于多个用户组,那么用户能在用户组之间转换,以便具有其他用户组的权限。用户能在登录后,使用命令newgrp转换到其他用户组,这个命令的参数就是目的用户组。

例如:

$ newgrp liu

这条命令将当前用户转换到liu用户组,前提条件是liu用户组确实是该用户的主组或附加组。类似于用户账号的管理,用户组的管理也能通过集成的系统管理工具来完成。

[wang@centos7  root]$ id wang

uid=1001(wang)  gid=1001(wang) groups=1001(wang),1003(liu)

[wang@centos7 root]$ newgrp liu   ----wangliu成员  临时切换不需要组密码

[wang@centos7  root]$ id

uid=1001(wang)  gid=1003(liu) groups=1003(liu),1001(wang)

5.组成员查看

*groups username ----查看username属于什么组

*groupmems -l -g username----查看username组里的成员

注意:二者区别

 

6.其它相关命令

* groupmems [options] [action] ----参数与-g配合使用

  options

 -g, --group groupname 更改为指定组 (只有root)

 Actions:

-a, --add username 指定用户加入组

-d, --delete username 从组中删除用户

-p, --purge 从组中清除所有成员

-l, --list 显示组成员列表

 

*gpasswd [OPTION] GROUP

-a ----user添加至指定组中

-d user: 从指定组中移除用户user

 

增加附加组三种方法:

[root@zab  ~]# id wang

uid=502(wang)  gid=504(wang) groups=504(wang)

[root@zab ~]# usermod -aG li wang  ----wang里增加li这个组

[root@zab  ~]# id wang

uid=502(wang)  gid=504(wang) groups=504(wang),503(li)

 

[root@zab  ~]# id wang

uid=502(wang)  gid=504(wang) groups=504(wang)

[root@zab ~]# gpasswd -a wang li ----增加wangli这个组里

Adding  user wang to group li

[root@zab  ~]# id wang

uid=502(wang)  gid=504(wang) groups=504(wang),503(li)

 

 

[root@zab  ~]# id wang

uid=502(wang)  gid=504(wang) groups=504(wang)

[root@zab ~]# groupmems -a wang -g li ----增加wangli这个组的成员

[root@zab  ~]# id wang

uid=502(wang)  gid=504(wang) groups=504(wang),503(li)

*清空附加组四种方法:

[root@centos7  ~]# id wang

uid=1001(wang)  gid=1001(wang) groups=1001(wang),1002(zhang)

[root@centos7  ~]# usermod -G wang wang

[root@centos7  ~]# id wang

uid=1001(wang) gid=1001(wang) groups=1001(wang)

 

[root@centos7 ~]# usermod -aG liu wang    ----添加liuwang的附加组,不添加-a则原有附加组将被覆盖

[root@centos7  ~]# id wang

uid=1001(wang)  gid=1001(wang) groups=1001(wang),1003(liu)

[root@centos7 ~]# usermod -G '' wang     ----''表示空格

[root@centos7 ~]#  id wang

uid=1001(wang)  gid=1001(wang) groups=1001(wang

[root@zab ~]#  id wang

uid=502(wang)  gid=504(wang) groups=504(wang),500(zab)

[root@zab ~]# groupmems -d wang -g zab

[root@zab ~]#  id wang

uid=502(wang)  gid=504(wang) groups=504(wang)

[root@zab ~]# gpasswd -d wang zab

[root@zab ~]# id  wang   

uid=502(wang)  gid=504(wang) groups=504(wang)

 

 

用户以及用户组管理往往涉及到权限管理chmodchgrpsudosetfacl等命令。

如果要更多了解和学习用户组管理的命令,可查询man帮助!