前言
在上一篇博客中我们大概了解了用户管理中部分配置文件的作用。这篇博客让我们来实际操作一下,也是对上篇博客的一个验证。
用户信息的查看
-
id #查看指定用户id信息
-u #查看用户的uid
-g #查看用户的gid
-G #查看用户所在的所有组的id
-n #显示名字而不显示id数字
示例:[root@workstation ~]# id uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [root@workstation ~]# id -u 0 [root@workstation ~]# id -g 0 [root@workstation ~]# id -G 0 [root@workstation ~]# id -nu root 注意:-n不能单独使用
用户身份的切换方式及环境变量
-
图形中的注销命令,在shell中输入以下命令就可注销当前用户,不用鼠标去点击
gnome-session-quit --force ##注销当前用户 -
su 和 su -
su 只切换用户身份,不切换用户环境
例如:[root@workstation Desktop]# useradd new [root@workstation Desktop]# su new (process:8443): dconf-CRITICAL **: 00:33:40.752: unable to create directory '/run/user/0/dconf': Permission denied. dconf will not work properly. (process:8443): dconf-CRITICAL **: 00:33:40.753: unable to create directory '/run/user/0/dconf': Permission denied. dconf will not work properly. (process:8443): dconf-WARNING **: 00:33:40.759: failed to commit changes to dconf: Could not connect: Permission denied [new@workstation Desktop]$ pwd /root/Desktop 虽然切换进了new可当前环境还在/root/Desktop中
su - 切换用户身份及用户环境
[root@workstation Desktop]# su - new Last login: Wed Jan 8 00:33:40 EST 2020 on pts/0 [new@workstation ~]$ pwd /home/new 此时可以看到,路径已经切换到了用户的家目录
注意:
每次su切换到其他用户操作之后必须退出,然后再次切换到其他用户
执行时高级用户切换到低级用户不需要密码,低级用户切换到高级需要
平级用户切换切换也需要
用户及用户组的建立及删除
useradd 建立用户的,建立用户时,读取/etc/login.defs 文件内容确定规则(可参考上篇博客)
在使用该命令前,请先设置一个监控台来对新添加的用户进行实时监控
命令如下:
[root@workstation Desktop]# watch -n 1 'tail -n 3 /etc/passwd /etc/group;echo "= =>home message<= ="; ls -l /home/'
该命令会每隔一秒对上述文件进行更新显示。对我们新加或修改的参数实时更新。
Every 1.0s: tail -n ... workstation.lab.example.com: Wed Jan 8 00:52:56 2020
==> /etc/passwd <==
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
==> /etc/group <==
dip:x:40:
==>home message<==
total 0
drwx------. 4 student student 110 Jan 8 00:10 student
-
useradd的常用参数:
-u #指定用户的 uid[root@workstation Desktop]# useradd -u 1005 haizhizhuer
监控台实时更新:
haizhizhuer:x:1005:1005::/home/haizhizhuer:/bin/bash haizhizhuer:x:1005: drwx------. 4 haizhizhuer haizhizhuer 93 Jan 8 01:02 haizhizhuer
剩下的命令也一样:
-g #指定用户的 gid
-G #指定用户的附加组
(组与附加组是不同的,进行组设置的时候,只能设置一个,即进了A组就不可以去B组。但附加组就可以重复加入。如下:)[root@workstation Desktop]# useradd -G 40 haizhizhuer ==> /etc/group <= = slocate:x:21: dip:x:40:haizhizhuer haizhizhuer:x:1001:
-c #指定用户的说明
-d #指定用户的家目录 , 默认为 /home/username
-s #指定用户的默认shell
注意:在每次进行配置时,要还原当时的环境就需要用到userdel命令。 -
userdel
删除已建立用户,如下:[root@workstation Desktop]# userdel -r haizhizhuer
(注意:一定要加-r参数,否则只是删除haizhizhuer所在的目录,而这个用户信息依然存在。)
-
groupadd 和 groupdel
新建组与删除组
新建组如下所示:[root@workstation Desktop]# groupadd hi 监控台 ==> /etc/group <= = hi:x:1002:
也可通过帮助文档查看其他的建立组的方案
删除组如下所示:[root@workstation Desktop]# groupdel hi
注意:
如当前组为某用户的指定组,那么不能被直接删除,可加-f参数对其强制删除。但是此时用户就没有指定组了。
用户及用户组的信息管理
-
groupmod -g
如下:[root@workstation Desktop]# groupmod -n haizhizhu hii 修改组名,可查看help文档去修改组的其它参数。
-
usermod
-l 修改用户名称
-u 修改用户的 uid
-g 修改用户的 gid
-aG 指定用户的附加组
-c 修改用户的说明
-md 修改用户的家目录 , 默认为 /home/username
-s 修改用户的 shell 类型
注意:
-d 只更改/etc/passwd文件中目录的名字,并没有实际的更改目录
-md 修改用户的家目录 , 默认为 /home/username,既更改名字,也更改目录
-G 不能附加,只能修改用户的附加组
-aG 指定用户的附加组
如下示例-d:[root@workstation Desktop]# usermod -d /home/hi haizhizhu
监控:
==> /etc/passwd <== gnome-initial-setup:x:976:976::/run/gnome-initial-setup/:/sbin/nologin avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin haizhizhu:x:1001:1001::/home/hi:/bin/bash ==> /etc/group <== slocate:x:21: dip:x:40: haizhizhu:x:1001: ==> /home/ message <== total 0 drwx------. 4 haizhizhu haizhizhu 93 Jan 8 02:15 haizhizhu drwx------. 4 student student 89 May 21 2019 student
如下示例-md:
[root@workstation Desktop]# usermod -md /home/hi haizhizhu
监控
==> /etc/passwd <== gnome-initial-setup:x:976:976::/run/gnome-initial-setup/:/sbin/nologin avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin haizhizhu:x:1001:1001::/home/hi:/bin/bash ==> /etc/group <== slocate:x:21: dip:x:40: haizhizhu:x:1001: ==> /home/ message <== total 0 drwx------. 4 haizhizhu haizhizhu 93 Jan 8 02:15 hi drwx------. 4 student student 89 May 21 2019 student
注意:细心观察实验结果的不同之处,改路径的时候一定要改到/home/这个路径之下,否则监控无法体现。
用户认证管理
-
passwd
查看其help文件,如下所示:[root@workstation Desktop]# passwd --help Usage: passwd [OPTION...] <accountName> -k, --keep-tokens keep non-expired authentication tokens -d, --delete delete the password for the named account (root only); also removes password lock if any -l, --lock lock the password for the named account (root only) -u, --unlock unlock the password for the named account (root only) -e, --expire expire the password for the named account (root only) -f, --force force operation -x, --maximum=DAYS maximum password lifetime (root only) -n, --minimum=DAYS minimum password lifetime (root only) -w, --warning=DAYS number of days warning users receives before password expiration (root only) -i, --inactive=DAYS number of days after password expiration when an account becomes disabled (root only) -S, --status report password status on the named account (root only) --stdin read new tokens from stdin (root only)
-l #锁定
-u #解锁
-S #显示当前状态
-n #最少需要多少天才可更改密码
-w #警告
-i #密码到期后还可使用几天
… -
chage
[root@workstation Desktop]# chage --help Usage: chage [options] LOGIN Options: -d, --lastday LAST_DAY set date of last password change to LAST_DAY -E, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE -h, --help display this help message and exit -I, --inactive INACTIVE set password inactive after expiration to INACTIVE -l, --list show account aging information -m, --mindays MIN_DAYS set minimum number of days before password change to MIN_DAYS -M, --maxdays MAX_DAYS set maximum number of days before password change to MAX_DAYS -R, --root CHROOT_DIR directory to chroot into -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS
-l #密码到期后还可使用几天
-d #最近改密码的日期
-E #将当前用户密码过期
(注意:当前用户密码过期时,若用系统用户身份进入不需重新设置密码,但是普通用户进入时需要重新设置密码)
-m #最短多山天能改密码
-M #最长多山天内必须更改一次密码
-W #警告
…
在此不作演示,具体效果可看监控中/etc/passwd内容的更改显示。
用户权力的下放
sudo 能把某些超级权限针对性的下放 , 并且不需要普通用户知道 root 密码 , 所以 sudo 相对于权限无限制性的 su 来说 , 还是比较安全的sudo 执行命令的流程是当前用户切换到 root,然后以 root 身份执行命令 , 执行完成后 , 直接退回到当前用户
而这些的前提是要通过sudo 的配置文件 /etc/sudoers 来进行授权
例如,只有root用户可以添加新的用户,普通用户并不可以有此项权限,当我们执行时会出现报错。此时,我们可以去修改sudoers文件,让我当前的普通用户也可以进行添加删除用户的权限。
权限不够,被拒绝:
[haizhizhu@workstation ~]$ useradd hiii
useradd: Permission denied.
useradd: cannot lock /etc/passwd; try again later.
修改sudoer文件:
在101行加入
haizhizhu workstation.lab.example.com=(root) NOPASSWD: /usr/sbin/useradd, /usr/sbin/userdel
在这里只是设置给haizhizhu了创建删除免密的权限。
workstation.lab.example.com因人而异,hostname命令来查看自己的主机名。
修改完成后切换到haizhizhu这个系统中去进行免密添加用户:
[root@workstation Desktop]# su - haizhizhu
Last login: Wed Jan 8 02:50:01 EST 2020 on pts/0
[haizhizhu@workstation ~]$ sudo useradd luu
监控:
==> /etc/passwd <==
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
haizhizhu:x:1001:1001::/home/haizhizhu:/bin/bash
luu:x:1002:1002::/home/luu:/bin/bash
==> /etc/group <==
dip:x:40:
haizhizhu:x:1001:
luu:x:1002:
==> /home/ message <==
total 0
drwx------. 4 haizhizhu haizhizhu 130 Jan 8 02:50 haizhizhu
drwx------. 4 luu luu 93 Jan 8 02:52 luu
drwx------. 4 student student 89 May 21 2019 student
添加成功!
后记
到此,用户管理的基本操作就基本上都涉及到了。然而还有很多不同的权限还没见到,也没实际操作过。经验的积累还基本为0,但是掌握大方向是我们解决不同新问题的基础,所以需要十分熟悉目前简单的管理流程,为今后的学习工作打下基础。