用户相关命令

1.1 useradd 命令创建用户 语法格式:useradd [options] [login] useradd [选项] [用户名] 选项: -n 不创建以用户名为名的组 -c 创建用户时,添加个人信息 -u 用户ID值,这个值必须是唯一的 -s 用户登录后使用的shell -g 指定用户对应的组,对应的组必须在系统中存在 范例1:useradd命令不使用任何选项 [root@localhost ~]# useradd agan [root@localhost ~]# grep -w "agan" /etc/passwd agan:x:504:504::/home/agan:/bin/bash [root@localhost ~]# grep -w "agan" /etc/group agan:x:504: 注:创建用户的同时,并创建了一个以自己为名的组 范例2:-n 选项 [root@localhost ~]# useradd -n agan1 [root@localhost ~]# grep -w "agan1" /etc/passwd agan1:x:505:100::/home/agan1:/bin/bash [root@localhost ~]# grep -w "agan1" /etc/group [root@localhost ~]# 注:创建用户时,使用-n参数,不创建以自己为名的组 范例3:-c 选项 [root@localhost ~]# useradd -c oldboy,15810516499,河北 agan2 [root@localhost ~]# grep -w "agan2" /etc/passwd agan2:x:506:506:oldboy,15810516499,河北:/home/agan2:/bin/bash 注:创建用户的同时,添加agan2用户的个人信息,个人信息使用逗号隔开。 范例4:-u 选项 [root@localhost ~]# useradd -u 888 agan3 [root@localhost ~]# grep -w "agan3" /etc/passwd agan3:x:888:888::/home/agan3:/bin/bash 注:创建用户的同时,修改用户默认的UID 范例5: -s选项 [root@localhost ~]# useradd -s /sbinlogin tian [root@localhost ~]# grep -w "tian" /etc/passwd tian:x:8892:8892::/home/tian:/sbinlogin 注:-s指定用户登录后的shell,/sbinlogin 表示禁止登录,此例在企业中部署nginx、mysql等服务时经常用到。 范例6:-g选项 [root@localhost ~]# groupadd edu [root@localhost ~]# useradd -g edu agan6 [root@localhost ~]# grep -w "agan6" /etc/passwd agan6:x:8893:8893::/home/agan6:/bin/bash [root@localhost ~]# id agan6 uid=8893(agan6) gid=8893(edu) groups=8893(edu) 注:让agan6用户,隶属于到edu组,这里通过id 命令来查看用户,所属于的组。因为使用-g 组信息记录在/etc/passwd中。事实上系统确认一个用户的所属组的时候是根据/etc/passwd的组ID。 因此,"useradd -g"仅仅修改/etc/passwd,而不会修改/etc/group。 加"-G"参数会把修改记录在/etc/group 1.2 usermod 修改系统已经存在的用户信息

语法:usermod   [options]    [login]
     usermod    [选项]       [用户名]
选项:
-c   修改用户的个人信息,同useradd 的-c功能  
-g   修改用户对应的用户组,同  useradd的-d功能
-s   修改用户登录后使用的shell名称,同useradd的-s功能
-u   修改用户的uid ,同useradd 的-u功能
-l    修改用户的名称

 范例1:-l选项,把agan6的用户名改为u1
[root@localhost ~]# usermod   -l   u1   agan6
                                                     新名   已存在的名

1.3 userdel 删除用户 语法:userdel [options] [login] userdel [选项] [用户名]

  选项:
  -f     强制删除用户
  -r     删除用户的同时,删除与用户相关的所有文件(包含邮箱信息)
  
 范例1:不加参数删除用户
  userdel 用户名

只删除用户的个人信息,不能删除用户的邮箱信息,在/home下还可以看到用户名 注: 如果忘记添加-r参数时,想彻底删除用户 ,就要进入到邮箱所存在的路径,删除邮箱信息 [root@localhost home]# cd /var/spool/mail/ [root@localhost mail]# ls agan11 agan8 tian u11 u3 agan6 agan9 u1 u2 u6

