3. 用户和组管理

3. 用户和组管理

用户配置文件和密码配置文件

/etc/passwd
	[root@lz-01 ~]# cat /etc/passwd
	root:x:0:0:root:/root:/bin/bash

/etc/passwd 由:分割成7个字段,每个字段的具体含义如下

  • 第1段为用户名,代表用户账号的字符串
  • 第2段存放的是账号的口令,早期Unix系统口令存在这里,后将其放在/etc/shadow中,这里用一个x代替
  • 第3段是一个数字,代表用户标识号,称为uid; root的uid=0
  • 第4段数字,表示组标识号,称为gid
  • 第5段为注释说明,没有实际意义,通常记录用户的一些属性.可使用chfn命令更改信息
  • 第6段用户的家目录,可自定义
  • 第7段用户的shell
/etc/shadow
	[root@lz-01 ~]# cat /etc/shadow
	root:$6$BuqDCNXE$ALHzqpqTVXcIg35U9lkTNbxIgCKWWAKNLhJAIyy.vkLtHaZo/XikvlRWdBw37vYYq2ZWLChvODmALGdkpflzE0:17968:0:99999:7:::

/etc/shadow和/etc/passwd类似,由:分割为9段.每个字段含义如下

  • 第1为用户名,与/etc/passwd对应

  • 第2段为用户名已加密的密码,是该账号的真正密码. 文件属性是000,

      [root@lz-01 ~]# ls -l /etc/shadow
      ---------- 1 root root 610 3月  20 21:07 /etc/shadow
    
  • 第3段是上次更改密码的日期 这个数字是由1970/1/1和上次更改密码的日期计算出来的.

例如上次更改密码日期2012/1/1, 365*(2012-1970)+(2012-1970)/4+1=15341; 如果是闰年则有366天.

  • 第4段为要过多少天才可以更改密码,默认为0,即不受限制
  • 第5段为密码多少天之后到期,即在多少天内必须更改密码,否则不能登录系统.默认是99999永远不用更改密码
  • 第6段为密码到期前的警告期限.
  • 第7段为账号失效期限,若设置为3,表示密码已经到期,用户并没有在到期前修改密码,那么在3天后,这个账号失效,即锁定.
  • 第8段为账号的生命周期, 同样是按照1970/1/1计算而来.
  • 第9段是保留的,没有意义

/etc/group 和/etc/gshadow

用户组管理

groupadd增加组

命令groupadd格式 groupadd [-g gid]groupname

-g指定uid, 不加-g按照系统默认的gid创建组,和uid一样,是从1000开始.

groupdel删除组

groupdel groupname

删除组时,组里还有用户是不能删除的

	[root@lz-01 ~]# groupadd grp1
	[root@lz-01 ~]# tail -n1 /etc/group
	grp1:x:1002:
	[root@lz-01 ~]# groupadd -g 1005 grp2
	[root@lz-01 ~]# tail -n2 /etc/group
	grp1:x:1002:
	grp2:x:1005:
	[root@lz-01 ~]# groupdel grp1
	[root@lz-01 ~]# tail -n2 /etc/group
	testgroup:x:1001:
	grp2:x:1005:
	[root@lz-01 ~]# groupdel testgroup
	[root@lz-01 ~]# tail -n2 /etc/group
	user1:x:1000:
	grp2:x:1005:
	[root@lz-01 ~]# groupdel user1
	groupdel:不能移除用户“user1”的主组
	[root@lz-01 ~]# 

用户管理

useradd增加用户

