感谢支持
我们一直在努力

Linux中用户和组的管理

一、Linux用户的帐号管理

  ①添加帐号:useradd

   选项:

       -c, –comment ‘COMMENT’;在创建用户时为用户添加注释信息,一般为全名。

       -d, –home/PATH/TO/HOME_DIR:在创建用户的时候为用户指定家目录的绝对路径,被指定的目录应该是事先不存在的目录;

       -g, –gid GROUPNAME:在创建用户时,为用户指定主组;

       -G, –groups GROUP1[,GROUP2,…[,GROUPN]]]:在创建用户时,为用户添加附加组;

       -m, –create-home:在创建用户时强制性的为用户创建家目录

       -M:在创建用户时,不会创建用户的家目录,即使在/etc/login.defs和CREATE_HOME的值为yes也不创建,

       -r, –system:创建系统用户

       -u, –uid UID:在创建用户的时候,为用户指定UID,这个UID可以超出60000的限制;

       -s, –shell /PATH/TO/SHELL:在创建用户时,为用户指定默认shell,使用绝对路径;

       -D, –defaults:显示或修改用户默认属性值;

       -s, –shell /PATH/TO/SHELL:修改/etc/default/useradd文件中SHELL的默认值;、

  示例:# useradd -u 5000 -g CentOS -G distro,peguin gentoo

     意为:创建用户gentoo,UID为5000,基本组为centos,附加组为distro和peguin

     # useradd -c “Fedora Core” -G distro,peguin -s /bin/tcsh fedora

     意为:创建用户fedora,其全名为”Fedora Core”,附加组为distro和peguin,默认shell为/bin/tcsh;

     注:此两个过程可能要新建centos、distro、penguin组

    用户帐户本身在 /etc/passwd 中定义。Linux 系统包含一个 /etc/passwd 的同伴文件,叫做 /etc/shadow。该文件不像 /etc/passwd,只有对于 root 用户来说是可读的,并且包含加密的密码信息。我们来看一看 /etc/shadow 的一个样本行:
     drobbins1$1234567890123456789012345678901:11664:0:-1:-1:-1:-1:0 
     每一行给一个特别帐户定义密码信息,同样的,每个字段用 : 隔开。第一个字段定义和这个shadow条目相关联的特别用户帐户。第二个字段包含一个加密的密码。其余的字段在下表中描述: 
           
           字段 3 自 1/1/1970 起,密码被修改的天数 
           字段 4 密码将被允许修改之前的天数(0 表示“可在所有时间修改”) 
           字段 5 系统将强制用户修改为新密码之前的天数(1 表示“永远都不能修改”) 
           字段 6 密码过期之前,用户将被警告过期的天数(-1 表示“没有警告”) 
           字段 7 密码过期之后,系统自动禁用帐户的天数(-1 表示“永远不会禁用”) 
           字段 8 该帐户被禁用的天数(-1 表示“该帐户被启用”) 字段9保留供将来使用
 

  ②删除帐号userdel

    选项:

    -r:删除用户的同时,清除用户的家目录

    示例# userdel -r sam

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

     ③修改帐号信息usermod

          选项:

       -c, –comment‘COMMENT’;修改用户的注释信息;

       -g, –gid GROUPNAME:修改用户的主要组

       -G, –groupsGROUP1[,GROUP2,…[,GROUPN]]]:修改用户的附加组为列表中的组;

       -a, –append;与-G选项同时使用,给用户添加新的附加组;

       -d, –home /PATH/TO/HOME_DIR:修改用户的家目录;

       -m, –move-home:与-d选项同时使用,将旧的家目录中的数据移动至新家之中;

       -l, –login NEW_LOGIN:更改用户账户的登录名;

       -s, –shell /PATH/TO/SHELL:修改用户账户的登录shell

       -u, –uid UID:修改用户的UID 

       -L, –lock:锁定用户密码;

       -U, –unlock:解锁用户密码;

   示例:# usermod gentoo -G bin,root -s /bin/csh -c “Gentoo Distribution”

   意为:将用户gentoo的附加组修改为bin和root,默认shell为/bin/csh,注释信息为”Gentoo Distribution”;

       # usermod fedora -aG centos

   意为:为用户fedora添加新的附属组centos

   ④查看帐号属性 id

       格式: id user1  显示user1的uid和gid ,缺省为当前用户的id信息         

      真实的ID:在/etc/passwd定义的用户的UID和GID

      有效的ID:当前生效的用户的UID和GID

      id [OPTION]… [USER]

      -u:尽显示用户的user ID

      -g:尽显示用户的group ID

      -G:显示用户所有组的ID

      -n:以名称来代替ID进行显示

