前言
Linux用户管理非常关键且重要,Linux的所有进程都是以不同的身份拥有不同的权限来运行和调度资源的。
但是我们不用费劲心思去管理,因为系统将用户划分成为了两部分:无所不能的root用户和普通用户。
同时呢,又将普通用户分为系统用户和登录用户。
对于Linux,他会用UID去快速识别用户身份,对于我们,可以用用户名去识别。
接下来介绍一下用户和组管理的常用命令
用户管理
创建用户:useradd
语法 :useradd [option] user_name
-D :default
-u, --uid UID :指定UID;
-g, --gid GID/Group :指定基本组ID,此组需事先存在;
-c, --comment COMMENT :给定注释信息;
-G, --groups Group1[,Group2,...[GroupN]]:指明用户所属的附加组,多个组之间用逗号分开;
-d, --home HOME_DIR:以指定的路径为用户的家目录,通过复制/etc/skel此目录并重命名,
-s, --shell SHELL :指定用户的默认shell,可用的所有shell存在/etc/shells这个文件中;
-r, --system:创建一个系统账户;
PS:创建用户时的诸多默认设定配置文件为/etc/login.defs
修改用户属性:usermod
语法:usermod [option] user_name
-u, --uid UID:
-g, --gid GID:
-G, --groups Group1[,GROUP2,...[GROUPN]]]:修改用户所属的附加组,原来的附加组会被覆盖;
-c, --comment COMMENT
-d, --home HOME_DIR
-s, --shell SHELL
-a, --append :与-G一同使用,用于为用户追加新的附加组;
-l, --login NEW_LOGIN:修改用户默认的shell
-m, --move-home:只u能与-d选项一同使用,将原来的家目录移动为新的家目录;
-L, --lock:锁定用户密码,
实现:在用户原来的密码字符串前加一个 !
-U, --unlock:锁定用户的密码;
修改用户密码:passwd
root能改一切,普通用户只能改自己的密码
语法:passwd [option] user_name
-l,-u :锁定(--lock)和解锁(--unlock)用户;
-d, -delete :删除用户密码串;
-e DATE: 过期期限,日期;
-i DAYS: 非活动期限;
-n DAYS: 密码的最短使用期限;
-x DAYS: 密码的最长使用期限;
-w DAYS: 警告期限;
--stdin:
echo "PASSWORD" |passwd --stdin USER_NAME
删除用户:userdel
语法:userdel [option] user_name
-r:同时删除该用户的家目录
组管理
创建组:groupadd
语法:groupadd [option] group_name
-g GID:指定GID;默认为上一个组GID+1;
-r :创建系统组;
修改组属性:groupmod
语法:groupmod [option] group_name
-n new_name:修改组名
-g GID:修改GID
删除组:groupdel
语法:groupdel [option] group_name
修改组密码:gpasswd
组密码在用户切换基本组的时候会被用到
语法:gpasswd [option] group_name
-a, --addusr USER_NAME:向组中添加用户;
-d, --deleteuser USER_NAME:从组中移除用户;
登录到一个新组:newgrp
常用工具:id,su
id:显示账号相关信息
显示真实有效的UID和GID
id [OPTION]... [USER]
-u, --user:只显示用户ID;
-g, --group:只显示GID;(基本组)
-G, --groups:只显示用户的附加组;ID
-n, --name :对于选项只显示名称而不是用数字去表示;
su:切换用户
su有两种切换方式:
登录时切换:会通过读取目标用户的配置文件来重新初始化
su - USER_NAME
su -l USER_NAME
非登录式切换:不会读取目标用户的配置文件进行初始化;
su USERNAME
PS: 管理员可以不用密码切换用户;
-c, --command=COMMAND :传递COMMAND给-c的shell;以指定的用户去运行命令
习题
(1)、创建组distro,其GID为2016
[root@localhost ~]# groupadd -g 2016 distro
(2)、创建用户mandriva, 其ID号为1005;基本组为distro
[root@localhost ~]# useradd -u 1005 -g distro mandriva
(3)、创建用户mageia,其ID号为1100,家目录为/home/linux
[root@localhost ~]# useradd -u 1100 -d /home/linux mageia
(4)、给用户mageia添加密码,密码为mageedu
[root@localhost ~]# echo "mageedu" |passwd --stdin mageia
Changing password for user mageia.
passwd: all authentication tokens updated successfully.
(5)、删除mandriva,但保留其家目录
[root@localhost ~]# userdel mandriva
(6)、创建用户slackware,其ID号为2002,基本组为distro,附加组peguin
[root@localhost ~]# useradd -u 2002 -g distro -G peguin slackware
(7)、修改slackware的默认shell为/bin/tcsh
[root@localhost ~]# usermod -s /bin/tcsh slackware
[root@localhost ~]# tail -2 /etc/passwd
mageia:x:1100:1100::/home/linux:/bin/bash
slackware:x:2002:2016::/home/slackware:/bin/tcsh
(8)、为用户slackware新增附加组admins
[root@localhost ~]# usermod -aG admins slackware
[root@localhost ~]# tail -1 /etc/group
admins:x:2018:slackware