命令useradd格式 useradd[-u uid][-g gid][-d home][-M][-s]username

  • -u自定义uid

  • -g设定新增用户属于已经存在的某个组,后面可以跟组id或组名

      [root@lz-01 ~]# useradd user2
      [root@lz-01 ~]# tail -n2 /etc/passwd
      user1:x:1000:1000::/home/user1:/bin/bash
      user2:x:1001:1001::/home/user2:/bin/bash
      [root@lz-01 ~]# useradd -u 1003 -g grp2 user3
      [root@lz-01 ~]# tail -n3 /etc/passwd
      user1:x:1000:1000::/home/user1:/bin/bash
      user2:x:1001:1001::/home/user2:/bin/bash
      user3:x:1003:1005::/home/user3:/bin/bash
    
  • -d自定义用户的家目录

  • -s自定义shell

      [root@lz-01 ~]# useradd -u 1004 -g grp2 -d /home/lz111 -s /sbin/nologin user4
      [root@lz-01 ~]# tail -n4 /etc/passwd
      user1:x:1000:1000::/home/user1:/bin/bash
      user2:x:1001:1001::/home/user2:/bin/bash
      user3:x:1003:1005::/home/user3:/bin/bash
      user4:x:1004:1005::/home/lz111:/sbin/nologin
      [root@lz-01 ~]# ls /home/
      lz111  user1  user2  user3
    
  • -M表示不建立家目录

      [root@lz-01 ~]# useradd -M user5
      [root@lz-01 ~]# tail -n4 /etc/passwd
      user2:x:1001:1001::/home/user2:/bin/bash
      user3:x:1003:1005::/home/user3:/bin/bash
      user4:x:1004:1005::/home/lz111:/sbin/nologin
      user5:x:1005:1006::/home/user5:/bin/bash
      [root@lz-01 ~]# ls /home/
      lz111  user1  user2  user3
    

uid会根据新增用户的uid依次递增, gid则不会

userdel 删除用户

命令userdel格式userdel [-r]username

  • -r作用是删除用户时,同时删除用户的家目录

      [root@lz-01 ~]# userdel user3
      [root@lz-01 ~]# tail -n5 /etc/passwd
      chrony:x:998:996::/var/lib/chrony:/sbin/nologin
      user1:x:1000:1000::/home/user1:/bin/bash
      user2:x:1001:1001::/home/user2:/bin/bash
      user4:x:1004:1005::/home/lz111:/sbin/nologin
      user5:x:1005:1006::/home/user5:/bin/bash
      [root@lz-01 ~]# userdel -r user2
      [root@lz-01 ~]# tail -n5 /etc/passwd
      postfix:x:89:89::/var/spool/postfix:/sbin/nologin
      chrony:x:998:996::/var/lib/chrony:/sbin/nologin
      user1:x:1000:1000::/home/user1:/bin/bash
      user4:x:1004:1005::/home/lz111:/sbin/nologin
      user5:x:1005:1006::/home/user5:/bin/bash
      [root@lz-01 ~]# ls /home/
      lz111  user1  user3
      [root@lz-01 ~]# rm -rf /home/user3
      [root@lz-01 ~]# ls /home/
      lz111  user1
    
usermod命令

usermod更改用户uid或gid或家目录或shell

	[root@lz-01 ~]# user -u 111 username  ^C
	[root@lz-01 ~]# usermod -u 111 username ^C
	[root@lz-01 ~]# usermod -g gid username ^C
	[root@lz-01 ~]# usermod -d /home/abc  username ^C
	[root@lz-01 ~]# usermod -s /sbin/nologin username ^C

usermod -G设置扩展组

	[root@lz-01 ~]# id user1
	uid=1000(user1) gid=1000(user1) 组=1000(user1)
	[root@lz-01 ~]# usermod -G grp2 user1
	[root@lz-01 ~]# id user1
	uid=1000(user1) gid=1000(user1) 组=1000(user1),1005(grp2)
	[root@lz-01 ~]# 

用户密码管理

passwd命令

格式passwd [username]

命令后若不加用户名,则是给自己设定密码

密码设定的规则:

  • 长度大于10个字符
  • 密码中包含大小写字母,数字以及特殊符号*,&,%等
  • 不规则性
  • 密码中不要出现自己的名字,电话,生日以及公司名字等

若是root账户,可以修改普通用户的名字,普通用户只能修改自己的密码

	[root@lz-01 ~]# tail -n3 /etc/shadow
	user1:!!:17975:0:99999:7:::
	user4:!!:17975:0:99999:7:::
	user5:!!:17975:0:99999:7:::
	[root@lz-01 ~]# passwd user5
	更改用户 user5 的密码 。
	新的 密码:
	重新输入新的 密码:
	passwd:所有的身份验证令牌已经成功更新。
	[root@lz-01 ~]# tail -n3 /etc/shadow
	user1:!!:17975:0:99999:7:::
	user4:!!:17975:0:99999:7:::
	user5:$6$6UoBEnHM$.RNyYd5P3G82ZKfuhdLiLbVwbS31DMtev55HrBeuYh9txvK/CZv8m59Jo61uOsA7widK2JC/9A5jXDMfrmsKH0:17975:0:99999:7:::
	[root@lz-01 ~]# 

