• [转载]Linux用户管理全攻略(七)


     

    2、adduser 工具;

    在Fedora 系统中,adduser和useradd 用法是一样的,但在 Slackware 系统中 adduser 是通过人机交互的方法来添加用户,其实和useradd 加各项参数来自定义添加用户所达到的目的是一样的,只不过在Slackware 中,useradd 是以人机交互的提问式的进行;这样我们没有必要知道那么多的参数,一样可以达到自定义添加用户;

    [root@localhost ~]# adduser 注:运行adduser命令;
    Login name for new user []: bluemoon 注:添加新用户 bluemoon
    User ID ('UID') [ defaults to next available ]: 1200 注:用户的UID ,UID 是唯一的;如果有提示说被占用,就选比较大的UID ,比如1300
    Initial group [ users ]: users 注:初始化用户组(或主用户组)为users,这个用户组也是可以自己定义的,但用户组必须存在,如果不存在,您可以用groupadd来添加
    Additional groups (comma separated) []: root,beinan 注:附加用户组,这个也是自己定义的,多个用户组之间用,号分割;
    Home directory [ /home/bluemoon ] 注:定义用户的家目录位置,也是可以自己定义的,比如/opt/bluemoon ;
    Shell [ /bin/bash ] 注:所用SHELL ,此处用的是bash ;
    Expiry date (YYYY-MM-DD) []: 注:用户的有效日期,如果不设置就直接回车,表示从不过期;如果设置就以2005-11-05这样的格式来输入;
    New account will be created as follows: 注:创建的用户情况如下;
    ---------------------------------------
    Login name.......: bluemoon
    UID..............: 1200
    Initial group....: users
    Additional groups: root
    Home directory...: /home/bluemoon
    Shell............: /bin/bash
    Expiry date......: [ Never ]
    This is it... if you want to bail out, hit Control-C. Otherwise, press
    ENTER to go ahead and make the account.
    注:在这里按回车就开始创建,如果认为这样不合理,就按CTRL+C 来中断;
    Creating new account... 这样就创建好了;系统会自动提示我们修改用户的信息,比如用户的全名、房间号、电话等...... 以及用户的密码;
    Changing the user information for bluemoon
    Enter the new value, or press ENTER for the default
            Full Name []: bluemoon Linux
            Room Number []: 503
            Work Phone []: 0411-8888888
            Home Phone []: 0411-9999999
            Other []:
    Changing password for bluemoon
    Enter the new password (minimum of 5, maximum of 127 characters)
    Please use a combination of upper and lower case letters and numbers.
    New password: 注:设置用户bluemoon的密码;
    Re-enter new password: 注:验证一次;
    Password changed. 注:设置密码成功

    3、通过修改/etc/passwd 管理(添加、删除、修改)用户的方法;

    请参考: 《用户(User)和用户组(Group)配置文件详解》

    4、添加用户组命令groupadd ;

    语法格式:

    groupadd [-g gid [-o]] [-r] [-f] group
     
    groupadd 可指定用户组名称来建立新的用户组帐号,需要时可从系统中取得新用户组值。groupadd有下列选项可用。
    -g 后接GID值,除非使用-o参数不然该值必须是唯一,不可相同,数值不可为负,预设值以/etc/login.defs为准;
    -r
    此参数是用来建立系统帐号的GID会比定义在系统档文件上/etc/login.defs 的GID_MIN来的小。注意useradd此用法所建立的帐号不会建立使用者目录,也不会纪录在/etc/login.defs.的定义值。如果你想要有使用者目录须额外指定-m参数来建立系统帐号,它会自动帮你选定一个小于的GID_MIN的值,不需要再加上-g参数。
    -f This is force flag.新增一个已经存在的用户组帐号,系统会出现错误讯息然后结束groupadd。如果是这样的情况,不会新增这个用户组(如果是这个情况下,系统不会再新增一次) 也可同时加上-g选项,当你加上一个GID,此时GID就不用是唯一值,可不加-o参数,建好用户组后会显结果(adding a group as neither -g or -o options were specified)。
    其实增加用户组的,用起来还是简单一点为好;比如下面的例子,添加GID为666的用户组google;

    [root@localhost ~]# groupadd -g 666 google

    三、passwd 设置或修改用户密码;
     
    1、passwd 简单说明;

    我们已经学会如何添加用户了,所以我们还要学习设置或修改用户的密码;passwd命令的用法也很多,我们只选如下的几个参数加以说明;想了解更多,请参考man passwd或passwd --help ;

    passwd [OPTION...]

    passwd 作为普通用户和超级权限用户都可以运行,但作为普通用户只能更改自己的用户密码,但前提是没有被root用户锁定;如果root用户运行passwd ,可以设置或修改任何用户的密码;
    passwd 命令后面不接任何参数或用户名,则表示修改当前用户的密码;请看下面的例子;

    [root@localhost ~]# passwd 注:没有加任何用户,我是用root用户来执行的passwd 表示修改root用户的密码;下面也有提示;
    Changing password for user root.
    New UNIX password: 注:请输入新密码;
    Retype new UNIX password: 注:验证新密码;
    passwd: all authentication tokens updated successfully. 注:修改root密码成功;
    如果是普通用户执行passwd 只能修改自己的密码;
    如果新建用户后,要为新用户创建密码,则用 passwd 用户名 ,注意要以root用户的权限来创建;

    [root@localhost ~]# passwd beinan 注:更改或创建beinan用户的密码;
    Changing password for user beinan.
    New UNIX password: 注:请输入新密码;
    Retype new UNIX password: 注:再输入一次;
    passwd: all authentication tokens updated successfully. 注:成功;
    普通用户如果想更改自己的密码,直接运行passwd即可;比如当前操作的用户是beinan;

    [beinan@localhost ~]$ passwd
    Changing password for user beinan. 注:更改beinan用户的密码;
    (current) UNIX password: 注:请输入当前密码;
    New UNIX password: 注:请输入新密码;
    Retype new UNIX password: 注:确认新密码;
    passwd: all authentication tokens updated successfully. 注:更改成功;

    2、passwd 几个比较重要的参数;
     
    [root@localhost beinan]# passwd --help
    Usage: passwd [OPTION...] <accountName>
      -k, --keep-tokens keep non-expired authentication tokens
                              注:保留即将过期的用户在期满后能仍能使用;
      -d, --delete delete the password for the named account (root only)
                              注:删除用户密码,仅能以root权限操作;
      -l, --lock lock the named account (root only)
                              注:锁住用户无权更改其密码,仅能通过root权限操作;
      -u, --unlock unlock the named account (root only)
                              注:解除锁定;
      -f, --force force operation
                              注:强制操作;仅root权限才能操作;
      -x, --maximum=DAYS maximum password lifetime (root only) 注:两次密码修正的最大天数,后面接数字;仅能root权限操作;
      -n, --minimum=DAYS minimum password lifetime (root only) 注:两次密码修改的最小天数,后面接数字,仅能root权限操作;
      -w, --warning=DAYS number of days warning users receives before 注:在距多少天提醒用户修改密码;仅能root权限操作;
                              password expiration (root only)
      -i, --inactive=DAYS number of days after password expiration when an 注:在密码过期后多少天,用户被禁掉,仅能以root操作;
                              account becomes disabled (root only)
      -S, --status report password status on the named account (root 注:查询用户的密码状态,仅能root用户操作;
                              only)
      --stdin read new tokens from stdin (root only)
    比如我们让某个用户不能修改密码,可以用-l 参数来锁定:

    [root@localhost ~]# passwd -l beinan 注:锁定用户beinan不能更改密码;
    Locking password for user beinan.
    passwd: Success 注:锁定成功;
    [beinan@localhost ~]# su beinan 注:通过su切换到beinan用户;
    [beinan@localhost ~]$ passwd 注:beinan来更改密码;
    Changing password for user beinan.
    Changing password for beinan
    (current) UNIX password: 注:输入beinan的当前密码;
    passwd: Authentication token manipulation error 注:失败,不能更改密码;

    再来一例:
     
    [root@localhost ~]# passwd -d beinan 注:清除beinan用户密码;
    Removing password for user beinan.
    passwd: Success 注:清除成功;
    [root@localhost ~]# passwd -S beinan 注:查询beinan用户密码状态;
    Empty password. 注:空密码,也就是没有密码;
    注意: 当我们清除一个用户的密码时,登录时就无需密码;这一点要加以注意;

    3、chage 修改用户密码有效期限的命令;

    chage 用语法格式:

    chage [-l] [-m 最小天数] [-M 最大天数] [-W 警告] [-I 失效日] [-E 过期日] [-d 最后日] 用户
    前面已经说的好多了,这个只是一笔带过吧,知道有这个命令就行,自己实践实践再说,大体和psswd有些参数的用法差不多;

    四、删除用户和用户组的工具, userdel和 groupdel 介绍;

    1、userdel 用法;

    userdel 的语法格式:

    userdel [-r] 名称

    userdel很简单,只有一个参数可选 -r ;如果加参数-r ,表示在删除用户的同时,一并把用户的家目录及本地邮件存储的目录或文件也一同删除;比如我们现在有两个用户bnnb和lanhaitun,其家目录都位于/home目录中,现在我们来删除这两个用户;

    [root@localhost ~]# userdel bnnb 注:删除用户bnnb,但不删除其家目录及文件;
    [root@localhost ~]# ls -ld /home/bnnb 注:查看其家目录是否存在;
    drwxr-xr-x 14 501 501 4096 8月 29 16:33 /home/bnnb 注:存在;
    [root@localhost ~]# ls -ld /home/lanhaitun 注:查看lanhaitun家目录是否存在;
    drwx------ 4 lanhaitun lanhaitun 4096 11月 5 14:50 /home/lanhaitun 注:存在;
    [root@localhost ~]# userdel -r lanhaitun 注:删除用户lanhaitun,其家目录及文件一并删除;
    [root@localhost ~]# ls -ld /home/lanhaitun 注:查看是否在删除lanhaitun 用户的同时,也一并把其家目录和文件一同删除;
    ls: /home/lanhaitun: 没有那个文件或目录 注:已经删除;
    警告: 请不要轻易用-r参数;他会删除用户的同时删除用户所有的文件和目录,切记;如果用户目录下有重要的文件,在删除前请备份;
    其实也有最简单的办法,但这种办法有点不安全,也就是直接在/etc/passwd中删除您想要删除用户的记录;但最好不要这样做,/etc/passwd 是极为重要的文件,可能您一不小心会操作失误;

    2、groupdel的用法;

    groupdel 是用来删除用户组的;
    语法格式:groupdel 用户组
    比如:

    [root@localhost ~]# groupdel lanhaitun

    五、修改用户的工具介绍;

    我们前面已经多次说过用户配置文件的重要性了,其实我们无论怎么改,都是改与用户相关的配置文件;如果我们与用户相关的配置文件的规则,可以直接修改配置文件,在这里就不再多说了,请参看相关文档吧,谢谢;

    1、chfn 修改用户信息工具;

    chfn 这个工具主要是用来改用户的全名,办公室地址,电话之类的;用法如下:

    chfn [ -f full-name ] [ -o office ] [ -p office-phone ] [ -h home-phone ] [ -u ] [ -v ] [ username ]
    最简单的方法是
    chfn 用户名

    [root@localhost ~]# chfn beinanlinux 注:更改用户beinanlinux的信息;
    Changing finger information for beinanlinux.
    Name []: BeiNan.Linux 注:用户全名BeiNan.Linux ,随便写一个就行;
    Office []: ChinaDL
    Office Phone []: 66666666
    Home Phone []: 99999999
    Finger information changed. 注:更改完成;
    我们怎么能知道更改好了呢??可以通过finger 或直接查看/etc/passwd文件;

    [root@localhost ~]# finger beinanlinux
    Login: beinanlinux Name: BeiNan.Linux
    Directory: /home/beinanlinux Shell: /bin/bash
    Office: ChinaDL Home Phone: 99999999
    Last login Sat Nov 5 11:27 (CST) on tty2
    No mail.
    No Plan.
    chfn 究竟改了/etc/passwd 文件中beinanlinux用户的哪部份呢??
    [root@localhost ~]# more /etc/passwd |grep beinanlinux
    beinanlinux:x:509:509:BeiNan.Linux,ChinaDL,66666666,99999999:/home/beinanlinux:/bin/bash
    通过more /etc/passwd ,然后来抽取 beinanlinux记录,看一下红字标出的,就是我们通过chfn 修改过的地方,所以我们可以直接通过修改/etc/passwd文件来达到目的;

    2、chsh 改变用户的SHELL类型;
     
    [root@localhost ~]# chsh --help
    Usage: chsh [ -s shell ] [ --list-shells ] [ --help ] [ --version ] [ username ]
    如果chsh 不加任何参数及用户名的情况下,默认为更改当前操作用户的SHELL类型;
    举例说明:

    [root@localhost ~]# chsh --list-shells 注:列出当前系统中所有的SHELL;
    /bin/sh
    /bin/bash
    /sbin/nologin 注:这个是不允许用户登录系统所用,是极为有用的;您可以通过查看/etc/passwd 中看哪些用户是nologin;
    /bin/ksh
    /bin/tcsh
    /bin/csh
    /bin/zsh
    [root@localhost ~]# finger beinanlinux |grep Shell 注:查看用户beinanlinux 所用的SHELL类型;
    Directory: /home/beinanlinux Shell: /bin/bash 注:beinanlinux用的是bash ;
    [root@localhost ~]# chsh -s /bin/ksh beinanlinux 注:更改beinanlinux所用的shell 为ksh ;
    Changing shell for beinanlinux.
    Shell changed. 注:更改完成;
    [root@localhost ~]# finger beinanlinux |grep Shell 注:再次查询beinanlinux所用的SHELL;
    Directory: /home/beinanlinux Shell: /bin/ksh 注:看来已经改过来了;
    chsh 还是有用的,特加是不允许用户登录时,我们可以把用户的SHELL改到 /sbin/nologin;系统中一些虚拟用户大多是不能登录系统的,这对于系统安全来说是极为重要;通过下面的命令查看一下系统中哪些用户是没有登录权限的?

    [root@localhost ~]# more /etc/passwd |grep nologin

    3、usermod 用户修改工具(极其强大)

    usermod 不仅能改用户的SHELL类型,所归属的用户组,也能改用户密码的有效期,还能改登录名。usermod 如此看来就是能做到用户帐号大转移;比如我把用户A改为新用户B;

    usermod [-u uid [-o]] [-g group] [-G group,...]
                    [-d 主目录 [-m]] [-s shell] [-c 注释] [-l 新名称]
                    [-f 失效日] [-e 过期日] [-p 密码] [-L|-U] 用户名

    usermod 命令会参照你命令列上指定的部份修改系统帐号档。下列为usermod可选用的参数。
    -c comment
           更新用户帐号password档中的注解栏,一般是使用chfn(1)来修改。
    -d home_dir
       更新用户新的登入目录。如果给定-m选项,用户旧目录会搬到新的目录去,如旧目录不存在则建个新的。
    -e expire_date 加上用户帐号停止日期。日期格式为MM/DD/YY.
    -f inactive_days 帐号过期几日后永久停权。当值为0时帐号则立刻被停权。而当值为-1时则关闭此功能。预设值为-1。
    -g initial_group 更新用户新的起始登入用户组。用户组名须已存在。用户组ID必须参照既有的的用户组。用户组ID预设值为1。
    -G group,[...] 定义用户为一堆groups的成员。每个用户组使用","区格开来,不可以夹杂空白字元。用户组名同-g选项的限制。如果用户现在的用户组不再此列,则将用户由该用户组中移除。
    -l login_name 变更用户login时的名称为login_name。其它不变。特别是,用户目录名应该也会跟着更动成新的登入名。
    -s shell 指定新登入shell。如此栏留白,系统将选用系统预设shell。
    -u uid用户ID值。必须为唯一的ID值,除非用-o选项。数字不可为负值。预设为最小不得小于/etc/login.defs中定义的UID_MIN值。0到UID_MIN值之间是传统上保留给系统帐号使用。用户目录树下所有的档案目录其userID会自动改变。放在用户目录外的档案则要自行手动更动。
    警告:usermod不允许你改变正在线上的用户帐号名称。当usermod用来改变userID,必须确认这名user没在电脑上执行任何程序。你需手动更改用户的crontab档。也需手动更改用户的at工作档。采用NISserver须在server上更动相关的NIS设定。
    举个简单的例子,我们在前面说了关于useradd的工具,而usermod 工具和useradd的参数差不多;两者不同之处在于useradd是添加,usermod 是修改;

    [root@localhost ~]# usermod -d /opt/linuxfish -m -l fishlinux -U linuxfish
    注:把linuxfish 用户名改为fishlinux ,并且把其家目录转移到 /opt/linuxfish ;
    [root@localhost ~]# ls -la /opt/linuxfish/ 注:查看用户fishlinux的家目录下的文件及属主;
    总用量 48
    drwxr-xr-x 3 fishlinux linuxfish 4096 11月 5 16:46 .
    drwxrwxrwx 29 root root 4096 11月 5 16:48 ..
    -rw-r--r-- 1 fishlinux linuxfish 24 11月 5 16:46 .bash_logout
    -rw-r--r-- 1 fishlinux linuxfish 191 11月 5 16:46 .bash_profile
    -rw-r--r-- 1 fishlinux linuxfish 124 11月 5 16:46 .bashrc
    -rw-r--r-- 1 fishlinux linuxfish 5619 11月 5 16:46 .canna
    -rw-r--r-- 1 fishlinux linuxfish 438 11月 5 16:46 .emacs
    -rw-r--r-- 1 fishlinux linuxfish 120 11月 5 16:46 .gtkrc
    drwxr-xr-x 3 fishlinux linuxfish 4096 11月 5 16:46 .kde
    -rw-r--r-- 1 fishlinux linuxfish 0 11月 5 16:46 mydoc.txt
    -rw-r--r-- 1 fishlinux linuxfish 658 11月 5 16:46 .zshrc
    [root@localhost ~]# more /etc/passwd |grep fishlinux 注:查看有关fishlinux的记录;
    fishlinux:x:512:512::/opt/linuxfish:/bin/bash
    通过上面的例子,我们发现文件的用户组还没有变,如果您想改变为fishlinux用户组,如果想用通过 usermod来修改,就要先添加fishlinux用户组;然后用usermod -g 来修改 ,也可以用chown -R fishlinux:fishlinux /opt/finshlinux 来改;
    警告: usermod 最好不要用它来改用户的密码,因为他在/etc/shadow中显示的是明口令;修改用户的口令最好用passwd ;

    [root@localhost ~]# usermod -p 123456 fishlinux 注:修改fishlinux的口令是123456 ;
    [root@localhost ~]# more /etc/shadow |grep fishlinux 注:查询/etc/shadow文件中fishlinux的口令;我们看到明显是没有加密;
    fishlinux:123456:13092:0:99999:7:::

    4、userinfo 图形介面的修改工具;

    userinfo 系统普通用户都能调用,但都是修改当前操作用户的;还是点鼠标完成吧,多点几下就OK了。

    [root@localhost ~]# userinfo

    六、后记;

    本文档勉强有了个形,修正是肯定的了;在修正的同时,我会计划与下一篇文档,可能会写文件与权限方面的。但愿我能坚持住;
     
  • 相关阅读:
    关于Unity中表面着色器的使用
    关于Unity中顶点片元Shader实例
    php 超时 解决办法 (Maximum execution time of 30 seconds exceeded)这个问题?
    php 汉字转拼音
    jq 获取当前屏幕高度
    php 根据身份证获取出身地址
    根据身份证算出地址
    css 超详细文档
    手机端下拉获取新数据
    基于bootstrap 框架的扩展框架 H-ui
  • 原文地址:https://www.cnblogs.com/liuzhuqing/p/7481022.html
Copyright © 2020-2023  润新知