用户和组管理的相关命令:

    useradd、usermod、passwd、userdel

    groupadd、groupmod、gpasswd、groupdel

    chage, chsh, chfn

  id, w, who, whoami   su

 

 useradd:创建用户

 

            useradd [options] LOGIN

            useradd -D [options]

                -r: 创建系统用户

                -u UID: 指定UID;

                -g GID: 指定用户所属基本组,此组必须事先存在

                -c 'COMMENT'

                -d /PATH/TO/SOMEWHERE:指定用户的主目录路径;此位置不能事先存在,否则,其用户相关配置文件将被复制;/etc/skel

                -s SHELL:设定用户的默认shell;

                    cat /etc/shells

                -G GID,...:指定所属的附加组;

                -M: 不给用户创建家目录;

 

示例:

[root@Localhost~] useradd test                          #添加用户

[root@Localhost~] useradd -r liaodijin                      #添加系统用户

[root@Localhost~] useradd -d /home/liaodijin liaodijin   #添加用户,并且指定,home目录

[root@Localhost~] useradd -g mytest -d /home/hell hell     #添加用户,指定组,并且设定home目录(此home目录不能事先存在)

 

练习:创建用户Centos,所属附加组user和test,ID号为300, 家目录为/home/test;

 

[root@Localhost~]  useradd -u 300 -G uesr,test -d/home/test Centos

 

groupadd:创建组

 

    groupadd [OPTIONS] GROUPNAME

        -g GID: 指明组ID;

        -r: 创建系统组;

 

示例:

添加一个用户组

[root@Localhost~] groupadd mage

添加一个用户组,并指定GID

[root@Localhost~] groupadd -g 400 mage

 

 

id:查看用户相关的id信息

 

    id [OPTION]... [USER]

        -u: UID

        -g: GID

        -G: Groups

        -n: NAME

示例:

[root@localhost~]# id                  #显示当前用户的信息

[root@localhost~]# id

uid=0(root)gid=0(root) groups=0(root)context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

[root@localhost~]# id Centos          #显示Centos的信息

uid=1002(Centos)gid=1002(Centos) groups=1002(Centos)

 

su:switchuser, 切换用户或以其它用户的身份执行命令

 

    切换方式:

        su USERNAME: 非完全切换;非登录式切换

        su - USERNAME或su -lUSERNAME: 完全切换;登录式切换

    仅以指定用户的身份执行指定的命令:

        su - USERNAME -c 'COMMAND'

 

示例:

[root@Localhost~] su Centos              #切换用户,原用户环境变量

[root@Localhost~] su - Centos              #切换用户,新用户环境变量

[Centos@Localhost~] su -c ls root        #切换用户执行命令,执行后返回原用户

usermod:用户属性修改

 

            usermod [OPTION]... LOGIN

                -u UID

                -g GID

                -G GID[,GID,...]:修改用户所属的附加组;同时使用-a选项为追加附加组;

                -s SHELL

                -c 'COMMENT'

                -d HOME: 修改用户的家目录为新位置时,用户原来的文件是不会被移动至新家;-m选项可实现同时将其迁至新的家目录;

                -l LOGIN

                -L:lockuser

                -U: unlock user

 

示例:

[root@Localhost~] usermod -d /home/hell/ Centos    #更改用户home目录

[root@Localhost~] usermod -e 03/06/16 Centos      #给用户加个有效期

 

1、将 user2添加到组 staff 中

#usermod -G staff user2

2、修改 user的用户名为 user1

#usermod -l user1 user

3、锁定账号 user1

#usermod -L user1

4、解除对 user1的锁定

#usermod -U user1

 

 

passwd:给用户添加密码

 

            passwd [OPTION] [UserName]

                -l: lock user

                -u: unlock user

                -n mindays: 最短使用期限;

                -x maxdays:默认为99999天;

                -w warndays

                -i inactivedays

                --stdin:从标准输出接收用户密码;

                    echo 'centos' | passwd--stdin centos

 

示例:

[root@Localhost~] passwd Centos     #给Centos修改密码

 

userdel:删除用户

    

            userdel [-r] USERNAME

                -r:删除用户的同时删除其家目录;

        groupmod: 组属性修改

            groupmod [OPTION] GROUPNAME

                -n GROUP_NAME

                -g GID

 

示例:

[root@Localhost~] userdel hao       #删除用户

[root@Localhost~] userdel -r hao     #删除用户,并且删除用户home目录

 

gpasswd:设定组密码

用法:gpasswd[-a user][-d user][-A user,...][-M user,...][-r][-R]groupname

参数:

-a:添加用户到组

-d:从组删除用户

-A:指定管理员

-M:指定组成员和-A的用途差不多

-r:删除密码

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

gpasswdgroupname:如系统有个peter账户,该账户本身不是groupname群组的成员,使用newgrp需要输入密码即可

 

示例:

 

[root@localhost~]# gpasswd -A peter test1  #将peter设为test1组管理员

 

[root@localhost~]# gpasswd -a Centos test1  #将用户Centos加入到test1组

 