用户没有密码, /etc/shadow中第二位是!!; 若用户是锁定的, 第二位是*

passwd -l 锁定账户和passwd -u 解锁账户
	[root@lz-01 ~]# passwd -l user5
	锁定用户 user5 的密码 。
	passwd: 操作成功
	[root@lz-01 ~]# tail -n3 /etc/shadow
	user1:!!:17975:0:99999:7:::
	user4:!!:17975:0:99999:7:::
	user5:!!$6$6UoBEnHM$.RNyYd5P3G82ZKfuhdLiLbVwbS31DMtev55HrBeuYh9txvK/CZv8m59Jo61uOsA7widK2JC/9A5jXDMfrmsKH0:17975:0:99999:7:::
	[root@lz-01 ~]# passwd -u user5
	解锁用户 user5 的密码。
	passwd: 操作成功
	[root@lz-01 ~]# tail -n3 /etc/shadow
	user1:!!:17975:0:99999:7:::
	user4:!!:17975:0:99999:7:::
	user5:$6$6UoBEnHM$.RNyYd5P3G82ZKfuhdLiLbVwbS31DMtev55HrBeuYh9txvK/CZv8m59Jo61uOsA7widK2JC/9A5jXDMfrmsKH0:17975:0:99999:7:::
	[root@lz-01 ~]# 
usermod -L 锁定账户和usermod -U 解锁账户
	[root@lz-01 ~]# usermod -L user5
	[root@lz-01 ~]# tail -n3 /etc/shadow
	user1:!!:17975:0:99999:7:::
	user4:!!:17975:0:99999:7:::
	user5:!$6$6UoBEnHM$.RNyYd5P3G82ZKfuhdLiLbVwbS31DMtev55HrBeuYh9txvK/CZv8m59Jo61uOsA7widK2JC/9A5jXDMfrmsKH0:17975:0:99999:7:::
	[root@lz-01 ~]# usermod -U user5
	[root@lz-01 ~]# tail -n3 /etc/shadow
	user1:!!:17975:0:99999:7:::
	user4:!!:17975:0:99999:7:::
	user5:$6$6UoBEnHM$.RNyYd5P3G82ZKfuhdLiLbVwbS31DMtev55HrBeuYh9txvK/CZv8m59Jo61uOsA7widK2JC/9A5jXDMfrmsKH0:17975:0:99999:7:::

usermod 锁定账户, 只显示一个!

更改密码的常用方式
  • passwd --stdin username

  • echo -e "12345678\n12345678" |passwd user5

      [root@lz-01 ~]# passwd --stdin user5
      更改用户 user5 的密码 。
      12345
      passwd:所有的身份验证令牌已经成功更新。
      [root@lz-01 ~]# echo "111222" |passwd --stdin user5
      更改用户 user5 的密码 。
      passwd:所有的身份验证令牌已经成功更新。
      [root@lz-01 ~]# echo -e "123\nsss"
      123
      sss
      [root@lz-01 ~]# echo -e "12345678\n12345678" |passwd user5
      更改用户 user5 的密码 。
      新的 密码:无效的密码: 密码未通过字典检查 - 过于简单化/系统化
      重新输入新的 密码:passwd:所有的身份验证令牌已经成功更新。
      [root@lz-01 ~]# 
    
mkpasswd命令

mkpasswd命令用于生成密码,需要yum install -y expect 软件

mkpasswd 用法如下:

	usage: mkpasswd [args] [user]
	  where arguments are:
	    -l #      (length of password, default = 12)
	    -d #      (min # of digits, default = 2)
	    -c #      (min # of lowercase chars, default = 2)
	    -C #      (min # of uppercase chars, default = 2)
	    -s #      (min # of special chars, default = 1)
	    -v        (verbose, show passwd interaction)
	    -p prog   (program to set password, default = /bin/passwd)

用户身份切换

su命令