二、用户认证管理 

    指定和修改用户密码的Shell命令是passwd。超级用户能为自己和其他用户指定密码,普通用户只能修改自己的密码。

        passwd

            1.如果省略用户名,意味着更改当前登录用户的密码;

     2.如果指定用户名,更改指定用户的密码,只能root使用;

 

     选项:

       -l, –lock:锁定用户密码

       -u, –unlock:解锁用户密码;

         相比较usermod -L|-U而言,其优先级更高;

         如果使用usermod -L锁定的用户密码,可以使用passwd -u解锁;

         而使用passwd -l锁定的用户密码,无法使用usermod -U解锁;

       -d, –delete:删除用户密码;将/etc/shadow文件中第二字段清空

       -S, –status:查看用户的密码状态;

       –stadin:借住于管道将输入数据流当作标准输入信息送给passwd命令;

         echo “PASSWORD”|passwd –stdin USERNAME

     示例:# passwd -d sam

      意为:此命令将用户sam的密码删除,这样用户sam下一次登录时,系统就不再询问密码

三、用户组的管理

      ①添加用户组groupadd

        选项:

    -g gid:在创建组账户的时候,指定组账户的GID;如果不使用该选项指定,系统会选择在组解析文件中出现在的不大于60000最大的GID加1;

    -r:创建系统组,意思就是创建一个GID在1~999(1~499)之间的组;

   示例:# groupadd -g 1001 group2

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

   ②删除用户组groupdel

    # groupdel group1
            此命令从系统中删除组group1。

        ③修改用户组的属性gorupmod

            选项:

      -g gid:修改组账户的ID;

      -n :修改组名;

   示例:# groupmod mydisk -g 808

           意为:将组mydisk的标识号修改为808

四、组的认证管理

        ①gpasswd命令

   选项:

      -a, –add user:向名为 group 的组中添加用户 user。

      -d, –delete user:从名为 group 的组中移除用户 user。

      -r, 删除密码

      -R,限制用户登入组,只有组中的成员才可以用newgrp加入该组

 

五、其他命令

        切换用户身份su

     su – USERNAME

       登录式切换,完全切换;在切换用户的时候,重新读取目标用户的配置文件并且初始化工作环境;相当于su -1 USERNAME

     -c COMMAND:

       并不会切换用户身份,而是以目标用户的身份执行某命令;

     使用su命令的时候,从root切换到其他普通用户,无需密码;但普通用户进行切换时,必须给出目标用户的密码;

     进行用户切换之后,不要连续切换,而是用exit命令返回之前的用户;

    示例:# su -root -c “命令内容”

    意为:用root的身份执行命令

================================================================================

  * 、  和用户和用户组相关的信息都存放在一些系统文件中,这些文件包括/etc/passwd/etc/shadow/etc/group

     Ⅰ. 用户组的所有信息都存放在/etc/group文件中。此文件的格式也 类似于/etc/passwd文件,由冒号隔开若干个字段,这些字段有:
