本章学习目标:
- 了解多用户系统的概念
- 掌握用户和组的概念
- 掌握管理用户和组的方法
Linux操作系统是多用户、多任务系统——即允许多个用户同时登录Linux系统并启动多个任务(有的用户是远程登陆)。用户账号和用户组是进行身份鉴定和权限控制的基础,身份鉴别的目的是规定哪些人可以进入系统,而权限控制的目的则是规定进入系统的用户能做哪些操作。
🐶多用户系统
一个安装好的但是没有启动的Linux系统是静态的系统,静态的Linux系统一般由根分区上的文件、目录和交换分区组成,内容不会发生改变。而启动的Linux系统成为动态的西永,动态的Linux系统一般由根分区上的文件、目录和虚拟内存(含交换区和物理内存)中的进程组成,动态系统里的内存会时刻发生变化。
动态的Linux系统(多用户运行级别)允许已经注册的用户登录
所谓的多用户系统就是指一台计算机启动后,允许多个用户同时登录并使用计算机,最常见的例子就是很多用户通过网络远程登陆到一台运行Linux的计算机
🐧用户和组的概念
🌏用户的概念
有的人喜欢说“用户”,有的人喜欢说“账号”,再Linux系统中,他们是指同一个概念:使用Linux系统的人,他的信息必须事先已经在Linux系统中登记好,
在Linux中,创建(即登记)一个用户时需要提供如下信息:
1、用户名:也叫账号,合法的账号由A~Z,a~z,0~9,-和_组成,账号长度介于1~32.在Linux系统中用户名是唯一的,用户名主要用于身份鉴别。
2、口令:或称为密码,主要用于身份鉴别,一个好的口令最好同时包含大小写字母、数字和其他字符,长度建议大于6 注意:密码中字符的大小写是由区分的
3、用户ID号:简称为UID,犹如人的身份证号,
4、组:每一个用户只能归属于一个主要组群,但是可以同时归属于多个附加组群。给用户分组主要是便于管理同一类用户的权限,例如赋予一个组某种权限,那么这个组所有的用户自动拥有该权限
5、家目录:使用户登录之后默认进入的目录,如果不特别指定,用户的家目录就是/home/<账号>,例如创建用户Gremmie102,那么默认的家目录就是/home/Gremmie102。root用户的家目录有些特别,默认是/root
6、登录shell:用户登录Linux的过程中,会自动执行一系列的程序,其中最后执行的那个程序成为shell程序。shell以为“壳”,可以想象为包裹在Linux系统外面的壳,用户登录之后就一直在这个壳中,用户输入的任何命令都由Shell代为执行
7、备注:对用户的描述,这个可以省略
这些用户信息主要保存在文件/etc/passwd中,加密过后的密码保存在文件/etc/shadow中。/etc/passwd每一行对应一个用户,格式如下。
用户名:密码:UID:GID:备注:家目录:登录shell
每个参数之间用“:”分开,其中的“密码”都用x来表示,GID是该用户的主要组群的组号。
例如/etc/passwd文件中由如下一行:
从上面这一行可以获得这些信息:用户名是Gremmie3,密码的位置出现x是表示加密后的密码串错放在/etc/shadow中,用户ID号是1000,隶属主要族群1000号,用户的家目录是/home/Gremmie2003,登录Shell是bin/bash,没有备注信息。
同样/etc/shadow也是一行对应一个用户,格式如下:
账号:密码:最后一次更改密码的日期:密码有效期最少天数:密码有效期最多的天数:密码修改警告期:密码禁用期:账号过期日期:保留字段
1、密码:经过加密之后的密文。这种加密算法是不可逆的,也就是说不能从密文反推出原始密码。在用户登录校验密码时,Linux系统采用相同的加密方法对用户登录时输入的密码进行加密得到密文,然后通过比较两份密文是否相同来判断密码输入是否正确,这里图中的感叹号则表示还未设置密码
2、上一次更改密码的日期:具体表现为从1970年1月1日以来的天数。例如在2022年3月26日修改过密码,那么这里就是19077.
3、密码有效期最少天数:即上次修改密码之后要过多少天之后才允许再次修改密码。如果为0或者空表示没有显示,即可随时修改密码。
4、密码有效期最多天数:即多少天前必须修改密码,如果过了有效期最多天数还没有修改密码,那么下一次用户登录时提示用户必须修改密码;为空则表示没有限制,同时也没有密码修改警告期;如果密码有效期最多天数小于密码有效期最少天数,那么用户不能修改密码。
5、密码修改警告期:即开始不断地通知用户要修改密码,如果为0或者空则不通知
6、密码警用期:过了密码有效期最多天数如果仍然没有修改密码,则进入密码禁用期,在禁用期内,用户登录时要求强行修改密码。过了禁用期,那么账号就完全冻结了,冻结的账号经过解冻之后就可以继续使用
7、账号过期日期:表示为从1970年1月1日以来的天数,为空则表示没有限制。账号过期之后不能再使用了。例如打算让账号在2022年3月26日失效,那么这里的值就是19077.
参数之间的关系表示为👇:
Linux系统的用户分为3类,分别是超级用户root、系统用户和普通用户。在安装系统时默认创建超级用户root,root的权力没有限制,它的UID和GID都是0.
超级用户的作用是管理系统,例如创建用户、给硬盘分区、配置网络等。系统用户主要用来启动服务或者用作一些特殊权限控制,系统用户的权限收到限制,系统用户也是在安装Linux或者应用软件时自动创建的,它们得到UID小于1000,系统用户不能登录。普通用户也是由超级用户root创建并分配给Linux系统的使用者,权限有限制,使用者用普通用户登录以完成他们的日常工作,普通用户的UID一般大于等于1000.
🍰组的概念
Linux下组群的概念如下👇:
一个用户必须且只能属于一个主要组群,但是可以属于0个或者多个附加组群,一个组群可以包含0个或者多个用户。例如我是南京医科大学的一个学生,我只能属于21生物信息班(主要族群),但我可以同时加入计算机设和音乐社(附加组群)。
🤯用户和组的管理
用户和组的管理包括创建、删除、修改属性、修改密码等。具体操作可以采用可视化的图形界面方式,也可以采用命令方式,这里重点介绍后者。Linux下的命令语法为:<命令> <选项> <目标>
“命令”是用来操纵“目标”的,那么怎么操纵呢?这是由“选项”规定的。由于可能存在多个选项,所以选项采用 “-<一个数字或字母>[参数]”或者“-<多个数字或字母>[参数]”的形式,例如创建用户Gremmie102的命令为:useradd -u 1007 -d /home/zbc—shell/bin/bash Gremmie102
命令是useradd,目标是Gremmie102,选项是-u 1007 -d /home/zbc—shell/bin/bash
文件/etc/login.defs定义了组群和用户的默认属性,在创建用户和组的时候,如果没有给出相对应的参数,那么就去默认值。主要参数如下👇:
序号 | 参数 | 默认值 | 说明 |
---|---|---|---|
1 | PASS_MAX_DAYS | 99999 | 密码有效期最多多少天 |
2 | PASS_MIN_DAYS | 0 | 密码有效期最少多少天 |
3 | PASS_WARN_AGE | 7 | 密码警告十七,密码到期前7天发出警告 |
4 | PASS_MIN_LEN | 5 | 密码最小长度,即密码必须多于5个字符 |
5 | UID_MIN | 1000 | 创建用户时默认选择的UID最小值 |
6 | UID_MAX | 60000 | 创建用户时默认选择的UID最大值 |
7 | GID_MAX | 1000 | 创建组群时默认选择的GID最小值 |
8 | GID_MIN | 60000 | 创建组群时默认选择的GID最大值 |
🦖组的管理
我们可以利用groupadd —help、groupdel —help、groupmod —help来查询相关的命令说明
🦉创建组
(1)创建组群class1:groupadd class1
(2)创建组群grade2且指定GID为555:groupadd -g 555 grade2
(3)创建已经存在的组群root的别名组群administrators:groupadd -g 0 -o administrators
注意:只能创建不存在的组群。新建的组信息保存在/etc/group中,可以采用more或cat命令查看,例如
cat /etc/group
🦝删除组群
删除组群class1:groupdel class1
注意:只能删除已经存在的空组群,也就是组里没有用户成员
🦌修改组群的属性
- 修改组群sales的组号(GID)为1650:groupmod -g 1650 sales
- 修改组群sales的组群名为sales1:groupmod -n sales1 sales
- 用一条命令完成上述两个任务:groupmod -g 1650 -n sales1 sales
🛹查看组群的信息
查看文件/etc/group 的内容即可,可以采用cat、more、tail等命令进行查看
(1)查看文件/etc/group的末尾10行:tail /etc/group
(2)翻页显示/etc/group的信息:more /etc/group
🚃用户管理
同样,我们可以用useradd —help、userdel —help、usermod —help来查询命令信息
🎥创建用户
我们常常用到这几个选项
-d, —home-dir HOME_DIR home directory of the new account
-m, —create-home create the user’s home directory
-g, —gid GROUP name or ID of the primary group of the new account
-s, —shell SHELL login shell of the new account
在你的创建的classmates中加入一个叫做bingdundun的用户
useradd -m -g classmates bingdwendwen useradd -m -g classmates -s /bin/bash bingdwendwen
📸删除用户
userdel -r bingdundun 删除用户bingdundun userdel -r bingdundun 删除用户bingdundun,连同家目录一起删除 userdel -f -r bingdundun 强行删除用户bingdundun ,即便此用户已经登录
🥸修改用户属性
uesermod -d /opt/bingdundun -s /bin/tcsh
👆修改用户的家目录和登录的shell
usermod -g grade1 -G class2 -a bingdundun
👆修改用户的主要族群为grade1,同时再加入附加组群class2
usermod -l bingdundun Gremmie
👆修改bingdundun的用户名为Gremmie
usermod -u 1020 bingdundun
修改用户bingdundun的UID为1020
usermod -d /opt/bingdundun -s /bin/tcsh -g grade1 -G class2 -a -l Gremmie -u 1020 -m bingdundun
🐱用户密码管理
passwd -l bingdundun
锁住bingdundun,被锁的用户不能登录
passwd -u bingdundun
解锁后的用户可以继续登录
passwd bingdundun
修改bingdundun的密码
注意:用户的密码只有root和用户本人可以修改
passwd -d nanjinglele
删除用户nanjinglele的密码,这样nanjinglele就可以不用密码直接登录了
passwd -n 10 -x 20 -w 3 -i 5 bingdundun
修改用户bingdundun的密码老化时间,密码有效期最少天数10,最大天数20,过期前3天会发出警告,密码禁用期5天。
🥽查看用户信息
id Gremmie
查看Gremmie的UID、主要组群和附加组群的GID
more /etc/passwd
这里有个小细节,我将Gremmie放入了sudo系统组群中,这样Gremmie就可以使用sudo的权限
🎏批量添加用户
for name in shueyrhonrhon nanjinglele do
echo “$name is pending”
useradd -m -g classmates -s /bin/bash $name
echo “$name:beijing2022” | chpasswd done加了冰墩墩,也别忘了雪容融,还有南京砳砳,哈哈哈哈。写个for循环吧,因为不好passwd,这次换chpasswd来批量设置初始密码。这个命令的用法是:echo “user:password” | chpasswd
😣遇到的一些错误
切换用户时要区分好大小写,特别是登入云服务器root身份的时候
每一步都要打对,,哭了
这里我要用Gremmie的身份,用sudo的命令来雪融融的主目录创建一个Gremmie.is.visiting的文件
这里-u后面应该时xuerongrong,不是Gremmie,弄混了。。。
这里的错误在于,组群2021bioinformatics根本不存在,原因是什么呢?
我在创建组群的时候,创建成了2022bioinfomatics少了一个r。。。
成功创建之后就是应该是这样
学习笔记就到这里,希望可以帮到大家,也感谢我学校的邵老师对我的敦敦教诲,我的超人!
有遗漏或补充请大佬私聊或在评论区指出,
感谢阅读~😊