Linux系统的用户和用户组管理

 

 

一、用户账户管理  

Linux/Unix是一个用户、多任务的操作系统;在讲Linux账号及账户组管理之前,先简单了解一下多用户、多任务操作系统的基本概念。

 

Linux的单用户多任务

  Linux下,当你登录后,你也可以同时开启很多的服务任务和进程,而各自服务都会跑的很好却对其他任务没有任何影响,这种登录一个用户登录系统执行多个服务任务和进程的情况,就称为单用户多任务。

 

Linux的多用户多任务


  有时可能是很多用户同时用同一个系统,如公司几十个运维人员,每台机器都可以和被若干个运维人员登录部署或解决相关故障问题,但并不是所有的运维人员都要做同一件事,所以就有了多任务、多用户的情况。

值得注意的是:多用户、多任务并不是大家同时挤到一起,在一台机器的键盘和显示器前来操作机器,多用户可能是通过SSH客户端工具等远程工具等远程登录服务器来进行,比如对服务器的运程控制,只要具有相关用户的权限,任何人都是可以上去操作访问服务器。

 

 

linux系统用户角色划分


  用户在系统中是分角色的,在Linux系统中,由于角色的不同,权限和所完成的任务也不同;值得注意的是用户的角色是通过UID和GID识别的;特别是UID,在运维工作中,一个UID是唯一标识一个系统用户的账号。