命令格式 su [-] username

  • 加上 - 会初始化当前用户的各种环境变量

      [root@lz-01 ~]# whoami
      root
      [root@lz-01 ~]# su - user1
      [user1@lz-01 ~]$ whoami
      user1
      [user1@lz-01 ~]$ pwd
      /home/user1
      [user1@lz-01 ~]$ id
      uid=1000(user1) gid=1000(user1) 组=1000(user1),1005(grp2)
      [user1@lz-01 ~]$ 登出
      [root@lz-01 ~]# su user1
      [user1@lz-01 root]$ pwd
      /root
      [user1@lz-01 root]$ ls
      ls: 无法打开目录.: 权限不够
      [user1@lz-01 root]$ whoami
      user1
      [user1@lz-01 root]$ exit
    
    
    
    
      [root@lz-01 ~]# su - user1
      上一次登录:四 3月 21 08:12:12 CST 2019pts/0 上
      [user1@lz-01 ~]$ ls
      [user1@lz-01 ~]$ ls -la
      总用量 16
      drwx------  2 user1 user1  83 3月  21 08:11 .
      drwxr-xr-x. 4 root  root   32 3月  20 23:14 ..
      -rw-------  1 user1 user1  28 3月  21 08:13 .bash_history
      -rw-r--r--  1 user1 user1  18 10月 31 01:07 .bash_logout
      -rw-r--r--  1 user1 user1 193 10月 31 01:07 .bash_profile
      -rw-r--r--  1 user1 user1 231 10月 31 01:07 .bashrc
      [user1@lz-01 ~]$ 登出
    
  • 可以直接su切换user1用户执行一条命令

      [root@lz-01 ~]# su - -c "touch /tmp/liuz.111" user1
      [root@lz-01 ~]# ls -lt /tmp/ |head
      总用量 4
      -rw-rw-r--  1 user1 user1   0 3月  21 08:15 liuz.111
      drwx------  2 root  root    6 3月  21 07:08 vmware-root_6050-692160398
      drwx------  3 root  root   17 3月  21 07:08 systemd-private-a946a40cdb2a4c168f2a40a73f9e77a6-chronyd.service-NfKRPV
      drwx------  2 root  root    6 3月  20 21:05 vmware-root_6055-1714757077
      drwx------  2 root  root    6 3月  20 07:59 vmware-root_5818-701204112
      drwx------  2 root  root    6 3月  18 07:56 vmware-root_6021-1723604079
      drwx------  2 root  root    6 3月  16 20:49 vmware-root_5926-969062091
      drwx------  2 root  root    6 3月  15 08:16 vmware-root_5844-1002680513
      drwx------  2 root  root    6 3月  15 07:55 vmware-root_6033-1681333242
      [root@lz-01 ~]# id user1
      uid=1000(user1) gid=1000(user1) 组=1000(user1),1005(grp2)
    
  • root用户可以直接切换至普通用户不用输入密码, 普通用户su到普通用户需要输入密码.

      [root@lz-01 ~]# su - user1
      上一次登录:四 3月 21 08:15:10 CST 2019pts/0 上
      [user1@lz-01 ~]$ su - user5
      密码:
      su: 鉴定故障
      [user1@lz-01 ~]$ 登出
      [root@lz-01 ~]# tail -n3 /etc/shadow
      user1:!!:17975:0:99999:7:::
      user4:!!:17975:0:99999:7:::
      user5:$6$XHxw8mnG$YPs7Nr1FPhuhRChNVQ3ar6ZaIbgymqaMfOlqTy5k/MaFWkjPrZZASsL0w7fhhy3UG25HBnc/A4V4Qd7rS9w180:17975:0:99999:7:::
      [user1@lz-01 ~]$ 登出
      [root@lz-01 ~]# passwd user5
      更改用户 user5 的密码 。
      新的 密码:
      无效的密码: 密码少于 8 个字符
      重新输入新的 密码:
      抱歉,密码不匹配。
      新的 密码:
      重新输入新的 密码:
      passwd:所有的身份验证令牌已经成功更新。
      [root@lz-01 ~]# su - user1
      上一次登录:四 3月 21 08:20:13 CST 2019pts/0 上
      [user1@lz-01 ~]$ su - user5
      密码:
      su: 鉴定故障
      [user1@lz-01 ~]$ su - user5
      密码:
      最后一次失败的登录:四 3月 21 08:22:37 CST 2019pts/0 上
      最有一次成功登录后有 3 次失败的登录尝试。
      su: 警告:无法更改到 /home/user5 目录: 没有那个文件或目录
      -bash-4.2$ ^C
      -bash-4.2$ 登出
    
  • 提示没有/home/user5目录,因为前期创建user5用户时 - M 没有创建用户家目录

      [user1@lz-01 ~]$ ls /home/user5
      ls: 无法访问/home/user5: 没有那个文件或目录
      [user1@lz-01 ~]$ ls /home/
      lz111  user1
      [user1@lz-01 ~]$ 登出
    
  • 重新创建user5家目录

      [root@lz-01 ~]# mkdir /home/user5
      [root@lz-01 ~]# id user5
      uid=1005(user5) gid=1006(user5) 组=1006(user5)
      [root@lz-01 ~]# chown user5:user5 /home/user5/
      [root@lz-01 ~]# su - user5
      上一次登录:四 3月 21 08:22:52 CST 2019pts/0 上
      -bash-4.2$ pwd
      /home/user5
      -bash-4.2$ 登出
    
  • 配置user5用户.bash*

      [root@lz-01 ~]# su - user1
      上一次登录:四 3月 21 08:25:46 CST 2019pts/0 上
      [user1@lz-01 ~]$ ls -la
      总用量 16
      drwx------  2 user1 user1  83 3月  21 08:11 .
      drwxr-xr-x. 6 root  root   58 3月  21 08:28 ..
      -rw-------  1 user1 user1 154 3月  21 08:27 .bash_history
      -rw-r--r--  1 user1 user1  18 10月 31 01:07 .bash_logout
      -rw-r--r--  1 user1 user1 193 10月 31 01:07 .bash_profile
      -rw-r--r--  1 user1 user1 231 10月 31 01:07 .bashrc
      [user1@lz-01 ~]$ 登出
      [root@lz-01 ~]# ls /etc/skel/
      [root@lz-01 ~]# ls -la  /etc/skel/
      总用量 24
      drwxr-xr-x.  2 root root   62 4月  11 2018 .
      drwxr-xr-x. 74 root root 8192 3月  21 08:24 ..
      -rw-r--r--.  1 root root   18 10月 31 01:07 .bash_logout
      -rw-r--r--.  1 root root  193 10月 31 01:07 .bash_profile
      -rw-r--r--.  1 root root  231 10月 31 01:07 .bashrc
      [root@lz-01 ~]# cp /etc/skel/.bash* /home/user5/
      [root@lz-01 ~]# chown -R  user5:user5 !$//上一条命令的最后一列
      chown -R  user5:user5 /home/user5/
      [root@lz-01 ~]# su - user1
      上一次登录:四 3月 21 08:31:19 CST 2019pts/0 上
      [user1@lz-01 ~]$ su - user5
      密码:
      上一次登录:四 3月 21 08:30:24 CST 2019pts/0 上
      [user5@lz-01 ~]$ 
      [user5@lz-01 ~]$ su - 
      密码:
      su: 鉴定故障
      [user5@lz-01 ~]$ su - root
      密码:
      上一次登录:四 3月 21 07:12:38 CST 2019tty1 上
      最后一次失败的登录:四 3月 21 08:37:41 CST 2019pts/0 上
      最有一次成功登录后有 1 次失败的登录尝试。
      [root@lz-01 ~]# 
    
