zoukankan      html  css  js  c++  java
  • [转载]Linux 用户管理全攻略(六)

    Linux 用户管理工具介绍
    作者:北南南北
    赞助:
    来自:LinuxSir.Org
    摘要: 本文主要介绍Linux系统的用户和用户组的查询、添加、修改及删除等管理工具;

    目录索引

    一、与用户管理相关的配置文件;
    1、/etc/passwd 和/etc/groups
    2、超级权限控制 sudo 的配置文件/etc/sudoers ;
    3、添加用户规则文件 /etc/login.defs 和 /etc/default/useradd
    二、添加用户工具和方法;
    1、useradd 工具;
    1.1、useraadd 命令中的 -D运用
    1.2、useradd 添加用户;
    2、通过修改/etc/passwd 管理(添加、删除、修改)用户的方法;
    3、添加用户组命令 groupadd ;
    三、passwd 设置或修改用户密码;
    1、passwd 简单说明;
    2、passwd 几个比较重要的参数;
    3、chage 修改用户密码有效期限的命令;
    四、删除用户和用户组的工具, userdel和 groupdel 介绍;
    1、userdel 用法;
    2、groupdel的用法;
    五、修改用户的工具介绍;
    1、chfn 修改用户信息工具;
    2、chsh 改变用户的SHELL类型;
    3、usermod 用户修改工具(极其强大)
    4、userinfo 图形介面的修改工具;
    六、后记;
    七、关于本文;
    八、致谢;
    九、参考文档;
    十、相关文档;

    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    正文
    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    Linux是一个多用户的操作系统,她有完美的用户管理工具,这些工具包括用户的查询、添加、修改,以及用户之间相互切换的工具等;通过这些工具,我们能安全、轻松的完成用户管理;
    在这里我们要引入用户控制工具的概念,比如对用户添加的useradd或adduser ,对用户删除的 userdel ,与修改用户相关信息的 usermod、chfn、chsh ,还有密码设置工具passwd 等等;这些工具只所以被称为用户控制工具,理由是她们是控制和管理用户的工具。

    一、与用户管理相关的配置文件;

    1、/etc/passwd 和/etc/groups

    我们对用户和用户组进行添加、修改、删除最终目的是修改系统用户 /etc/passwd和其加密资讯文件 /etc/shadows 以及用户组的 /etc/groups和其加密资讯文件/etc/gshadow,所以对用户和用户组的添加并不仅仅是只能通过用户添加、修改、删除等用户控制工具来完成,我们还能直接修改与用户和用户组相应的配置文件来达到目的。在 《用户(user)和用户组(group)配置文件详解》一文中,我有谈过通过修改用户及用户组配置文件的办法来添加、删除、修改用户,进而达到对系统用户的管理;
    参考文档:
    《Linux 用户(user)和用户组(group)管理概述》
    《用户(user)和用户组(group)配置文件详解》

    2、超级权限控制sudo 的配置文件 /etc/sudoers ;

    参考文档: 《Linux 系统中的超级权限的控制》

    3、添加用户规则文件 /etc/login.defs 和 /etc/default/useradd

    参考文档:《Linux 用户(user)和用户组(group)管理概述》

    二、添加用户工具和方法;

    添加用户工具有useradd和adduser ,这两个工具所达到的目的都是一样的,在Fedora 发行版中,useradd 和adduser 用法是一样的;但在slackware发行版本中,adduser和useradd 还是有所不同,表现为adduser 是以人机交互的提问的方式来添加用户;
    除了useradd和adduser工具以外,我们还能通过修改用户配置文件/etc/passwd和/etc/groups的办法来实现;
    当然我们也不要忽略一些发行版独有用户管理工具,比如Fedora 中有 system-config-users 工具;这个工具比较简单,点几下鼠标就能完成;

    1、useradd 工具;

    useradd 不加参数选项时,后面直接跟所添加的用户名时,系统时读取添加用户配置文件/etc/login.defs和/etc/default/useradd文件,然后读取/etc/login.defs和/etc/default/useradd中所定义的规则添加用户;并向/etc/passwd和/etc/groups文件添加用户和用户组记录;当然/etc/passwd和/etc/groups的加密资讯文件也同步生成记录;同时发生的还有系统会自动在/etc/add/default中所约定的目录中建用户的家目录,并复制/etc/skel中的文件(包括隐藏文件)到新用户的家目录中;
    useradd 的语法:

    usage: useradd [-u uid [-o]] [-g group] [-G group,...]
                    [-d home] [-s shell] [-c comment] [-m [-k template]]
                    [-f inactive] [-e expire ] [-p passwd] name
           useradd -D [-g group] [-b base] [-s shell]
                    [-f inactive] [-e expire ]
    当我们执行useradd 用户名 来添加用户时,我们会发现一个比较有意思的现象,新添中的用户的家目录总是被自动添加到 /home目录下,我们先举个例子;
    实例一:不加任何参数,直接添加用户;

    [root@localhost beinan]# useradd beinanlinux
    [root@localhost beinan]# ls -ld /home/beinanlinux/
    drwxr-xr-x 3 beinanlinux beinanlinux 4096 11月 2 15:20 /home/beinanlinux/
    在这个例子中,我们添加了beinanlinux用户,我们在查看/home/目录时,会发现系统自建了一个beinanlinux的目录;
    我们再来查看 /etc/passwd 文件有关beinanlinux的记录,也会有新发现;我们通过more 来读取 /etc/passwd 文件,并且通过grep 来抽取 beinanlinux字段,得出如下一行;

    [root@localhost beinan]# more /etc/passwd | grep beinanlinux
    beinanlinux:x:509:509::/home/beinanlinux:/bin/bash
    从得出的beinanlinux的记录来看,以adduser 工具添加beinanlinux用户时,设置用户的UID和GID分别为509 ,并且把beinanlinux的家目录设置在 /home/beinanlinux ,所有的SHELL是 bash ; 我们再来看看 /etc/shadow、/etc/groups和/etc/gshadow 文件,是不是也有与beinanlinux有关的行;我们还要查看/etc/default/useradd 和/etc/login.defs文件的规则,看一下beinanlinux用户的增加是不是和这两个配置文件有关;我们还要查看 /home/beinanlinux目录下的文件,是不是和/etc/skel目录中的一样;
    由此我们引出我们下面所要谈的内容:
    useradd -D [-g group] [-b base] [-s shell] [-f inactive] [-e expire ]

    1)/etc/default/useradd 配置文件的定义;
    useradd -D [-g group] [-b base] [-s shell] [-f inactive] [-e expire ]
    useradd 加-D参数后,就是用来改变配置文件 /etc/default/useradd的;
    useradd -D [-g group] [-b base] [-s shell] [-f inactive] [-e expire ]
     
        当-D选项出现时,useradd秀出现在的预设值,或是藉由命令列的方式更新预设值。可用选项为∶
           -b default_home 注:定义用户所属目录的前一个目录。用户名称会附加在default_home后面用来建立新用户的目录。当然使用-d后则此选项无效。
           -e default_expire_date 注:用户帐号停止日期。
           -f default_inactive 注:帐号过期几日后停权。
           -g default_group 注:新帐号起始用户组名或ID。用户组名须为现有存在的名称。用户组ID也须为现有存在的用户组。
           -s default_shell 注:用户登入后使用的shell名称。往后新加入的帐号都将使用此shell.
           如不指定任何参数,useradd显示目前预设的值。
    实例二:
    useradd -D 如不指定任何参数,useradd显示目前预设的值;

    [root@localhost beinan]# useradd -D
    GROUP=100
    HOME=/home
    INACTIVE=-1
    EXPIRE=
    SHELL=/bin/bash
    SKEL=/etc/skel
    CREATE_MAIL_SPOOL=no
    我们看一下/etc/default/useradd 文件就明白了,应该和上面的输出是一样的;所以如果我们想改变useradd配置文件/etc/default/adduser 的内容,也可以用编辑器直接操作,如果你会用vi编辑器或者其它编辑器的话,这个应该不成问题吧;
    实例三:
    我想把添加用户时的默认SHELL /bin/bash 改为 /bin/tcsh ,则应该用下面的命令;

    [root@localhost beinan]# useradd -D -s /bin/tcsh 注:把添加用户时的SHELL 改为tcsh ;
    [root@localhost beinan]# more /etc/default/useradd 注:查看是否成功;
    # useradd defaults file
    GROUP=100
    HOME=/home
    INACTIVE=-1
    EXPIRE=
    SHELL=/bin/tcsh 注:成功;
    SKEL=/etc/skel
    CREATE_MAIL_SPOOL=no
    这个-D参数的解说就这样了,也是比较简单,如果不会用命令,直接改参数配置文件总会吧;Linux解决问题是极为灵活的,就看我们怎么解决了,对不对?
    2)useradd 添加用户;
     
    useradd [-u uid [-o]] [-g group] [-G group,...]
                    [-d home] [-s shell] [-c comment] [-m [-k template]]
                    [-f inactive] [-e expire ] [-p passwd] name
    新帐号建立,当不加-D参数,useradd指令使用命令列来指定新帐号的设定值and使用系统上的预设值.新用户帐号将产生一些系统档案,用户目录建立,拷备起始档案等,这些均可以利用命令列选项指定。此版本为RedHat Linux提供,可帮每个新加入的用户建立个别的group,毋须添加-n选项。

    useradd 可使用的选项为
           -c comment 注:新帐号 password 档的说明栏 。
           -d home_dir 注:新帐号每次登入时所使用的home_dir。预设值为default_home内login名称,并当成登入时目录名称。
           -e expire_date 注:帐号终止日期。日期的指定格式为MM/DD/YY。
           -f inactive_days 注:帐号过期几日后永久停权。当值为0时帐号则立刻被停权。而当值为-1时则关闭此功能,预设值为-1
           -g initial_group 注:group名称或以数字来做为用户登入起始用户组(group)。用户组名须为现有存在的名称。用户组数字也须为现有存在的用户组。预设的用户组数字为1。
           -G group,[...]
                  注:定义此用户为此一堆groups的成员。每个用户组使用","区格开来,不可以夹杂空白字元。用户组名同-g选项的限制。定义值为用户的起始用户组。。
           -m 注: 用户目录如不存在则自动建立。如使用-k选项skeleton_dir内的档案将复制至用户目录下。然而在/etc/skel目录下的档案也会复制过去取代。任何在skeleton_dir or /etc/skel的目录也相同会在用户目录下一一建立。The-k同-m不建立目录以及不复制任何档案为预设值。
           -M 不建立用户目录,即使/etc/login.defs系统档设定要建立用户目录。
           -n 预设值用户用户组与用户名称会相同。此选项将取消此预设值。
           -r 此参数是用来建立系统帐号。系统帐号的UID会比定义在系统档上/etc/login.defs.的UID_MIN来的小。注意useradd此用法所建立的帐号不会建立用户目录,也不会在乎纪录在/etc/login.defs.的定义值。如果你想要有用户目录须额外指定-m参数来建立系统帐号。
           -s shell 注:用户登入后使用的shell名称。预设为不填写,这样系统会帮你指定预设的登入shell。
           -u uid uid用户的ID值。必须为唯一的ID值,除非用-o选项。数字不可为负值。预设为以/etc/login.defs中的UID_MIN的值为准,0到UID_MIN的值之间,为系统保留的UID ;
    useradd 这么多的参数看上去头有点晕,我们如何用呢??其实很简单;一个参数一个参数的试一试不就明白了??这是最好的学习方法。实践是检验真理的唯一标准;
    如果useradd 后面直接跟用户名,不加任何参数,表示添加用户时按事先/etc/default/adduser 和/etc/login.defs 添加新用户的配置文件的规则来添加用户;其实我们为了方便,也可以把这两个文件修改以适合我们添加用户需要;
    useradd 为什么还需要那么多的参数呢?
    原因很简单,主要是为了管理员方便管理用户。useradd 是灵活的,可以跳过/dev/default/adduser 和/etc/login.defs 两个配置文件中的规则来自定义添加用户;比如在用户的家目录,在/etc/default/adduser 中可能定义在/home目录下建立,如果我们的机器/home独立占一个分区,并且有点紧张,但我们又不想改变/etc/default/adduser 关于家目录的定义,这里我们就可以通过 adduser -d 参数把新增用户家目录定义到空间比较空闭的分区;
    通过下面的几个例子,可能有助于我们理解useradd ,其实很简单~,学习也是这样,先从简单的入手,一步一步的走过来,没有什么难的~~
    实例四:以/etc/logins.defs和/etc/default/adduser 默认的规则添加用户;

    [root@localhost ~]# useradd longcpu
    注解:如果useradd 后面直接用户名,表示系统读取 /etc/login.defs和/etc/default/adduser 配置文件,根本这两个配置文件所定义的规则来添加用户,比如用户的家目录哪里,用什么SHELL,UID和GID的分配... ... 查看/etc/passwd的新增记录,然后根据 /etc/login.defs和/etc/default/adduser 查看新增用户是否符合这两个配置文件所约定的规则;
    实例五:练习参数的使用;

    [root@localhost ~]# useradd -c ChinaCpu longcpu 注:添加一个新用户amdcpu ,使用参数-c;
    [root@localhost ~]# more /etc/passwd |grep longcpu 注:查看/etc/passwd 文件,并抽取longcpu的记录;
    longcpu:x:510:510:ChinaCpu:/home/longcpu:/bin/bash
    注:看上去是已经有amdcpu用户了;x是密码段;UID和GID 都是510,ChinaCpu表示是什么意思? 家目录位于/home/amdcpu,SHELL是bash ;

    [root@localhost ~]# finger longcpu 注:我们查询一下amdcpu 用户的信息;
    Login: longcpu Name: ChinaCpu 注:-c ChinaCpu 表示用户真实的名字或全名;
    Directory: /home/longcpu Shell: /bin/bash
    Never logged in.
    No mail.
    No Plan.

    注解:这个例子,我们做了添加用户、查看/etc/passwd 的变化; 并且通过finger 来查询longcpu用户的信息,目的是理解参数-c的用处;
    参数-c 后面的就是就是UID:GID后面说明文字,这段文字中包括用户真实姓名,办公地址,办公电话等,可以通过chfn 来更改,我们可以通过chfn 来修改用户信息,然后查看 /etc/passwd 的变化,再来用finger 来查询用户信息。几个工具组合练习一下,也容易忘记;
    实例六:自定义用户的家目录、SHELL类型、所归属的用户组等;
    添加用户longcpu,并设置其用户真实名字为ChinaCpu,其家目录在/opt/longcpu,让其归属为用户组 linuxsir、root、beinan成员,其SHELL类型为tcsh ;

    [root@localhost ~]# useradd -c ChinaCpu -d /opt/longcpu -G linuxsir,root,beinan -s /bin/tcsh longcpu

    注:添加用户longcpu ,真实名是ChinaCpu ,家目录设置在 /opt/longcpu ,是linuxsir,root,beinan 用户组成员, SHELL是tcsh ;
    [root@localhost ~]# ls -ld /opt/longcpu/ 注:是不是自动创建了longcpu的家目录?
    drwxr-xr-x 3 longcpu longcpu 4096 11月 4 22:30 /opt/longcpu/
    [root@localhost ~]# more /etc/passwd |grep longcpu 注:查看 /etc/passwd 中是否有longcpu用户记录;
    longcpu:x:510:510:ChinaCpu:/opt/longcpu:/bin/tcsh
    [root@localhost beinan]# finger longcpu 注:查询longcpu用户的信息 ;
    Login: longcpu Name: ChinaCpu
    Directory: /opt/longcpu Shell: /bin/tcsh
    Never logged in.
    No mail.
    No Plan.
    [root@localhost beinan]# id longcpu 注:查询UID和GID 以及所归属的用户组;
    uid=510(longcpu) gid=510(longcpu) groups=510(longcpu),0(root),500(beinan),502(linuxsir)
    关于在添加新用户时用户组,添加用户时,如果不使用-n 参数,系统会自动建一个与用户名同名的用户组;

    实例七:练习用户有效期限;
    在本例中,我们主要来看看-e参数,这个参数还是比较重要的,是设定用户的帐号什么时候过期;
    在本例中,我们添加了一个帐号,并且设置其帐号在 2005年11月04日之前是有效的,一旦过了这个日期,便停止其登录;

    [root@localhost ~]# useradd -e 11/04/2005 cooler 注:添加用户cooler,并设置其有效期为2005年11月04日;
    [root@localhost ~]# passwd cooler 注:设置用户cooler密码;
    Changing password for user cooler.
    New UNIX password: 注:设定cooler的密码;
    Retype new UNIX password: 注:核实设定密码;
    passwd: all authentication tokens updated successfully. 注:设置成功;
    如何验证-e 是不是真的有效?我写这篇文档的时间是 2005年11月05号,所以添加这个cooler用户肯定是过期的,就是他有密码也不能登录;
    有的弟兄会问,他把有效期的记录放在哪里了呢?其实我们在以前的文档中已经说过了,是写在/etc/shadow文件中了;
    请参考: 《用户(user)和用户组(group)配置文件详解》
  • 相关阅读:
    Kafka: Producer (0.10.0.0)
    Kafka:架构简介【转】
    ZooKeeper示例 分布式锁
    机器学习---人脸对齐的基于形状模型的训练
    人脸妆容迁移---研究和思考
    机器学习----人脸对齐的算法-ASM.AAM..CLM.SDM
    基于opencv+Dlib的面部合成(Face Morph)
    c语言编程-----指向二维数组的指针
    工具软件 PYUV打开raw图片
    eclipse 使用问题
  • 原文地址:https://www.cnblogs.com/liuzhuqing/p/7481023.html
Copyright © 2011-2022 走看看