Linux用户管理常用命令

      这篇我们讲一讲用户管理的相关内容,涉及到/etc/passwd,/etc/shadow,/etc/group三个用户账号相关的文件以及以下命令:

①用户管理相关命令:useradd, userdel,usermod,id,w,who,whoami,su,chsh,chfn,finger,pwck

②用户组管理相关命令:groupadd, groupdel,groupmod,gpasswd,newgrp,groups

③用户密码管理相关命令:passwd,chage



一、passwd文件

wKiom1Y8vvmDT_dGAAD9znP-WVY116.jpg

  • ①account:用户名

  • ②password:密码占位符

  • ③UID:用户ID号

  • ④GID:基本组ID号

  • ⑤GECOS:注释信息

  • ⑥directory:家目录

  • ⑦shell:默认shell


二、shadow文件

wKiom1Y8w93ju2RRAAF4B5I5WIE613.jpg

  • ①login name:用户名

  • ②encrypted password:加密的密码

  • ③days since Jan 1, 1970 that password was last changed:最近一次修改密码的时间

  • ④days before password may be changed:最短使用期限

  • ⑤days after which password must be changed:最长使用期限

  • ⑥days before password is to expire that user is warned:警告时间

  • ⑦days after password expires that account is disabled:非活动时间

  • ⑧days since Jan 1, 1970 that account is disabled:过期时间

  • ⑨a reserved field:保留区域,未使用



wKioL1Y-3FjTpBDXAAB3Jq85ILc523.png


  • ①从1970年1月1日到上次修改密码时间所走过的天数,也即/etc/shadow文件中第3字段所示

  • ②上次密码修改日期到今天所走过的天数,也即密码修改之后用了多少天

  • ③今天到密码警告期还有多少天

  • ④密码警告期和密码过期时间的中间差,也即/etc/shadow文件中第6字段所示

  • ⑤密码非活动期时间,也即/etc/shadow文件中第7字段所示

  • ⑥密码的失效时间,也即/etc/shadow文件中第8字段所示




三、group文件

wKiom1Y8xraiKR1oAAClemSTaAE133.jpg

  • ①group_name:组名

  • ②password:密码占位符

  • ③GID:基本组ID号

  • ④user_list:以此组为其附加组的用户列表



四、用户管理相关命令 

1.useradd

useradd - create a new user or update default new user information   # 创建新用户或更新 新用户的账户信息

SYNOPSIS
       useradd [options] LOGIN
       useradd -D
       useradd -D [options]
  
   -u UID:指定UID
   -g GID:指定GID,即用户的基本组,但GID要事先存在
   -G GID:指定用户的额外组,但GID要事先存在
   -d 目录: 指定家目录
   -c 备注:备注
   -s:shell:指定默认shell,应该指定使用/etc/shells文件中出现的shell
   -m:创建用户时,强制给用户创建家目录,一般常跟-k选项一起使用,-k后面指定复制到家目录下的SKEL目录路径
   -M:创建用户时,但不创建家目录
   -D:改变其默认shell 
   -r:创建系统用户 特点:id为1-499之间且不会为用户创建家目录
   
[root@soysauce ~]# useradd -r nginx      # 添加一个系统用户nginx,系统用户默认就没有家目录,相当于指定了-M选项
[root@soysauce ~]# useradd -u 530 -c "hadoop user" -s /sbin/nologin hadoop
[root@soysauce ~]# tail -1 /etc/passwd
hadoop:x:530:530:hadoop user:/home/hadoop:/sbin/nologin    # UID为530,注释信息为"hadoop user" 默认shell为nologin,即不允许登陆系统

2.userdel

userdel - delete a user account and related files    # 删除用户账号及其相关的文件

SYNOPSIS
       userdel [options] LOGIN
       
   -r:一并删除家目录
       
[root@soysauce ~]# userdel -r hadoop      # 删除用户nginx,其家目录及文件一并删除
[root@soysauce ~]# tail -1 /etc/passwd    # hadoop用户已经被删除了,nginx没有删除
nginx:x:103:160::/home/nginx:/bin/bash
[root@soysauce ~]# ls /home/               # 此时家目录下已经没有了hadoop目录

3.usermod

usermod - modify a user account                    # 修改一个用户的账户信息