sudo命令

su切换用户身份,如果有root密码, 普通用户都可以切换至root身份,系统是不安全的. linux引进了sudo命令.

默认只有root用户可以使用sudo命令,普通用户使用sudo需要root预先设定.在/etc/sudoers设置了可执行sudo指令的用户. 用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。

语法:sudo(选项)(参数)

  • -b:在后台执行指令;
  • -h:显示帮助;
  • -H:将HOME环境变量设为新身份的HOME环境变量;
  • -k:结束密码的有效期限,也就是下次再执行sudo时便需要输入密码;
  • -l:列出目前用户可执行与无法执行的指令;
  • -p:改变询问密码的提示符号;
  • -s<shell>:执行指定的shell;
  • -u<用户>:以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份;
  • -v:延长密码有效期限5分钟;
  • -V :显示版本信息。
配置sudo

配置sudo必须通过编辑/etc/sudoers文件,而且只有超级用户才可以修改它,还必须使用visudo编辑。

	## Allow root to run any commands anywhere
	root    ALL=(ALL)       ALL

三个ALL的意思。第一个ALL是指网络中的主机。第二个括号里的ALL是指目标用户,也就是以谁的身份去执行命令。最后一个ALL就是指命令名了

转载于:https://my.oschina.net/u/3851442/blog/3025463

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值