范例2:加-r参数 删除用户
  userdel -r 用户名 

删除用户(删除用户的个人信息和邮箱信息,也就是删除所有信息) 备注:当使用-r 也无法彻底清空用户内容时,把这两个配置文件中与要删除的用户相关的信息,注释或删除掉。 /etc/passwd /etc/group

1.4 修改用户密码命令 passwd 语法:passwd [option] [username] passwd [选项] [用户名] 选项: --stdin //从标准输入读取密码字符串

 范例1:修改当前用户的密码

[root@localhost ~]# passwd Changing password for user root. New password: BAD PASSWORD: it is WAY too short BAD PASSWORD: is too simple Retype new password: passwd: all authentication tokens updated successfully.  注:普通用户使用passwd 修改密码时,必须满足密码复杂性要求;root 修改密码不需要满足密码复杂性。

范例2:修改普通用户的密码

[root@localhost ~]# useradd u1 [root@localhost ~]# passwd u1 Changing password for user u1. New password: BAD PASSWORD: it is WAY too short BAD PASSWORD: is too simple Retype new password: passwd: all authentication tokens updated successfully.

范例3:一条命令非人工交互设置密码(企业使用技巧) [root@localhost ~]# echo "123456" | passwd --stdin u1 Changing password for user u1. passwd: all authentication tokens updated successfully.  注:这个命令在工作中批量设置密码时很有用

范例4:批量更新用户的密码 [root@localhost gj]# chpasswd //命令输入完,直接回车 root:123456 //格式 用户名:密码,用户必须存在才可以,一行一个用户 u1:123456 u2:654321 //输入完成后,直接ctrl+D 结束输入  注:此命令有一个bagel,当一行输入错误后,不能返回修改。 当使用useradd 命令批量创建用户后,可以使用chpasswd 命令批量设置密码或批量修改密码。

范例5:把用户和密码字符串放到文件里执行批量改密码 [root@localhost gj]# cat passwd.txt u1:123 u2:321 u3:123 [root@localhost gj]# chpasswd < passwd.txt 1.5 su sudo su的作用是变更为其它使用者的身份,超级用户除外,需要键入该使用者的密码。 su 切换用户却不切换工作环境 , su - 同时切换用户与工作环境

注: su的缺点造就了sudo的诞生 由于用户通过 su root 命令直接获取root权限,从而造成用户的权限太大,也就可能给系统造成危险。 为了既保证系统的安全又可以执行相应命令,sudo 也就以此诞生。

1.6 sudo作用: 通过配置文件来限制用户的权限 ,可以让普通用户在执行指定的命令或程序时,拥有超级用户的权限。 sudo的工作过程如下: 1,当用户执行sudo时,系统会主动寻找/etc/sudoers文件,判断该用户是否有执行sudo的权限 2,确认用户具有可执行sudo的权限后,让用户输入用户自己的密码确认 3,若密码输入成功,则开始执行sudo后续的命令 4,root执行sudo时不需要输入密码(因为sudoers文件中有配置root ALL=(ALL) ALL这样一条规则)

范例1:给普通用户u1提权,让普通用户可以查看root用户的家目录;普通用户可以使用useradd命令,创建新用户 范例分析步骤: 1) useradd u1 2) visudo=vi打开/etc/sudoers文件 或 vim /etc/sudoers  注:visudo会检查内部语法,避免用户输入错误信息,所以我们一般使用visudo,编辑此文件要用root权限 3) 编辑文件的第98行,编辑完成后,wq! 强制保存退出 root ALL=(ALL) ALL u1 ALL=(ALL) /bin/ls,/usr/sbin/useradd

4)使用u1 用户登录测试
sudo useradd u11 //可成功创建用户,证明提权成功 sudo ls /root //可查看root的家,证明提权成功 5) sudo -l //-l 参数是列出当前用户可执行的命令,但只有在sudoers文件里的用户才能使用该选项。 第2章 用户查询命令 2.1 w命令 w命令用于显示目前登入系统的用户信息。 执行这项指令可得知目前登入系统的用户有哪些人,以及他们正在执行的程序。