SYNOPSIS
       usermod [options] LOGIN
   -u UID: 修改UID
   -g GID:修改GID
   -G GID:默认会覆盖原有的附加组,如果要是添加,可以同时使用-a选项
   -c string:修改注释信息,多个的话则以,分割
   -d new home:默认不会迁移用户的家目录,如果要迁移,同时使用-m选项
   -s SHELL:修改默认shell
   -l New_login_name:修改用户登录名称
   -e:修改过期期限,格式YYYY-MM-DD
   -f:修改非活动期限
   -L:锁定用户账号,即被锁定的账户不能登陆系统
   -U:解锁用户账号
	   
[root@soysauce ~]# usermod -l redhat nginx       # 修改nginx用户的登录名为redhat
[root@soysauce ~]# echo "redhat"|passwd --stdin redhat   # 利用标准输入给redhat用户加上密码
[root@soysauce ~]# tail -1 /etc/passwd
redhat:x:103:160::/home/nginx:/bin/bash       # 此时登陆名已经修改成了redhat
[root@soysauce ~]# usermod -L redhat           # 锁定redhat用户,即redhat用户不能登陆系统
[root@soysauce ~]# usermod -U redhat           # 解锁redhat用户,此时就可以再登陆系统了
	 	

4.id

id - print user identity        # 显示用户的ID,以及所属群组的ID

SYNOPSIS
       id [OPTION]... [USERNAME]
       
   -n:显示名称
   -u:显示UID
   -g:显示基本组ID
   -G:显示所有组ID
          
[root@soysauce ~]# id redhat                  # 显示redhat用户的uid,gid,附加组信息
uid=103(redhat) gid=160(nginx) groups=160(nginx)
[root@soysauce ~]# id -u redhat                # 显示redhat用户的uid
103
[root@soysauce ~]# id -un redhat                # 显示名称,一般-n选项同ugG选项一起使用
redhat

5.w

w - Show who is logged on and what they are doing.   # 显示谁登陆了系统,并且他们在做什么

SYNOPSIS
       w - [husfV] [user]
       
[root@soysauce ~]# w    
 11:48:35 up 10 days, 20:35,  1 user,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    27.23.192.82     09:28    0.00s  0.13s  0.00s w 
11:48:35 现在的时间  
up 10 days 20:35 系统开机运转到现在经过的时间
1users 登陆系统用户总人数
load average: 0.00, 0.00, 0.00 平均负载,最近一分钟,五分钟和十五分钟的队列长度

6.who

who - show who is logged on        # 显示哪些用户登陆了系统

SYNOPSIS
       who [OPTION]... [ FILE | ARG1 ARG2 ]
   -b:显示上次系统重启的时间
   -r:显示当前系统运行级别
   -q或--count:只显示登入系统的帐号名称和总人数
   -H或--heading:显示各栏位的标题信息列
          
[root@soysauce ~]# who                    # 显示当前登陆的用户,运行终端,登陆时间,IP
root     pts/0        2015-11-07 09:28 (27.23.192.82)
[root@soysauce ~]# who -r                 # 显示当前系统运行级别
         run-level 3  2015-10-27 15:13                   last=S
[root@soysauce ~]# who -b                 # 显示上次系统重启时间
         system boot  2015-10-27 15:13    
[root@soysauce ~]# who -q                 # 显示登陆系统的用户和用户总数
root
# users=1
[root@soysauce ~]# who -H                 # 显示状态信息栏,方便理解每一列所代表的意思
NAME     LINE         TIME             COMMENT
root     pts/0        2015-11-07 09:28 (27.23.192.82)

7.whoami

whoami - print effective userid        # 显示当前用户的有效用户名

SYNOPSIS
       whoami [OPTION]...
       
[root@soysauce ~]# whoami              # 输出效果与id-un命令相同
root

8.su

su - run a shell with substitute user and group IDs   # 切换当前用户身份到其他用户身份
  
SYNOPSIS
        su [OPTION]... [-] [USER [ARG]...]
   -l:切换用户时,同时变更工作目录,以及HOME,SHELL,USER,logname,PATH环境变量
   -c<指令>或--command=<指令>:执行完指定的指令后,即恢复原来的身份
    
[redhat@soysauce ~]# su -c ifconfig root        # 切换帐号为root并在执行ifconfig指令后退出变回redhat

9.chsh

chsh - change your login shell            # 改变登陆shell
    
SYNOPSIS
       chsh [ -s shell ] [ -l ] [ -u ] [ -v ] [ username ]
   -s或--shell:更改用户默认shell
   -l或--list-shells:列出目前系统可用的shell列表
              
