++++用户和组++++


首先了解一下系统中用户、用户组以及家目录的概念

   用户:很简单,就是你使用系统的一个身份,就和我们的QQ一样,有名称,密码等等用于识别该使用者。

   用户组:和我们生活中的小组一样,同一个小组的用户具有一些相同的属性或是权限。

   家目录:linux是多用户系统,一个系统有很多用户,由于存放用户个人的文件,就比如我们都在地球上生活,但我们有一个自己的私人空间。


   知道这些概念后,我们再来认识几个文件,系统里有哪些用户,有哪些组,那些用户属于那些组已经每个用户的家目录是存在一定的关系的,那么这些关系都存在哪里,我们来分别认识一下它们:

   /etc/passwd:这是用来存放用户信息的,有用户名,密码,用户组,家目录,shell等相关信息,但是这里所谓的密码不是真正的密码。在早些时候,密码就是存在这里的,但出于安全方面,就把密码提取出来放入了一个单独的文件,这个单独的文件就是/etc/shadow,好的,我们又来看看这个文件。

   /etc/shadow:这个文件用于存放用户密码,该文件每一行为一个用户的密码相关信息,每一行中包含用户名,密码,还有几个和密码相关的时间,每个字段用:分割。

   /etc/gpasswd,/etc/gshadow这两个文件和上面两个文件类似,分别记录了组信息和组密码。


1.创建和删除用户

   1.1)创建用户用useradd命令

useradd [-c comment] [-d home_dir]
            [-e expire_date] [-f inactive_time]
            [-g initial_group] [-G group[,...]]
            [-m [-k skeleton_dir] | -M] [-s shell]
            [-u uid [ -o]] [-n] [-r] login

       -c comment

           用户注释,用于对用户进行说明。

       -d home_dir

           指定用户的家目录。

       -e expire_date

           帐号终止日期。

       -f inactive_days

           账号过期后还能用的天数。

       -g initial_group

           指定用户的基本组,可以是组ID,也可以是组名称,什么时间本组呢,在创建用户时,系统要求用户有一个组,如果不手动指定,系统则会自动为其创建一个组名与用户名相同的组。


      -G group,[...]

           除了用户属于一个基本组以外,如果还要为用户分配组就加参数-G 组名。


      -M     不为用户创建家目录。


      -r     如果需要创建系统用户则加该参数,系统用户的UID是小于500的。


      -s shell

           为用户指定登录时的默认shell,如/bin/bash。


      -u uid  创建用户时系统会自动为其生成UID,如果要自己指定就有 -u uid(一般是大于500的数字)。

      举例:创建一个用户,用户名tom,指定UID为1000,家目录为/home/tomhome,基本组为tomgroup,附加组为tomgroup123,指定shell为bash,指定注释为I am tom.


      # useradd -c 'I am tom' -g tomgroup -G tomgroup123 -d /home/tomhome -u 1000 -s /bin/bash

      注意:为用户指定的分组应该事先存在,所以要为用户指定分组,就得先会创建分组,如何创建分组,继续往下看,慢慢道来。


   1.2)删除用户用userdel

      任何事物都是创造难,销毁简单,所以删除用户也很简单。

      首先我们说说一个用户创建成功后,系统做了哪些事情,

       a.在/etc/passwd添加用户信息

       b.在/etc/shadow添加用户密码

       c.在/etc/group添加用户组的相关信息

       d.在/etc/gshadow添加组密码

       e.为用户创建家目录

       f.在/var/mail/里为用户生成邮箱

       好了,我们来说删除用户吧

       userdel username

       就这样就删除了用户,但是系统默认是不删除该用户的资料的,比如家目录,邮箱等。如果我们想删除和用户的家目录和邮箱等需要加一个参数 -r.

       userdel -r username 搞定。


   1.3)更改用户属性usermod

       用法:usermod [选项] 用户名

       个命令的选项和useradd几乎一模一样,用法完全参照useradd命令

       这个命令比useradd多了一个参数-l (login name),也就是用户名,用来修改用户名的,

       eg:

        # usermod -l newname oldname



2.创建组和删除组

      相对创建用户来说,创建组就简单多了,因为组的属性没有用户的属性多


   2.1)创建组:groupadd

       groupadd groupname

       该命令有三个参数,常用的是以下两个:

       -g GID: 创建组的时候为其指定GID;

       -r: 创建系统组;


       执行该命令之后,系统会在/etc/group和/etc/gshadow分别记录组信息和组密码

       /etc/group文件格式

       组名:密码占位符x:GID:以此组为额外组的用户列表,用户间用逗号分隔;


   2.2)删除组

       这个很简单,groupdel groupname

       该命令没有任何选项,

       唯一一个要求就是只能管理员执行


   2.3)更改组属性groupmod

       groupmod [-g gid [-o]] [-n group_name] groupname

       很容易看出比groupadd多了-n参数,也就是修改组名的

       eg:

# groupmod -n newgroup oldgroup


OK,linux系统中用户和组的基本增删改就这样了,更多详细玩法请man^.^t_0005.gif