4.Linux学习--用户管理

4.1 为什么要有用户和用户组存在

  • 用户是操作者在系统中的身份标识 (某个人)
  • 组是逻辑概念,是用户的集合(某类人)
  • 用户的存在为了限制权限(某个人拥有某些权限)
  • 组的存在为了归类用户便于管理权限(某一类人拥有某些权限)

4.2 用户在系统中是怎样存储的

  • 用户在系统中就是文件中的字符串
  • 每个字符串映射了该用户所用到的系统资源

4.3 关于用户的配置文件及内容

配置文件内容
/etc/passwd 用户信息库
 /etc/group 组信息库
 /home/用户名默认用户家目录
/etc/skel/所有文件用户环境配置文件模板
/etc/shadow用户认证信息
/etc/gshadow组认证信息

 

我们可以通过less(cat,head,tail)查看上述的配置文件内容,在这里用tail查看最后5行

[huayu@localhost Desktop]$ tail -n 5 /etc/passwd
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
insights:x:977:975:Red Hat Insights:/var/lib/insights:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
huayu:x:1000:1000:huayu,,,,:/home/huayu:/bin/bash

一行记录为一个用户,以最后一行记录为例,第一项huayu为用户名,x代表密码(因为安全性问题,linux在这里不显示密码用x占位),1000为我的用户id,后面的1000为组id,huayu,,,,在这里是用户说明,/home/huayu是指定用户家目录(并不一定存在),/bin/bash是指定交互使用的shell

4.4 用户信息的查看

命令功能用途
id查看指定用户信息
id -u查看指定用户uid
id -g查看指定用户gid
id -G查看用户所有组id

实验:

[huayu@localhost Desktop]$ id huayu
uid=1000(huayu) gid=1000(huayu) groups=1000(huayu),10(wheel)
[huayu@localhost Desktop]$ id -u huayu
1000
[huayu@localhost Desktop]$ id -g huayu
1000
[huayu@localhost Desktop]$ id -G huayu
1000 10

4.5 用户切换

  • 图形中注销命令
  • 命令方式注销当前用户 gnome-session-quit --force 
  • su 用户名  切换身份,但不切换环境
  • su - 用户名 切换身份和环境

实验:

[huayu@localhost Desktop]$ su - root
Password: 
Last login: Wed Jan  1 01:16:44 PST 2020 on pts/0
[root@localhost ~]#                                      ###切换了身份和环境
[root@localhost ~]# su huayu
[huayu@localhost root]$                                  ###切换了身份,但没有切换环境

同时,从上面的实验可以看出,在从huayu切换到root时需要输入密码,而从root切换到huayu时不需要。因为,低级用户切换高级用户需要密码,而高级切换低级可以直接切换,平级切换也需要密码。同时su - username 切换环境和身份,su username 只切换身份。

4.6 用户的建立、删除和修改

4.6.1 用户的建立

命令功能
useradd建立用户,根据/etc/login.defs文件内容确定规则
useradd -u指定用户uid建立
useradd -g指定用户gid建立
useradd -G指定用户附加组
useradd -c指定用户说明
useradd -d指定用户家目录
useradd -s指定用户默认shell
useradd -M建立用户,但不创建家目录

实验:

用户建立必须在root权限下进行

[huayu@localhost Desktop]$ useradd -g 999 test           ###普通用户下建立失败
useradd: Permission denied.
useradd: cannot lock /etc/passwd; try again later.
[huayu@localhost Desktop]$ su - root                     ###切换至root
Password: 
Last login: Wed Jan  1 02:49:30 PST 2020 on pts/0
[root@localhost ~]# useradd -g 999 test                  ###指定gid=999建立test用户
[root@localhost ~]# id test                              ###查看test用户信息
uid=1001(test) gid=999(input) groups=999(input)
[root@localhost ~]# 

4.6.2 用户的删除

 

命令功能
userdel删除用户,但不删除家目录
userdel -r删除用户,并删除其家目录

实验:

删除用户test

[root@localhost ~]# userdel -r test                  ###删除用户
[root@localhost ~]# id test                          ###删除用户后再查看,确认删除
id: ‘test’: no such user    

4.6.3 用户的更改

命令功能
usermod -l修改用户名
usermod -u修改用户uid
usermod -g修改用户gid
usermod -aG添加用户附加组
usermod -c修改用户说明
usermod -md修改用户家目录
usermod -s修改用户默认shell

实验:

1.建立用户test,改名为test1

[root@localhost ~]# useradd test
[root@localhost ~]# id test 
uid=1001(test) gid=1001(test) groups=1001(test)
[root@localhost ~]# usermod -l test1 test
[root@localhost ~]# id test1
uid=1001(test1) gid=1001(test) groups=1001(test)

2.建立用户tom,添加附加组

[root@localhost ~]# useradd tom
[root@localhost ~]# id tom
uid=1001(tom) gid=1002(tom) groups=1002(tom)
[root@localhost ~]# usermod -aG 1001 tom
[root@localhost ~]# id tom
uid=1001(tom) gid=1002(tom) groups=1002(tom),1001(test)

ps:这里添加附加组时有两点需要注意,-G添加会删除掉以前存在的附加组。-aG才是追加,其次,添加附加组时,必须存在这个附加组。

4.7 用户组的建立,删除和更改

命令功能
groupadd建立用户组
groupdel删除用户组
groupmod -g更改指定用户组的gid

实验:

建立用户组,再更改gid