[root@soysauce ~]# tail -1 /etc/passwd            # 此时redhat用户默认shell为/bin/bash
redhat:x:500:500::/home/redhat:/bin/bash
[root@soysauce ~]# chsh -s /sbin/nologin redhat  # 修改redhat用户默认shell为/sbin/nologin
Changing shell for redhat.
Shell changed.
[root@soysauce ~]# tail -1 /etc/passwd            
redhat:x:500:500::/home/redhat:/sbin/nologin   # 此时redhat用户的默认shell已经改为了/sbin/nologin
[root@soysauce ~]# chsh -l            # 查看当前系统上可用的shell列表
/bin/sh
/bin/bash
/sbin/nologin
/bin/tcsh
/bin/csh
/bin/ksh
[root@soysauce ~]# cat /etc/shells    # 同上个命令一样
/bin/sh
/bin/bash
/sbin/nologin
/bin/tcsh
/bin/csh
/bin/ksh

10.chfn

chfn - change your finger information            # 改变finger指令显示的信息

SYNOPSIS
     chfn [ -f full-name ] [ -o office ] [ -p office-phone ] [ -h home-phone ] [ -u ] [ -v ] [ username ]
       
[root@soysauce ~]# tail -1 /etc/passwd
redhat:x:500:500::/home/redhat:/sbin/nologin
[root@soysauce ~]# chfn redhat            # 修改redhat用户的finger信息
Changing finger information for redhat.
Name []: redhat
Office []: redhat.com
Office Phone []: 110
Home Phone []: 120

Finger information changed.
[root@soysauce ~]# tail -1 /etc/passwd
redhat:x:500:500:redhat,redhat.com,110,120:/home/redhat:/sbin/nologin

11.finger

finger - user information lookup program        # 用户信息查找程序

SYNOPSIS
     finger [-lmsp] [user ...] [user@host ...]
   -l:列出该用户的帐号名称,真实姓名,用户专属目录,登入所用的Shell,登入时间,转信地址,电子邮件状态,还有计划文件和方案文件内容
   -m:排除查找用户的真实姓名 
   -s:列出该用户的帐号名称,真实姓名,登入终端机,闲置时间,登入时间以及地址和电话
   -p:列出该用户的帐号名称,真实姓名,用户专属目录,登入所用的Shell,登入时间,转信地址,电子邮件状态,但不显示该用户的计划文件和方案文件内容
     
[root@soysauce ~]# finger              # 不加任何参数显示当前登陆系统用户
Login     Name       Tty      Idle  Login Time   Office     Office Phone   Host
root      root       pts/0          Nov  7 14:33                           (27.23.192.82)
[root@soysauce ~]# finger hadoop            # 显示hadoop用户的信息
Login: hadoop         			Name: (null)
Directory: /home/hadoop             	Shell: /bin/bash
Never logged in.
No mail.
No Plan.

12,pwck

pwck - verify integrity of password files  # 验证系统认证文件/etc/passwd和/etc/shadow内容和格式的完整性

SYNOPSIS
       pwck [-q] [-s] [passwd shadow]
       pwck [-q] [-r] [passwd shadow]

[root@soysauce ~]#  [root@iZ23fi07mooZ web_zc]# pwck /etc/passwd
user adm: directory /var/adm does not exist
user news: directory /etc/news does not exist
user uucp: directory /var/spool/uucp does not exist
user gopher: directory /var/gopher does not exist
user ftp: directory /var/ftp does not exist
user pcap: directory /var/arpwatch does not exist
user oprofile: directory /home/oprofile does not exist
user avahi-autoipd: directory /var/lib/avahi-autoipd does not exist
user mysql: directory /home/mysql does not exist
user apache: directory /home/apache does not exist
pwck: no changes


五、用户组管理相关命令

1.groupadd

groupadd - create a new group           # 创建一个新组

SYNOPSIS
       groupadd [-g gid [-o]] [-r] [-f] [-K KEY=VALUE] group
   -g:指定新建工作组的id 
   -r:创建系统工作组,系统工作组的组ID小于500
               
[root@soysauce ~]# groupadd -r -g 304 nginx    # 添加一个系统组nginx,gid为304
[root@soysauce ~]# tail -1 /etc/group
nginx:x:304:

2.groupdel

groupdel - delete a group                  # 删除一个组

SYNOPSIS
       groupdel group
       