[root@localhost~]# gpasswd -d Centos test1 #将用户Centos从test1组中移出

 

 

newgrp:切换基本组为指定的组

 

示例:

[Centos@localhost ~]# newgrp Us  #登录到Us群组

 

说明:newgrp指令类似login指令,当它是以相同的帐号,另一个群组名称,再次登入系统。欲使用newgrp指令切换群组,您必须是该群组的用户,否则将无法登入指定的群组。单一用户要同时隶属多个群组,需利用交替用户的设置。若不指定群组名称,则newgrp指令会登入该用户名称的预设群组。

 

groupdel:删除组

示例:

[root@Localhost~] groupdel test   #删除组test

 

chage:修改用户账号及密码的属性

 

            chage [OPTION]... LOGIN

  参数意思:

  -m 密码可更改的最小天数。为零时代表任何时候都可以更改密码。

  -M 密码保持有效的最大天数。

  -W 用户密码到期前,提前收到警告信息的天数。

  -E 帐号到期的日期。过了这天,此帐号将不可用。

  -d 上一次更改的日期

  -I 停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。

  -l 例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。

 

示例:

1

[root@localhost~]# chage -l Centos      #查看用户密码设定情况

最近一次密码修改时间                                   :  8月 27, 2015

密码过期时间                                   : 从不

密码失效时间                                   : 从不

帐户过期时间                                            : 从不

两次改变密码之间相距的最小天数          :-1

两次改变密码之间相距的最大天数          :-1

在密码过期之前警告的天数        :-1

 

[root@localhost~]# chage -M 60 Centos        #密码有效期60天

 

[root@localhost~]# chage -d 0 Centos       #强制用户登陆时修改口令

 

[root@localhost~]# chage -d 0 -m 0 -M 90 -W 15 Centos  #强制用户下次登陆时修改密码,并且设置密码最低有效期0和最高有限期90,提前15天发警报提示

 

2

#chage -E '2016-08-27' test  # test这个账号的有效期是2016-08-27

 

p_w_picpath

 

其它命令:

chfn:改 变 你 的 finger 讯 息

chsh:用于 改变 用户的 登录 shell. 如果 没有在 命令行上 指定 shell, chsh 能够做出 提示.

finger:用户信息查找

whoami:打印与当前生效的用户 ID 关联的用户名。与 id -un 相同。

who:显示当前已登录的用户信息

用法:who [选项]... [ 文件 | 参数1 参数2 ]

示例:

[root@localhost~]# who    #显示目前登入系统的用户信息

 (unknown) :0           2015-08-25 20:05 (:0)

root     pts/0        2015-08-25 20:13 (192.168.0.179)

[root@localhost~]# who -a   #显示目前登入系统的用户详细信息

            system boot 2015-08-25 20:05

           run-level 5  2015-08-25 20:05

(unknown)? :0           2015-08-25 20:05   ?         2707 (:0)

root     + pts/0        2015-08-25 20:13   .         3038 (192.168.0.179)

[root@localhost~]# who -q #列出所有已登录用户的登录名与用户数量

(unknown)root

#users=2

[root@localhost~]# who -u  #列出已登录的用户

(unknown):0           2015-08-25 20:05   ?         2707 (:0)

root     pts/0        2015-08-25 20:13   .         3038 (192.168.0.179)

[root@localhost~]# who -r  #查看已登录的用户的级别

         run-level 5  2015-08-25 20:05

 

[root@localhost~]# who -b   #上次系统启动时间

         system boot  2015-08-25 20:05

            

 

w:显示目前登入系统的用户信息。

 

 

语法:w [-fhlsuV][用户名称]

-f 开启或关闭显示用户从何处登入系统。

 

-h 不显示各栏位的标题信息列。

 

-l 使用详细格式列表,此为预设值。

 

-s 使用简洁格式列表,不显示用户登入时间,终端机阶段作业和程序所耗费的CPU时间。

16:13:36up 1 day, 20:08,  2 users,  load average: 0.00, 0.01, 0.05

USER     TTY     FROM              IDLE WHAT

root     pts/0   192.168.0.179     0.00s w -s

-u 忽略执行程序的名称,以及该程序耗费CPU时间的信息。

 16:13:09 up 1 day, 20:08,  2 users, load average: 0.00, 0.01, 0.05

USER     TTY     FROM             LOGIN@   IDLE  JCPU   PCPU WHAT

(unknown:0       :0               Tue20   ?xdm? 21:02   0.44s gdm-session-worker[pam/gdm-launch-environment]

root     pts/0   192.168.0.179    Tue20    5.00s 0.30s  0.00s w -u

示例:

[root@localhost~]# w     #示当前登入系统的用户信息

16:10:45up 1 day, 20:05,  2 users,  load average: 0.00, 0.01, 0.05

USER     TTY     FROM             LOGIN@   IDLE  JCPU   PCPU WHAT

root     pts/0   192.168.0.179    Tue20    5.00s 0.32s  0.03s w