组名:口令:组标识号:组内用户列表
(1)“组名”是用户组的名称,由字母或数字构成。和/etc/passwd中的登录名相同,组名不应重复。
(2)“口令”字段存放的是用户组加密后的口令字。一般Linux系统的用户组都没有口令,即这个字段一般为空,或是*。
(3)“组标识号”和用户标识号类似,也是个整数,被系统内部用来标识组。
(4)“组内用户列表”是属于这个组的所有用户的列表,不同用户之间用逗号“,”分隔。这个用户组可能是用户的主组,也可能是附加组。
/etc/group文件的一个例子如下:
# cat /etc/group
root::0:root
bin::2:root,bin
sys::3:root,uucp
adm::4:root,adm
daemon::5:root,daemon
lp::7:root,lp
users::20:root,sam

     Ⅱ./etc/shadow中的记录行和/etc/passwd中的一一对应,他由pwconv命令根据/etc/passwd中的数据自动产生。他的文件格式和/etc/passwd类似,由若干个字段组成,字段之间用“:”隔开。这些字段是:
     登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
   (1)“登录名”是和/etc/passwd文件中的登录名相一致的用户账号
   (2)“口令”字段存放的是加密后的用户口令字,长度为13个字符。如果为空,则对应用户没有口令,登录时不必口令;如果含有不属于集合{ ./0-9A-Za-z }中的字符,则对应的用户不能登录。
   (3)“最后一次修改时间”表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不相同。例如在SCO Linux中,这个时间起点是1970年1月1日。
   (4)“最小时间间隔”指的是两次修改口令之间所需的最小天数。
   (5)“最大时间间隔”指的是口令保持有效的最大天数。
   (6)“警告时间”字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
   (7)“不活动时间”表示的是用户没有登录活动但账号仍能保持有效的最大天数。
   (8)“失效时间”字段给出的是个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是个合法的账号,也就不能再用来登录了。
下面是/etc/shadow的一个例子:
# cat /etc/shadow
rootnakfw28zf38w:8764:0:168:7:::
daemon:*::0:0::::
bin:*::0:0::::
sys:*::0:0::::
adm:*::0:0::::
uucp:*::0:0::::
nuucp:*::0:0::::
auth:*::0:0::::
cron:*::0:0::::
listen:*::0:0::::
lp:*::0:0::::
sam:EkdiSECLWPdSa:9740:0:0::::

      Ⅲ./etc/passwd文件是用户管理工作涉及的最重要的一个文件。Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,他记录了这个用户的一些基本属性。这个文件对所有用户都是可读的。他的内容类似下面的例子:
# cat /etc/passwd
root:x:0:0:Superuser:/:
daemon:x:1:1:System daemons:/etc:
bin:x:2:2:Owner of system commands:/bin:
sys:x:3:3:Owner of system files:/usr/sys:
adm:x:4:4:System accounting:/usr/adm:
uucp:x:5:5:UUCP administrator:/usr/lib/uucp:
auth:x:7:21:Authentication administrator:/tcb/files/auth:
cron:x:9:16:Cron daemon:/usr/spool/cron:
listen:x:37:4:Network daemon:/usr/net/nls:
lp:x:71:18rinter administrator:/usr/spool/lp:
sam:x:200:50:Sam san:/usr/sam:/bin/sh
从上面的例子我们能看到,/etc/passwd中一行记录对应着一个用户,每行记录又被冒号分隔为7个字段,其格式和具体含义如下:
代码:
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
(1)“用户名”是代表用户账号的字符串。通常长度不超过8个字符,并且由大小写字母和/或数字组成。登录名中不能有冒号,因为冒号在这里是分隔符。为了兼容起见,登录名中最佳不要包含点字符“.”,并且不使用连字符“-”和加号“+”打头。
(2) “口令”,一些系统中存放着加密后的用户口令,虽然这个字段存放的只是用户口令的加密串,不是明文,不过由于/etc/passwd文件对所有用户都可读,所以这仍是个安全隐患。因此,目前许多Linux系统都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特别的字符,例如“x”或“*”。
(3)“用户标识号”是个整数,系统内部用他来标识用户。一般情况下他和用户名是一一对应的。如果几个用户名对应的用户标 识号是相同的,系统内部将把他们视为同一个用户,不过他们能有不同的口令、不同的主目录及不同的登录Shell等。通常用户标识号的取值范围是 0~65535。0是终极用户root的标识号,1~99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是 500。
(4)“组标识号”字段记录的是用户所属的用户组。他对应着/etc/group文件中的一条记录。
(5) “注释性描述”字段记录着用户的一些个人情况,例如用户的真实姓名、电话、地址等,这个字段并没有什么实际的用途。在不同的Linux系统中,这个字段的 格式并没有统一。在许多Linux系统中,这个字段存放的是一段任意的注释性描述文字,用做finger命令的输出。
(6)“主目录”,也就是用户的起始工作目录,他是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用 户主目录的名称就是该用户的登录名。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。
(7)用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程式,即Shell。Shell是用户和Linux系统之间的接口。

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-04/142428.htm

赞(0) 打赏
转载请注明出处:服务器评测 » Linux中用户和组的管理
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