用户账户:

 

    超级用户root(0)
    程序用户(1~499)
    普通用户(500~65535

 

 

 

超级用户:

  默认是root用户,其UID和GID均为0。在每台unix/linux操作系统中都是唯一且真实存在的,通过它可以登录系统,可以操作系统中任何文件和命令,
拥有最高的管理权限。在生产环境,一般禁止root账号远程登录SSH连接服务器,以加强系统安全。

 


普通用户:

 

  这类用户一般是由具备系统管理员root的权限的运维人员添加的。

 


程序用户:

与真实用户区分开来,这类用户的最大特点是安装系统后默认就会存在的,且默认情况不能登录系统,它们是系统正常运行必不可少的,
他们的存在主要是方便系统管理,满足相应的系统进程都文件属主的要求。例如系统默认的bin、adm、nodoby、mail用户等。由于服务器角色的不同,
有部分用不到的系统服务被禁止开机执行,因此,在做系统安全优化时,被禁止开机启动了的服务对应的虚拟用户也是可以处理掉的(删除或注释)。

 

多用户操作系统的安全


 多用户系统从实际来说使得系统管理更为方便了。从安全角度来说,多用户也更为安全,比如普通用户zgy下的某个文件不想让其他用户看到,只是设置一下该文件的权限为普通用户zgy一个用户可读可写可执行的权限就行了,这样以来只有普通用户zgy一个用户可以对其私有文件进行操作,从而达到了保护每个用户的私有数据安全。

 

二、账户(user)和账户组(group)

 

用户(user)介绍


 如果要使用系统资源,就必须向系统管理员申请一个账号,然后通过这个账号进入系统。这个账号和用户是同一个账号,通过建立不同属性的用户,一方面,可以合理的利用和控制系统资源,另一方面也可以帮助用户组织文件,提供对用户文件的安全性保护。

每一个用户都有一个唯一的用户名和用户口令,在登录系统后,只有正确输入了用户名和密码,才能登录系统和相应的目录。
  在生产环境中,一般会为每一个有权限管理服务器的运维人员分配一个独立的普通用户账号及8位以上(包含数字、字母)以上的密码。

如zgy普通用户,该人员只能通过建立的这个账号登录到系统中进行维护,当需要超级用户权限时,可以通过"sudo 命令名"方式来执行仅有root权限才允许执行的权限。当然,sudo权限要尽量的小。还有,当运维人数不多时(如2-3个),也可以直接su - 切换到超级用户root下,再执行相应的维护工作。特别提醒,维护时,如果不需要root权限,就不要进入root用户下操作,以减少误操作对系统带来的损失。

 

用户组(group)介绍

简单的说,linux系统中的用户组(group)就是具有相同特性的用户(user)集合;
  有时我们需要让多个用户具有相同的权限,比如查看、修改某一个文件或目录,如果不用用户组,这种需求在授权时就很难实现。如果使用用户组就方便多了,只需要把授权的用户都加入到同一个用户组里,然后通过修改该文件或目录的对应的用户组的权限,让用户组具有符合需求的操作权限,这样用户组下的所有用户对该文件或目录就会具有相同的权限,这就是用户组的用途。
  将用户分组是linux系统中对用户进行管理及控制访问权限的一种手段,通过定义用户组,在很大程度上简化了运维管理工作。
  实际上,在日常生活中,对人类的分组也是无处不在的,达到国家,小到公司,家庭,学校,班级等等都类似linux中用户组的概念,而其中的成员就类似linux用户组中用户的概念。

 

 

用户和用户组的对应关系

 

用户和用户组的对应关系有:一对一、一对多、多对一和多对多.

 

一对一:即一个用户可以存在一个组中,也可以是组中的唯一成员。比如,root。
一对多:即一个用户可以存在多个组中,这个用户就具有这些组。
多对一:即多个用户可以存在一个组中,这些用户这些组的共同权限。

多对多:即多用户可以存在于多个组中。并且几个用户可以归属相同的组;其实多对多的关系是前面三条的扩展。

 


  组账户:


基本组(私有组) 附加组(公共组)

 

用户及用户组配置文件介绍

 

 Linux系统中下的账户文件主要有/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow四个文件。


   

与用户相关的配置文件

 

/etc/passwd:  #用户的配置文件, 保存用户账户的基本信息
/etc/shadow  #用户影子口令文件

 

用户的配置文件/etc/passwd

 /etc/passwd文件中每行定义一个用户账号,有多少行就表示多少个账号,在一行中可以清晰的看出,各内容之间又通过”:”号划分了7个字段,这7个字段分别定义了账号的不同属性,passwd文件实际内容如下:

 

 

[root@Web ~]# head -5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

 

 

 

在passwd文件中,第一行内容就是超级用户root行,可以看到它的uid和gid都为0.为了方便理解,下面是各字段的描述:

  字段1:帐号名,这是用户登陆时使用的账户名称,在系统中是唯一的,不能重名
    字段2:密码占位符x;早期的unix系统中,该字段是存放账户和密码的,由于安全原因,后来把这个密码字段内容移到/etc/shadow中了。
      这里可以看到一个字母x,表示该用户的密码是/etc/shadow文件中保护的。 字段3:UID;范围是0-65535 字段4:GID;范围是0-65535;当添加用户时,默认情况下会同时建立一个与用户同名且UID和GID相同的组。 字段5:用户说明;这个字段是对这个账户的说明 字段6:宿主目录;用户登陆后首先进入的目录,一般与"/home/用户名"这样的目录 字段7:登录Shell 当前用户登陆后所使用的shell,在centos/rhel系统中,默认的shell是bash;如果不希望用户登陆系统,可以通过usermod
      或者手动修改passwd设置,将该字段设置为
/sbin/nologin 即可。大多数内置系统账户都是/sbin/nologin,这表示禁止登陆系统。
      这是出于安全考虑的。

 

passwd中有关UID的限制说明

 

0:当用户的UID为0时,表示这个账户为超级用户;如果要增加一个系统管理员账户的话,只需将该账户的UID改为0即可。不建议
1~499:这个范围是保留给系统用户使用的UID
500~65535:普通账户UID

 最后,来看一下/etc/passwd的权限:

 

[root@Web ~]# ls -l /etc/passwd
-rw-r--r--. 1 root root 1665 4月  11 14:13 /etc/passwd

 

因为每个用户登录时都需要取得UIDGID来判断权限问题,所以/etc/passwd的权限为644,这样一来就会带来安全问题,即所有的用户都可以都/etc/passwd文件,即使文件内的密码是加密的,但还是存在一定的被攻击破解的安全隐患。因此,就有了/etc/shadow文件。

 

 

用户的影子口令文件/etc/shadow

 

 

 

由于passwd文件必须要被所有的用户读,所以会带来安全隐患。而shadow文件就是为了解决这个安全隐患而增加的。

来看一下/etc/shadow的权限:

 

[root@Web ~]# ls -l /etc/shadow
----------. 1 root root 1059 4月  11 14:13 /etc/shadow

 

其文件内容为:

 

[root@Web ~]# head -5 /etc/shadow
root:$6$jmM2rFzPCFbmqBkf$oz3AUooR3qaV5uXU67HcXlYiE3hNf0sSsunk1eBTDPrGUOM1xYCyesGoj.ZLTIzdiXEdrnnqNyC5g8SsRnxQm.:16338:0:99999:7:::
bin:*:15615:0:99999:7:::
daemon:*:15615:0:99999:7:::
adm:*:15615:0:99999:7:::
lp:*:15615:0:99999:7:::

/etc/passwd一样,shadow文件的每一行内容,也是以冒号(:)作为分隔符,共9个字段,其各个字段的意义如下表:

 

   字段1:帐号名称
    字段2:加密的密码
    字段3:最近更改密码的时间;从1970/1/1到上次修改密码的天数
    字段4:禁止修改密码的天数;从1970/1/1开始,多少天之内不能修改密码,默认值为0
    字段5:用户必须更改口令的天数;密码的最长有效天数,默认值为99999
    字段6:警告更改密码的期限;密码过期之前警告天数,默认值为7;在用户密码过期前多少天提醒用户更改密码
    字段7:不活动时间;密码过期之后账户宽限时间 3+5;在用户密码过期之后到禁用账户的天数
    字段8:帐号失效时间,默认值为空;从1970/1/1日起,到用户被禁用的天数
    字段9:保留字段(未使用),标志

 

密码过期:一旦超过密码过期日期,用户成功登陆,Linux会强迫用户设置一个新密码,设置完成后才开启Shell程序
账户过期:若超过账户过期日期,Linux会禁止用户登陆系统,即使输入正确密码,也无法登陆

 

 

与用户组相关的配置文件

 

/etc/group  #用户组配置文件
/etc/gshadow  #用户组的影子文件

 

 用户组配置文件/etc/group

 /etc/group 文件是用户组的配置文件,内容包括用户与用户组,并且能显示用户归属哪个用户组,因为一个用户可以归属一个或多个不同的用户组;同一用户组的用户之间具有相似的特性。如果某个用户下有对系统管理有最重要的内容,最好让用户拥有独立的用户组,或者是把用户下的文件的权限设置为完全私有;另外root用户组一般不要轻易把普通用户加入进入。

 

 /etc/group文件就是记录GID与用户组的文件。/etc/group文件同/etc/passwd类似,其文件权限也是644

 

 

[root@Web ~]# ls -l /etc/group
-rw-r--r--. 1 root root 832 4月  11 14:13 /etc/group

 

 

 

 

 

/etc/group的文件内容为:

 

[root@Web ~]# head -5 /etc/group
root:x:0:
bin:x:1:bin,daemon
daemon:x:2:bin,daemon
sys:x:3:bin,adm
adm:x:4:adm,daemon

 

group文件各个字段的详细说明:

  字段1:组账户名称
    字段2:密码占位符x;通常不需要设置该密码,由于安全原因,该密码被记录在/etc/gshadow中,因此显示为'x'。这类似/etc/shadow
    字段3:组账户GID号,用户组ID
    字段4:本组的成员用户列表;加入这个组的所有用户账号

 

用户组的影子文件/etc/gshadow

/etc/gshaow是/etc/group的加密文件,比如用户组的管理密码就是存放在这个文件。/etc/group和/etc/gshadow是互补的两个文件;比如大型服务器,针对很多用户和用户组,定制一些关系结构比较复杂的额权限模型,设置用户组密码是极有必要的。比如不想让一些非用户组成员永久拥有用户组的权限和特性,这时就可以通过密码验证的方式来让某些用户临时拥有一些用户组特性,这时就要用到用户组密码;/etc/gshadow格式如下,每个用户组独占一行;

[root@Web ~]# ls -l /etc/gshadow
----------. 1 root root 682 4月  11 14:13 /etc/gshadow
[root@Web ~]# head -5 /etc/gshadow
root:::
bin:::bin,daemon
daemon:::bin,daemon
sys:::bin,adm
adm:::adm,daemon

 

gshadow文件中各个字段详细说明:

 

字段1:组账号的名称
字段2:加密后的密码字符串,这个字段可以空的或者!;如果是空的或有!,表示没有密码
字段3:本组的管理员列表;这个字段也可为空;如果有多个用户组管理员,用,号分隔
字段4:本组的成员列表;加入这个组的所有用户账户;列表中多个用户通过","分隔

 

 

账号管理


 与账户相关的文件和目录

 

  /etc/default/useradd    
    /etc/login.defs
    /etc/skel/

 

 /etc/skel目录

 

 /etc/skel目录是用来存放新用户配置文件的目录,当我们添加新用户时,这个目录下的所有文件都会自动被复制到新添加的用户的家目录下;默认情况下,/etc/skel目录下的所有文件都是隐藏文件(.点开头);通过修改、添加、删除/etc/skel目录下的文件,我们可为新创建的用户提供统一、标准的、初始化用户环境。

 

 

 

下面我们就看下/etc/skel目录的内容:

 

[root@localhost ~]# ls -al /etc/skel/
total 64
drwxr-xr-x  3 root root  4096 Apr 30 17:20 .
drwxr-xr-x 91 root root 12288 May  2 10:01 ..
-rw-r--r--  1 root root    33 May 13  2011 .bash_logout
-rw-r--r--  1 root root   176 May 13  2011 .bash_profile
-rw-r--r--  1 root root   124 May 13  2011 .bashrc
-rw-r--r--  1 root root   515 Apr  7  2011 .emacs
drwxr-xr-x  4 root root  4096 Apr 30 17:20 .mozilla

 

 

 

 

当我们用useradd adduser命令添加新用户时,linux系统会自动复制/etc/skel下的所有文件(包括隐藏文件)到新添加用户的家目录

 

 

 /etc/login.defs配置文件

 

 

/etc/login.defs文件是用来定义创建用户时需要的一些用户的配置文件。如创建用户时,是否需要家目录,UIDGID的范围,用户及密码的有效期限等等。

 

 

下面是RHEL 5/etc/login.defs文件内容

 

 

[root@localhost ~]# cat /etc/login.defs 
# *REQUIRED*
#   Directory where mailboxes reside, _or_ name of file, relative to the
#   home directory.  If you _do_ define both, MAIL_DIR takes precedence.
#   QMAIL_DIR is for Qmail
#
#QMAIL_DIR      Maildir
MAIL_DIR        /var/spool/mail  #创建用户时,要在目录/var/spool/mail中创建一个用户mail文件;
#MAIL_FILE      .mail

# Password aging controls:
#
#       PASS_MAX_DAYS   Maximum number of days a password may be used.
#       PASS_MIN_DAYS   Minimum number of days allowed between password changes.
#       PASS_MIN_LEN    Minimum acceptable password length.
#       PASS_WARN_AGE   Number of days warning given before a password expires.
#
PASS_MAX_DAYS   99999   #一个密码最长可以使用的天数
PASS_MIN_DAYS   0    #更改密码的最小天数
PASS_MIN_LEN    5    #密码的最小长度;
PASS_WARN_AGE   7    #密码失效提前多少天开始警告

#
# Min/max values for automatic uid selection in useradd
#
UID_MIN                   500   #最小UID为500,也就是说添加用户时,UID是从500开始的;
UID_MAX                 60000   #最大UID为60000;

#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN                   500   #GID依然是从500开始;同上面用户的情况;
GID_MAX                 60000

#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD    /usr/sbin/userdel_local

#
# If useradd should create home directories for users by default
# On RH systems, we do. This option is overridden with the -m flag on
# useradd command line.
#
CREATE_HOME     yes   #是否创建用户家目录,默认要求创建;可用-m参数来控制;

# The permission mask is initialized to this value. If not specified, 
# the permission mask will be initialized to 022.
UMASK           077

# This enables userdel to remove user groups if no members exist.
#
USERGROUPS_ENAB yes     #删除用户同时删除用户组

# Use MD5 or DES to encrypt password? Red Hat use MD5 by default.
MD5_CRYPT_ENAB yes     #MD5密码加密

 

 

 

 

/etc/default/useradd文件


 

 /etc/default/useradd文件是在使用useradd添加用户时需要调用的一个默认的配置文件,可以使用useradd -D参数,这样的命令格式来修改文件里面的内容,当然也可以直接编辑修改。我们先来看看它的内容

 

[root@localhost ~]# cat /etc/default/useradd 
# useradd defaults file
GROUP=100
HOME=/home   #把用户的家目录建在/home中
INACTIVE=-1  #是否启动账号过期停权,-1表示不启用
EXPIRE=   #账号终止日期,不设置表示不启用
SHELL=/bin/bash   #新用户默认所用的shell类型
SKEL=/etc/skel  #配置新用户家目录的默认文件存放路径。前文提到的/etc/skell,就是配在这里生效的,即当我们用useradd添加时,用户家目录的文件,都是从这里配置的目录中复制过去的。
CREATE_MAIL_SPOOL=yes  #创建mail文件

 

实例2

 

[root@localhost ~]# mkdir /ett
[root@localhost ~]# cp -a /etc/skel/* /ett/   #把skel目录下的文件复制到/ett下
[root@localhost ~]# ls -al /ett/
total 24
drwxr-xr-x  2 root root 4096 May  2 22:52 .
drwxr-xr-x 26 root root 4096 May  2 22:52 ..
-rw-r--r--  1 root root    7 May  2 22:24 oldboy
[root@localhost ~]# mkdir /ett/test   #创建一个测试目录test
[root@localhost ~]# ls -al /ett/
total 32
drwxr-xr-x  3 root root 4096 May  2 22:52 .
drwxr-xr-x 26 root root 4096 May  2 22:52 ..
-rw-r--r--  1 root root    7 May  2 22:24 oldboy
drwxr-xr-x  2 root root 4096 May  2 22:52 test
[root@localhost ~]#sed -i 's#SKEL=/etc/skel#SKEL=/ett#g' /etc/default/useradd    #修改SKEL的默认路径
[root@localhost ~]# grep ett /etc/default/useradd 
SKEL=/ett
[root@localhost ~]# useradd old  #添加用户old测试
[root@localhost ~]# ll /home/old -al
total 32
drwx------ 3 old  old  4096 May  2 22:56 .
drwxr-xr-x 6 root root 4096 May  2 22:56 ..
-rw-r--r-- 1 old  old     7 May  2 22:56 oldboy   #发现/ett下的目录和文件都拷贝过来了
drwxr-xr-x 2 old  old  4096 May  2 22:56 test
[root@localhost ~]# sed -i 's#SKEL=/ett#SKEL=/etc/skel#g' /etc/default/useradd   #测试完后还原配置
[root@localhost ~]# grep etc /etc/default/useradd 
SKEL=/etc/skel
特别提醒:上面的例子是更改/etc/default/useradd中SKEL路径后测试的例子。其他参数的修改方法

 

 

Linux用户管理命令

Linux是一个多用户多任务的操作系统,有着很丰富的用户管理工具,这些工具包括用户的查询。添加、修改、以及不同用户之间相互切换等;通过这些工具,我们可以简单、方便、安全的进行用户管理工作。

 

 

 

添加用户的命令useraddadduser,这两个命令所能达到的效果是一样的。当然除了useraddadduser命令意外,我们还能通过修改用户配置文件/etc/passwd/etc/group及手动创建的办法来直接添加用户,不过不推荐这个方法。这里推荐大家统一使用useradd命令。

 

useradd  添加账户

  当使用useradd命令不加参数选项,后面直接跟所添加的用户名时,系统首先会读取配置文件/etc/login.defs/etc/default/useradd文件中所配置的信息建立用户的家目录,并复制/etc/skel中的所有文件(包括隐藏的环境配置文件)到新用户的家目录中。

 

 

useradd语法:

 

[root@localhost ~]# man useradd
NAME
       useradd - create a new user or update default new user information
SYNOPSIS
       useradd [options] LOGIN
       useradd -D
       useradd -D [options]

 

 

 

 

描述:

 

 新账号建立

 

    当不加-D参数时,useradd指令使用命令列来指定新账号的设定值和使用系统上的预设值(指前文提到的/etc/login.defs/etc/default/useradd等配置文件)。新用户账号将产生一些系统档案,如用户目录的建立,拷贝起始档案等,这些均可以利用命令列选项指定。

 

下面是具体的选项:

 

 

  -c comment :新账户的password的说明栏   
   -u:  指定 UID 标记号。这个值是唯一的,除非用-o选项。数字不可为负值 -d:  指定宿主目录,缺省为 /home/用户名 -e:  指定帐号失效时间
  -f:   账户过期几天后永久停权。 -g:  指定所属的基本组(组名或GID) -G:  指定所属的附加组(组名或GID)
  -m:   用户目录如不存在则自动建立。 -M:  不为用户建立并初始化宿主目录。优先于/etc/login.defs文件的设定。
  -n:   默认情况下,用户的用户组和用户的名称会相同,如果命令加了-n参数,就不会生成和用户同名的用户组
  -r:   用来建立系统账户。系统账户的UID会比定义在/etc/login.defs的UID_MIN来的小。 -s:  指定用户的登录Shell
  

 

当使用useradd命令不加参数选项,后面直接跟所添加的用户名时,系统首先会读取配置文件/etc/login.defs和/etc/default/useradd中所定义的参数或规则,根据设置的规则添加用户,同时会向/etc/passwd和/etc/group文件内添加新建用户和用户组记录。

 

当然/etc/passwd和/etc/group的加密资讯文件/etc/shadows和/etc/gshadow也会同步生成记录,同时系统还会根据/etc/default/useradd文件中所配置的信息建立用户的家目录,并复制/etc/skel中的所有文件(包括隐藏的环境配置文件)到新用户的家目录中。

 

 

改变新建用户的预设值 :

当执行useradd命令或加-D选项时,可以更改新建用户的默认配置值,或是由命令列编辑的方式更新预设值

为了方便读者阅读查看,依然用表格的方式把useradd-D选项后,命令后面依然可使用的参数选项展现给大家如下所示

 

 

档案

/etc/passwd -使用者账号资讯
/etc/shadow -使用者账号资讯加密
/etc/group -群组资讯
/etc/default/useradd -定义资讯
/etc/login.defs -系统广义设定
/etc/skel -内含定义档的目录
SEE ALSO
       chfn(1), chsh(1), passwd(1), crypt(3), groupadd(8), groupdel(8),
       groupmod(8), login.defs(5), userdel(8), usermod(8).

 

useradd实例:

 

实例3:不加任何参数,直接执行useradd usesname添加用户

 

[root@localhost ~]# useradd zhonggy
[root@localhost ~]# ls -ld /home/zhonggy/
drwx------ 3 zhonggy zhonggy 4096 May  7 09:17 /home/zhonggy/

 

 

 

 

在这个例子中,我们添加了一个名为zhonggy系统用户,当查看/home/目录时,会发现系统自动建立了一个zhonggy的目录。

我们再来看/etc/passwd文件中有关新用户zhonggy的记录:

 

在这个例子中,我们添加了一个名为zhonggy系统用户,当查看/home/目录时,会发现系统自动建立了一个zhonggy的目录。
我们再来看/etc/passwd文件中有关新用户zhonggy的记录:

 

#行中的505:505就是/etc/login.defs文件内容预设的。

提示:有很多的朋友习惯先通过cat来读取/etc/passwd文件,然后再通过grep来抽取zhonggy字段,也可以达到同样的目的,但在写法上就逊色很多了。如下:

 

[root@localhost ~]# cat /etc/passwd | grep zhonggy
zhonggy:x:505:505::/home/zhonggy:/bin/bash
[root@localhost
~]# finger zhonggy #使用finger命令来查看用户信息 Login: zhonggy Name: (null) Directory: /home/zhonggy Shell: /bin/bash Never logged in. No mail. No Plan.

 

 从上文过滤出的zhonggy用户记录来看,用户的UIDGID分别为505,并且zhonggy的家目录为/home/zhonggy,所对应的shellbash

 

 

接下来,我们再看看/etc/shadow/etc/group/etc/gshadow文件,是不是也有与zhonggy用户有关的记录:

 

[root@localhost ~]# grep zhonggy /etc/shadow
zhonggy:!!:16562:0:99999:7:::
You have new mail in /var/spool/mail/root
[root@localhost ~]# grep zhonggy /etc/group
zhonggy:x:505:
[root@localhost ~]# grep zhonggy /etc/gshadow
zhonggy:!::

 

 

 

提示:根据上文结果,我们发现/etc/shadow/etc/group/etc/gshadow几个文件都存在和zhonggy用户相关的记录。

    我们还可以查看/etc/default/useradd /etc/login.defs两个文件的规则,看一下zhonggy用户的增加是不是符合这两个配置文件预设的值。最后可以查看/home/zhonggy目录下的文件,是不是和/etc/skel目录下的一样。

 

 

 

实例 4useradd-g-u参数,执行useradd [参数] username 添加用户

 

[root@localhost ~]# groupadd -g 801 sa
#创建用户组sa制动gid 801,这个是groupadd命令的用法
[root@localhost ~]# useradd -g sa -u 901 oldboy1
#创建用户oldboy1属于指定组sa,指定uid901,用户名oldboy1
[root@localhost ~]# id oldboy1    #通过id命令查看结果
uid=901(oldboy1) gid=801(sa) groups=801(sa) context=root:system_r:unconfined_t:SystemLow-SystemHigh
生产场景中的创建账户的完整命令例子:
groupadd -g 801 sa
seradd -g sa -u 901 ett
echo  “6fuwrfwq3e” |passwd ett --stdin
echo “ett ALL=(ALL)    NOPASSWD:ALL” >>/etc/sudoers
visudo -v
history -c

 

 

实例5:useradd的——M-s参数的例子

 

[root@localhost ~]# useradd oldboy2 -M -s /sbin/nologin  
#-M表示不创建家目录,-s指定用户登录后的shell,这里是/sbin/nologin表示禁止登陆。此例在生产环境中部署apache,mysql,nagios服务时经常用到。
[root@localhost ~]# ls -ld /home/ | grep oldboy2
[root@localhost ~]# grep oldboy2 /etc/passwd
oldboy2:x:902:902::/home/oldboy2:/sbin/nologin

 

 

实例6useradd -e参数的例子

在本例中,我们主要来看看-e参数,这个参数还是比较重要的,是设定用户的账号什么时候过期,在生产场景中,员工离职或者一些临时有需求的用户或者需要有时间限制的一些用户,可能需要这个选项。

 

groupadd    添加组账户

 

 

 

 

 

 

-g    指定gid。除非指定-o选项,否则ID值必须是唯一的数字,不能为负值。如果布指定-g参数,则预设值会从500开始。
-r  建立系统用户组。GID值会比/etc/login.defs中定义的UID_MIN小。
-f  新增一个账户,强制覆盖已经存在的用户组账户。

 

 


  passwd      设置密码

 普通用户和超级用户都可以运行passwd命令,但普通用户只能更改自身的用户密码。超级用户则可以设置或修改所有用户的密码

当直接passwd命令后面不接任何参数或用户名时,则表示修改当前登陆用户的密码。

 

   -d    清空密码,仅root能操作
  -f  强制操作,仅root能操作
  -k  保留即将过期的用户在期满后仍能使用
-l 锁定用户账户;锁定用户无权更改其密码,仅root能操作 -S 查看用户账户的状态 -u 解锁用户账户;仅root能操作 --stdin 从标准输入取密码

 

 

修改用户密码有效期:chage

语法:

格式:chage [选项] 用户名

常用命令选项:

 -d:将最近一次密码设置时间设置为"最近时间"
-E:指定账号过期时间,YYYY-MM-DD -I:指定当密码失效后多少天锁定账号; -l:列出密码有效期信息 -m:指定密码的最小天数 -M:指定密码的最大天数
-W:将过期警告天数设置为"警告天数"

 

id:查看用户的帐号属性信息

 

    -u:只看UID
    -g:只看gid
    -G:只看GID
    -n:看名字,与其他选项连用

 

userdel     删除账户

 

 -r    连同主目录一起删除

 

添加组账号groupadd命令

 

格式:groupadd [-g GID] 组名

 

选项:

 

-g gid:指定组ID号。
-o:允许组ID号,不必惟一。
-r:添加系统组,低于499系统账号。

 

删除用户组groupdel命令

 

 

格式:groupdel 组名
删除的目标组不能是用户的基本组

 

gpasswd命令    管理组

 

语法:

格式:gpasswd [选项] 组名

 

选项:

    -A    定义组管理员列表
    -a    添加组成员,每次只能加一个
    -d    删除组成员,每次只能删一个
    -M    定义组成员列表,可设置多个,用“,”分开——定义的组成员必须是已存在用户的
    -r    移除密码

 

 

切换所属基本组newgrp命令

 

newgrp GRPNAME <--> exit  //临时切换属组

 

查看用户的组信息


groups 命令

 

格式:groups [用户名]

 



groupmod:更改群组和名称

   

  -g GID
    -n GRPNAME

 


修改用户账号的属性

 

语法:

格式:usermod [选项] 用户名

 

常用命令选项:

 

-c:指定注释信息
-d -m:-d一般跟-m使用,既指定新的家目录位置,又移动其此前的文件至新的家目录当中
 -e:指定账号失效时间
-g:指定所属的基本组(组名或GID)
-a -G GID:不使用-a选项,会覆盖此前的附加组;
-l:更改用户账号的登陆名称
 -L:锁定用户账号
-s:指定用户登录Shell
-u:指定UID标志号
-U:解锁用户账号

 

chsh: 修改用户的默认shell
chfn:修改注释信息

 

posted @ 2018-06-11 10:27  钟桂耀  阅读(46473)  评论(0编辑  收藏  举报