[root@soysauce ~]# groupdel  nginx        # 删除nginx组

3.groupmod

groupmod - modify a group                # 修改组信息

SYNOPSIS
       groupmod [-g gid [-o ]] [-n new_group_name] group
    -g<群组识别码>:设置欲使用的群组识别码
    -o:重复使用群组识别码 
    -n<新群组名称>:设置欲使用的群组名称

[root@soysauce ~]# tail -1 /etc/group
hadoop:x:501:                                       # 组名为hadoop
[root@soysauce ~]# groupmod -n hadoopgroup hadoop   # 修改hadoop用户组新组名为hadoopgroup
[root@soysauce ~]# tail -1 /etc/group
hadoopgroup:x:501:                                  # 此时已经变成了hadoopgroup

4.gpasswd

gpasswd - administer the /etc/group file        # 管理/etc/group文件

SYNOPSIS
       gpasswd group
       gpasswd -a user group
       gpasswd -d user group
       gpasswd -R group
       gpasswd -r group
       gpasswd [-A user,...] [-M user,...] group
   -a:添加用户到组 
   -d:从组删除用户
   -r:删除密码 
   -R:限制用户登入组,只有组中的成员才可以用newgrp加入该组
   

[root@soysauce ~]# gpasswd nginx   # 给组添加组密码,组临时切换时,使用newgrp需要用到此时添加的密码
Changing the password for group nginx
New Password: 
Re-enter new password:
[root@soysauce ~]# gpasswd  -a redhat nginx  # 添加redhat用户到nginx组,redhat用户以nginx组为附加组
Adding user redhat to group nginx
[root@soysauce ~]# gpasswd -d redhat nginx   # 将redhat用户从nginx组中删除
Removing user redhat from group nginx

5.newgrp

newgrp - log in to a new group                # 登陆到一个新组

SYNOPSIS
       newgrp [-] [group]

[root@soysauce ~]# gpasswd redhat                   # 给redhat组添加密码
Changing the password for group redhat
New Password: 
Re-enter new password:          
[root@soysauce ~]# id hadoop
uid=501(hadoop) gid=501(hadoop) groups=501(hadoop)       # 此时基本组和附加组都是hadoop
[root@soysauce ~]# usermod -a -G redhat hadoop    # 将hadoop用户添加到redhat组中
[root@soysauce ~]# id hadoop                            # 此时hadoop有个附加组为redhat
uid=501(hadoop) gid=501(hadoop) groups=501(hadoop),500(redhat)
[root@soysauce ~]# su - hadoop             # 切换到hadoop用户
[hadoop@soysauce ~]$ id                 # 此时基本组还是hadoop
uid=501(hadoop) gid=501(hadoop) groups=501(hadoop),500(redhat)
[hadoop@soysauce ~]$ newgrp redhat   # 基本组临时切换成redhat,如本来就属于redhat组,切换时不需要密码
[hadoop@soysauce ~]$ id          
uid=501(hadoop) gid=500(redhat) groups=500(redhat),501(hadoop)   # 此时基本组已经切换成了redhat
[hadoop@soysauce ~]$ exit                                   # 退出切换到redhat基本组状态
exit
[hadoop@soysauce ~]$ id                                     # 此时基本组恢复成hadoop
uid=501(hadoop) gid=501(hadoop) groups=500(redhat),501(hadoop)

6.groups

groups - print the groups a user is in         # 显示一个用户所在的组

SYNOPSIS
       groups [OPTION]... [USERNAME]...
       
[root@soysauce ~]# groups root            
root : root bin daemon sys adm disk wheel      # 显示root用户所属的组,包括基本组和附加组


六、用户密码管理相关命令

1.passwd

passwd - update user’s authentication tokens        # 更新账户的密码相关信息

SYNOPSIS
       passwd  [-k]  [-l] [-u [-f]] [-d] [-n mindays] [-x maxdays] [-w warndays] [-i inac-
       tivedays] [-S] [--stdin] [username]
            
   -n:设置密码最小使用期限
   -x:设置密码最长使用期限
   -w:设置密码警告期限
   -i:设置密码非活动期
   -d:删除密码,仅有系统管理者才能使用
   -f:强制执行
   -k:设置只有在密码过期失效后,方能更新 
   -l:锁住账户密码
   -u:解锁账户密码
   -s:列出密码的相关信息,仅有系统管理者才能使用
      