范例1: 单独执行 w 指令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息。

2.2 id命令 查看用户的UID 、GID [root@bogon /]# id user6 uid=8897(user6) gid=8899(z11) groups=8899(z11) [root@bogon /]# id -g user6 8899 [root@bogon /]# id -G user6 8899 [root@bogon /]# id -u user6 8897 2.3 last命令用了显示用户登录情况,以下是直接显示固定行数的记录: 2.4 lastlog 命令 显示linux中所有用户最近一次远程登录的信息 第3章 组的相关命令 3.1 添加用户组命令 groupadd

  语法:groupadd  [options]   [group]
            groupadd   [选项]      [用户组]
  选项:
  -g   gid         指定用户组的GID,GID唯一不能为负数,如果不指定GID从500开始
  -f                  新增一个组,强制覆盖一个已存在的组,GID、组成员不会改变。

 范例1:添加组z11,查看添加后的组信息
[root@bogon ~]# groupadd z11
[root@bogon ~]# grep "z11" /etc/group
z11:x:8895:
[root@bogon ~]# tail -1 /etc/group
z11:x:8895:

3.2 gpasswd户加入到组中的命令 将已存在的用户加入到组中的命令 语法:gpasswd [options] [user] [group] gpasswd [选项] [用户名] [组名] 选项: -a:添加一个用户到组,可以追加到组 -M:添加多个用户到组,覆盖之前的组成员 -d:从组删除用户

范例1:把user1用户添加到z1,并且查看是否添加成功 [root@bogon gj]# groupadd z1 [root@bogon gj]# useradd user1 [root@bogon gj]# gpasswd -a user1 z1 Adding user user1 to group z1 [root@bogon gj]# grep "z1" /etc/group z1:x:8896:user1 注:-a选项只能添加一个用户,需要同时添加多用户时,使用-M参数 范例2:同时添加user2、user3用户到z1组(先创建user2、user3用户) [root@bogon gj]# gpasswd -M user2,user3 z1 [root@bogon gj]# grep "z1" /etc/group z1:x:8896:user2,user3 注:使用-M参数添加多个用户时,多用户之间使用逗号分割;添加批量用户时,先使用-a参数,在使用-M参数,就会覆盖之前添加过的用户;所以添加多用户时,先使用-M 参数。 范例3:将user2用户从组中删除 [root@bogon gj]# gpasswd -d user2 z1 Removing user user2 from group z1 [root@bogon gj]# grep "z1" /etc/group z1:x:8896:user3

3.3 groupmod修改组信息的命令 语法:groupmod [options] [group] groupmod [选项] [组名]

           groupmod  -n  新名  旧名
           groupmod  -g  8888  dir
 选项:
 -n        修改组名
 -g       修改GID
 范例1:修改z1组的GID

[root@bogon gj]# grep "z1" /etc/group z1:x:8896:user3 [root@bogon gj]# groupmod -g 8888 z1 [root@bogon gj]# grep "z1" /etc/group z1:x:8888:user3

范例2:修改z1组的组名为newz1 [root@bogon gj]# grep "z1" /etc/group z1:x:8888:user3 [root@bogon gj]# groupmod -n z1new z1 [root@bogon gj]# grep "z1" /etc/group z1new:x:8888:user3 3.4 groupdel删除组的命令

 语法:groupdel   [group]
           groupdel   [组名]

范例1: groupdel 组名 删除组,删除组后,用户名依然存在 附加命令: 查看用户属于到哪些组,使用命令:groups 语法:groups [user] groups 用户名 范例1: [root@bogon gj]# groups user1 user1 : user1 z2 第4章 批量创建用户:脚本 1、创建一个文件,此文件的扩展名必须为*.sh vim aa.sh #!/bin/bash for ((i=1;i<=10;i++)); { useradd gj$i

} echo "批量用户成功创建完成啦!!!"