[root@localhost ~]# tail -n 5 /etc/group       ###查看用户组信息后5行
avahi:x:70:
slocate:x:21:
dip:x:40:
tcpdump:x:72:
huayu:x:1000:
[root@localhost ~]# groupadd jerry             ###建立用户组jerry
[root@localhost ~]# tail -n 5 /etc/group       ###再查看用户组信息
slocate:x:21:        
dip:x:40:
tcpdump:x:72:
huayu:x:1000:
jerry:x:1001:                                  ###用户组jerry建立成功
[root@localhost ~]# groupmod -g 1002 jerry     ###更改jerry的gid为1002
[root@localhost ~]# tail -n 5 /etc/group
slocate:x:21:
dip:x:40:
tcpdump:x:72:
huayu:x:1000:
jerry:x:1002:                                  ###可以看到更改成功

删除用户组

[root@localhost ~]# groupdel jerry           ###删除用户组
[root@localhost ~]# tail -n 5 /etc/group     ###查看发现没有用户组jerry了
avahi:x:70:
slocate:x:21:
dip:x:40:
tcpdump:x:72:
huayu:x:1000:

4.8 用户认证文件

/etc/shadow 用户认证信息文件:

  1. 用户名称
  2. 用户密码
  3. 密码已经使用时间
  4. 密码最短有效期
  5. 密码最长有效期
  6. 密码到期前警告
  7. 密码非活跃天数
  8. 密码到期日

实验:

tail命令查看/etc/shadow文件内容后5行内容

[root@localhost ~]# tail -n 5 /etc/shadow
sshd:!!:18256::::::
insights:!!:18256::::::
avahi:!!:18256::::::
tcpdump:!!:18256::::::
huayu:$1$mni1I6hQ$7AcaJRzxTUl5bfnimozbd0:18256:0:99999:7:::

以最后一行为例,huayu为用户名,一大串字符表示的时加密后的密码,18256表示上次更改密码的时间(从1970年开始算),0表示密码最短有效期即改密后一段时间内不能再修改,99999表示密码最长有效期,7表示密码到期前7天警告,后面还有非活跃天数和到期日没有设置,最后一位是保留的暂时还没有用途。

4.9 用户认证管理

命令功能用途
passwd更改用户密码
passwd 用户名更改指定用户密码(仅root用户可用)
passwd -l 用户名
passwd -u 用户名解锁
passwd -S 用户名查看状态
passwd -d 用户名删除密码
passwd -e 用户名上一次密码修改时间置零,再次开机必须修改密码

实验:

使用passwd修改用户test的密码

[root@localhost ~]# useradd test                     ##建立用户test
[root@localhost ~]# tail -n 1 /etc/shadow            ##查看用户认证信息最后一行
test:!!:18262:0:99999:7:::                           ##test的密码是锁定状态
[root@localhost ~]# passwd test                      ##更改test密码
Changing password for user test.
New password: 
BAD PASSWORD: The password is a palindrome
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@localhost ~]# tail -n 1 /etc/shadow            ##再次查看认证信息
test:$6$JxugfuXJzPStBvLK$Xl6D7OAR6thwzHzfecIFVRN5bFSEcBtI1mFFo5IgLvhYzu.4I4lb3zmjy/zJXLH9oK1VCUFc2fU2MMIMGa7SB1:18262:0:99999:7:::              ##test密码被更改

再通过-d参数删除密码

[root@localhost ~]# passwd -d test 
Removing password for user test.
passwd: Success
[root@localhost ~]# tail -n 1 /etc/shadow
test::18262:0:99999:7:::

修改用户认证信息的命令补充,如下表:

命令功能
chage -E 修改密码到期时间
chage -m修改密码最小有效时间
chage -M修改密码最大有效时间
chage -W密码到期前警告
chage -I密码非活跃天数
chage -d修改上一次修改密码时间,可指定(数字 或“日期”)

4.10 权限下放

  • sudo 能把某些超级权限针对性的下放 , 并且不需要普通用户知道 root 密码 , 所以 sudo 相 对于权限无限制性的 su 来说 , 还是比较安全的
  • sudo 执行命令的流程是当前用户切换到 root, 然后以 root 身份执行命令 , 执行完成后 , 直接退回到当前用户 ; 而这些的前提是要通过 sudo 的配置文件 /etc/sudoers 来进行授权
     

授权方法:

  • 通过vim修改/etc/sudoers配置文件(该方法不能检验语法是否正确,不推荐)
  • 通过visudo命令,直接修改,退出保存时会有错误提示(推荐)

授权语句的语法:

用户 主机名称=(新执行身份)[NOPASSWD:] 命令


实验:

普通用户执行useradd建立用户

calhost Desktop]$ useradd test
useradd: Permission denied.
useradd: cannot lock /etc/passwd; try again later.

因为权限问题请求被拒绝

给用户huayu下放创建用户的权限和删除用户的权限(NOPASSWD是指不需要输入用户huayu的密码,直接执行)

主机名可通过hostname获取

[root@localhost ~]# hostname
localhost.localdomain

使用visudo在100行左右(不一定要100行,只是一般为了规范性在100行左右)添加如下配置信息,完成授权

hauyu localhost.localdomain=(root) /usr/sbin/useradd
huayu localhost.localdomain=(root) NOPASSWD: /usr/sbin/userdel

再次建立用户

[huayu@localhost Desktop]$ sudo useradd test
[sudo] password for huayu: 
[huayu@localhost Desktop]$ id test 
uid=1001(test) gid=1001(test) groups=1001(test)

建立成功,但可以发现需要输入一次密码(没配置NOPASSWD)

再试试删除用户

[huayu@localhost Desktop]$ sudo userdel -r test 
[huayu@localhost Desktop]$ id test
id: ‘test’: no such user

可以看到,不需要输入密码直接删除成功,因为我们再配置文件中有写NOPASSWD

ps:权限下放后执行时必须在前面加上sudo,否则还是无法执行,一次配置多个命令时在命令后加“,”和空格后再写下一个命令的路径

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值