[root@soysauce ~]# echo "redhat"|passwd --stdin hadoop    # 修改hadoop用户密码为redhat
Changing password for user hadoop.
passwd: all authentication tokens updated successfully.
[root@soysauce ~]# passwd -l hadoop            # 锁定hadoop用户,使之不能修改密码
Locking password for user hadoop.
passwd: Success
[root@soysauce ~]# su - hadoop                 # 切换至hadoop
[hadoop@soysauce ~]$ passwd                 
Changing password for user hadoop.
Changing password for hadoop
(current) UNIX password: 
passwd: Authentication token manipulation error        # 不能修改密码,提示错误
[hadoop@soysauce ~]$ exit                              # 退出,回到root用户
[root@soysauce ~]# passwd -S hadoop                    # 查看hadoop密码状态信息
hadoop LK 2015-11-07 0 99999 7 -1 (Password locked.)
[root@soysauce ~]# passwd -u hadoop            # 先解锁hadoop用户,使之可以修改自己的密码
Unlocking password for user hadoop.
passwd: Success.
[root@soysauce ~]# passwd -S hadoop            
hadoop PS 2015-11-07 0 99999 7 -1 (Password set, MD5 crypt.) # 此时可以看到hadoop密码是MD5加密存放的
[root@soysauce ~]# passwd -d hadoop            # 清空hadoop密码,此时hadoop将不能远程登陆系统
Removing password for user hadoop.
passwd: Success
[root@soysauce ~]# passwd -S hadoop        
hadoop NP 2015-11-07 0 99999 7 -1 (Empty password.)    # 此时密码已经清空了

2.chage

chage - change user password expiry information      # 修改用户账号和密码的有效期限

SYNOPSIS
       chage [options] user
       
   -d:上一次更改的日期,日期格式为YYYY-MM-DD
   -m:密码最短使用期限,为0代表任何时候都可以更改密码 
   -M:密码最长使用期限 
   -W:密码警告期限,指的是用户密码到期前,提前多少天收到警告信息  
   -I:密码非活动期。指的是如果一个密码已过期这些天,那么此帐号将不可用
   -E:帐号失效的日期。过了这天,此帐号将不可用 
   -l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期
      
[root@soysauce ~]# tail -1 /etc/shadow
hadoop::16746:0:99999:7:::                        # hadoop最近一次修改密码时间为2015-11-7
[root@soysauce ~]# chage -d 2015-11-05 hadoop     # 修改最近一次密码修改日期为两天前
[root@soysauce ~]# tail -1 /etc/shadow
hadoop::16744:0:99999:7:::                        # 此时第3位16746变为了16744

[root@soysauce ~]# chage -E 2015-11-9 hadoop      # 设置密码失效时间为2015-11-9
[root@soysauce ~]# tail -1 /etc/shadow
hadoop::16744:0:99999:7::16748:                   # 此时第8位变为了16748

[root@soysauce ~]# chage -m 3  -M 15 hadoop       # 设置密码最短使用期限3天,最长使用期限15天
[root@soysauce ~]# tail -1 /etc/shadow
hadoop::16744:3:15:7::16748:                      # 此时第4位变为了3,第5位变为了15

[root@soysauce ~]# chage -W 8 -I 4 hadoop         # 设置密码警告期限为8天,非活动期为4天
[root@soysauce ~]# tail -1 /etc/shadow            # hadoop用户密码在上面的示例中清除了,所以此处显示为空
hadoop::16744:3:15:8:4:16748:                     # 此时第6位变为了8,第7位变为了4

[root@soysauce ~]# chage -l hadoop        # 显示hadoop用户账号密码状态信息
Last password change			        : Nov 05, 2015
Password expires			        : Nov 20, 2015
Password inactive			        : Nov 24, 2015
Account expires			        : Nov 09, 2015
Minimum number of days between password change	     : 3
Maximum number of days between password change	     : 15
Number of days of warning before password expires     : 8


总结:

  • /etc/passwd         用户账户信息文件

  • /etc/shadow       安全的用户账户信息文件

  • /etc/group       用户所属组信息文件

  • /etc/gshadow       安全的用户组信息文件

  • /etc/default/useradd    创建用户时默认属性定义文件

  • /etc/skel/         创建用户家目录时默认复制的文件夹

  • /etc/login.defs       影子文件配套配置文件    

  • /etc/sudoers       授权用户使用sudo命令文件

  • /etc/shells         系统上合法的shell列表







你可能感兴趣的:(linux,用户管理)