一、Linux下用户管理
㈠ 用户概念及作用(了解)
用户:指的是Linux操作系统中用于管理系统或者服务的人一问:管理系统到底在管理什么?
答:Linux下一切皆文件,所以用户管理的是相应的文件二问:如何管理文件呢?
答:
1. 文件基本管理,比如文件的创建、删除、复制、查找、打包压缩等;文件的权限增加、减少等;2. 文件高级管理,比如程序文件的安装、卸载、配置等。终极目的是对外提供稳定的服务。
㈡ 用户的分类(了解)
1、超级用户
超级用户,也叫管理员,root。该用户(root)具有所有权限,UID=0并且绝对只能是0。
2、系统用户
系统用户,也叫程序用户。一般都是由程序创建,用于程序或者服务运行时候的身份。
默认不允许登录系统。1<=UID<=499
比如后面要学的web服务的管理用户apache,文件共享ftp服务的管理用户ftp等
注意:Centos7/RHEL8中,系统用户UID范围:1<=UID<=999
3、普通用户
普通用户,一般都是由管理员创建,用于对系统进行有限的管理维护操作。
默认可以登录系统。500<=UID<=60000
注意:Centos7/RHEL8中,普通用户UID范围:1000<=UID<=60000特别说明:
1. 用户指的是操作系统上管理系统或服务的人,是人,就有相关的属性信息
2. 用户的属性信息包括但不限于,如:家目录、唯一身份标识(UID)、所属组(GID)等
3. 今天我们讨论的用户指的是普通用户,即由管理员创建的用户
㈢ 用户的基本管理(掌握)
1、创建用户(useradd)
(1) 基本语法和选项
useradd [选项] 用户名常用选项:
u 指定用户uid,唯一标识,必须唯一
g 指定用户的默认组(主组)
G 指定用户附加组(一个用户可以加入多个组,但是默认组只有一个)
d 指定用户家目录(每个用户都有一个自己的家,并且默认在/home/xxx)
s 指定用户默认shell
查看系统支持的shell(命令解释器)
[root@heima ~]# cat /etc/shells
/bin/sh
软连接文件
/bin/bash
系统默认的解释器
/usr/bin/sh
软连接文件
/usr/bin/bash 系统默认的解释器
其他shell:
/sbin/nologin 不能登录操作系统,也叫非交互式shell
(2) 举例说明
① 创建默认用户
② 根据需求创建用户
2、用户密码设置(passwd)
/bin/dash
/bin/tcsh
/bin/csh
创建一个用户stu1
[root@heima ~]# useradd stu1
查看用户信息
[root@heima ~]# id stu1uid=501(stu1) gid=501(stu1) groups=501(stu1)
注意:当创建一个默认用户时,系统会给该用户以下东西,以stu1为例说明
1)用户的UID(唯一标识) 501(系统自动分配)
2)用户的默认组(主组) stu1组,默认跟该用户的用户名一致;组ID(501),默认和用户UID一致
3)用户的家目录
/home/stu1
4)拷贝相应的文件到用户的家里[root@heima ~]# su stu1[stu1@localhost ~]$ ls a
. .. .bash logout .bash profile .bashrc .gnome2 .mozilla
1. 创建用户stu2,但是不能登录操作系统
注意: s 指定用户的默认shell,/sbin/nologin表示不能登录系统,也叫非交互[root@heima ~]# useradd s /sbin/nologin stu2
验证:
[root@heima ~]# id stu2uid=502(stu2) gid=502(stu2) groups=502(stu2)
切换用户失败,说明该用户不能登录系统[root@heima ~]# su stu2
This account is currently not available.
2. 创建用户stu2,同时指定该用户的家目录为/rhome/stu2
注意: d 指定用户的家目录,前提该用户家目录的上一级目录/rhome必须存在
[root@heima ~]# mkdir /rhome
[root@heima ~]# useradd d /rhome/stu2 stu2
[root@heima ~]# id stu2uid=502(stu2) gid=502(stu2) groups=502(stu2)
说明:指定stu2家目录/rhome/stu2时,只需要/rhome存在即可,系统会默认在/rhome下创建stu2目录
passwd 用户名 表示给指定用户修改密码
passwd 直接回车 表示给当前用户修改密码
[root@heima ~]# passwd stu1
① 保存用户信息的文件
Changing password for user stu1.
New password: 密码不显示
BAD PASSWORD: it is WAY too shortBAD PASSWORD: is too simple
Retype new password: 密码不显示
passwd: all authentication tokens updated successfully.
说明:
1.管理员root可以给任何用户修改密码
2.普通用户可以自己给自己修改密码,但是密码复杂度要符合规范
[root@heima ~]# echo 123 passwd stdin stu2
更改用户 stu2 的密码 。
passwd:所有的身份验证令牌已经成功更新。
说明:使用这种方法不用交互可以直接设置成功,一般用于脚本中。
1. 用户信息保存文件/etc/passwd
了解相关配置文件内容,可以通过求man文档解决,即 man 5 passwd
以冒号:分割为7列,如下:
account > stu1 用户名称
password > x 密码,将密码单独存放在另外一个文件中
UID
> 501 用户ID
GID
> 501 组ID
GECOS >
用户自定义,描述说明
directory >
/home/stu1 用户的家目录
shell > /bin/bash用户的默认shell,其中/sbin/nologin表示非交互,不能登录系统
2. 用户密码信息保存文件/etc/shadow
了解相关配置文件内容,可以通过求man文档解决,即 man 5 shadow
以冒号:分隔为9列,如下:login name
登录的用户名
encrypted password
加密后的密码;!!表示没有设置密码date of last password change
最后一次更改密码的天数(距离1970年的1月1日到现在的天数)minimum password age
密码的最小生存周期;0表示可以立刻修改密码;如果是3,则表示3天后才能更改密码maximum password age
密码的最大生存周期;如果30表示每隔30天需要更新一次密码
password warning period 密码过期前几天发出警告;7表示过期前7天开始警告password inactivity period
密码的宽限期;如果3表示允许密码过期3天,3天内还能登录系统,但是要求修改密码。3天后(密码过期3天后账户被封锁,需要联系管理员)
account expiration date
账户过期的时间,账户过期的用户不能登录;密码过期用户不能用原来的密码登录。以1970年1月1日算起。reserved field
保留
② 更改用户的账号信息(chage)
3、修改用户信息(usermod)
① 基本语法选项
② 举例说明
chage help
d 修改用户最后一次更改密码的时间
m 修改密码的最小存活期(几天后才能修改密码)
M 修改密码的最大存活期(每隔多少天更新一次密码)
W 修改密码过期前警告(过期前几天发出警告)
I 修改允许密码过期几天
E 修改账户过期时间
l 列出账户的信息举例说明:
查看用户账号的相关信息命令:chage l stu1[root@heima ~]# chage l stu1Last password change
: Mar 04, 2019
Password expires
: never
Password inactive
: never
Account expires
: never
Minimum number of days between password change : 0Maximum number of days between password change : 99999Number of days of warning before password expires : 7
修改用户账号的过期时间:2019 03 10过期
[root@heima ~]# chage E '2019 03 10' stu1
[root@heima ~]# chage l stu1Last password change
: Mar 04, 2019
Password expires
: never
Password inactive
: never
Account expires
: Mar 10, 2019
Minimum number of days between password change : 0Maximum number of days between password change : 99999Number of days of warning before password expires : 7
修改用户账号的过期时间为10天以后:
[root@heima ~]# chage E $(date +%F d '+10days') stu1
usermod [选项] 用户名常用选项:
u 指定用户uid,唯一标识,必须唯一
g 指定用户的默认组(主组)
G 指定用户附加组(一个用户可以加入多个组,但是默认组只有一个)
d 指定用户家目录(每个用户都有一个自己的家,并且默认在/home/xxx)
s 指定用户默认shell
m 移动用户家目录,和 d一起使用
1. 修改stu3用户的UID为1100
[root@heima ~]# usermod u 1100 stu3
4、删除用户(userdel)① 基本语法选项
② 举例说明
[root@heima ~]# tail 5 /etc/passwdyunwei:x:1001:1001::/home/yunwei:/sbin/nologinstu1:x:1002:1002::/home/stu1:/bin/bashstu2:x:1003:1003::/rhome/stu2:/bin/bashstu3:x:1100:1004::/rhome/stu3:/bin/bashstu4:x:1005:1005::/home/stu4:/sbin/nologin
2.修改stu4用户的默认shell为可登录系统[root@heima ~]# su stu4
This account is currently not available.[root@heima ~]# usermod s /bin/sh stu4[root@heima ~]# tail 5 /etc/passwdyunwei:x:1001:1001::/home/yunwei:/sbin/nologinstu1:x:1002:1002::/home/stu1:/bin/bashstu2:x:1003:1003::/rhome/stu2:/bin/bashstu3:x:1100:1004::/rhome/stu3:/bin/bashstu4:x:1005:1005::/home/stu4:/bin/sh
3.修改stu5用户的家目录
[root@heima ~]# useradd d /rhome/stu5 stu5[root@heima ~]# usermod md /home/stu5 stu5
userdel [选项] 用户名常用选项:
r 删除用户并且移除其家目录和邮箱
f 强制删除正在登录的用户
说明:
创建完用户后,家目录默认在/home/用户名下;用户的邮箱在/var/spool/mail/用户名
1. 删除stu4用户以及家目录
[root@heima ~]# userdel r stu4
[root@heima ~]# id stu4id: stu4: No such user
2.强制删除一个正在登录的用户
[root@heima ~]# userdel r stu5userdel: user stu5 is currently used by process 7998[root@heima ~]# id stu5
uid=1101(stu5) gid=1101(stu5) 组=1101(stu5)[root@heima ~]# userdel rf stu5
userdel: user stu5 is currently used by process 7998
[root@heima ~]# id stu5
id: “stu5”:无此用户
3. 只删除用户user02,不删除其家目录
㈣ 总结
1、创建用户(useradd)
1)useradd 用户名——>家目录/home/用户名、邮箱、UID、默认组(GID)[用户主组]
2)useradd [选项] 用户名字——>常用选项:-d/-s/-u/-g/-G
2、设置用户密码(passwd)
1)passwd 用户名——>给指定的用户(管理员可以给任何人设置任何密码)
2)echo 密码|passwd --stdin 用户名——>非交互式(用于脚本中)
3)用户基本信息和用户密码信息保存文件——>/etc/passwd和/etc/shadow
4)扩展chage命令——>用来修改用户密码信息(账号过期时间、密码最小生存周期等)
3、修改用户信息(usermod)
1) usermod [选项] 用户名——>usermod -md 新家 用户名
4、删除用户(userdel)
1)userdel 用户名——>只删除用户,不删除用户家目录、邮箱等信息
2)userdel -r 用户名——>删除用户以及用户其他信息
3)userdel -f 用户名——>强制删除用户(删除正在登录的用户)
[root@heima ~]# userdel stu1
二、Linux下组管理
㈠ 组和用户的关系(理解)
核心:组的目的是为了方便管理用户
用户是操作系统上管理维护系统或服务的人
组是用户的一个属性信息
任何一个用户默认都会有一个主组(默认组)
一个用户除了主组也可以有多个其他组(附加组)一问:用户的主组和附加组到底有啥关系呢?
答:用户的主组和附加组半毛钱关系都木有
二问:那要这个主组或者附加组有啥用呢?
答:肯定是有用的,组的目的是方便管理用户,用户的目的是管理操作文件,文件就有权限这个属性。
1. 用户要操作一些文件,文件是由用户创建,不同用户创建的文件的属性信息也就不一样2. 文件的属性都有啥呢?比如,文件的创建者,文件属于哪个组,文件大小,文件时间等3. 其中,不同用户所创建的文件的属组就是该用户的主组(默认组)
4. A用户附加组也有可能是其他用户的主组,道理同上(权限章节再细细体会组的作用)
㈡ 组的管理(掌握)
1、创建组(groupadd)
① 基本语法
② 举例说明
2、删除组(groupdel)
① 基本语法
② 举例说明
3、组成员管理(gpasswd)
① 基本语法
② 举例说明
添加用户到组里
groupadd [选项] 组名常用选项:
g 指定组的GID(编号),默认唯一
1.创建一个组admin
[root@heima ~]# groupadd admin
2.查看组信息
[root@heima ~]# tail 1 /etc/groupadmin:x:1005:
说明:关于/etc/group配置文件说明,可以man 5 group找帮助
3.创建一个组sysadmin,指定组的GID为1111
[root@heima ~]# groupadd g 1001 sysadmin
[root@heima ~]# tail 1 /etc/groupadmin:x:1005:sysadmin:x:1111
groupdel 组名
[root@heima ~]# groupdel admin
[root@heima ~]# groupdel stu2groupdel: cannot remove the primary group of user 'stu2'
注意:以上信息说明不能删除属于其他用户的主组
gpasswd [选项] 组名常见选项:
a 添加用户到组
d 从组中删除成员
A 指定管理员
M 指定组成员,可以批量添加用户到组中
r 删除密码
gpasswd 组名 给组设置密码
删除组成员
1. 创建3个用户user01~user03
2. 将user01添加到sysadmin组里
方法:1:指定user01用户的附加组为sysadmin(站在用户角度)# usermod G sysadmin user01
方法2:使用gpasswd命令添加用户到组里# gpasswd a user01 sysadmin
a选项:表示往组里追加用户
# gpasswd M user02,user03 sysadmin 设置sysadmin组成员为user02,user03
M选项:表示覆盖设置组成员(会覆盖原来的成员列表)
将user03用户从组sysadmin里移除# gpasswd d user03 sysadmin
扩展补充
一、文件编辑工具(vim)
Linux平台下的文本编辑器: emacs、nano、gedit、vi、vim
vi(visual editor)编辑器通常被简称为vi,它是Linux和Unix系统上最基本的文本编辑器,类似于Windows 系统下的记事本。学会它后,我们将在Linux 的世界里游刃有余。
为什么要学习vim?
1. 所有的Unix like系统都会内置vi文本编辑器,其他的文本编辑器则不一定会存在
2. 很多软件的编辑接口都会主动调用vi
3. vim具有程序编辑的能力,可以主动以字体颜色辨别语法的正确性,方便程序设计
4. 程序简单,编辑速度快
5. vim是vi的升级版
㈠ vim编辑器三种模式
2、编辑模式
3、底行模式
① 如何进入底行模式?
命令模式进入底行模式:按冒号 :
编辑模式进入底行模式:先按 Esc键 退出到命令模式,然后再按冒号 :② 底行模式能做什么?
1. 保存和退出
保存文件,命令 :w ;另存为到其他文件,命令 :w 文件名保存退出,命令 :wq ;强制保存退出 :wq!
退出不保存,命令 :q ;强制退出 :q!
命令 :x 在文件没有修改的情况下,表示直接退出(等价于:q),在文件修改的情况下表
示保存并退出(:wq)
2. 搜索替换
3. 其他功能
㈡ vim编辑器三种模式切换
㈢ 多窗口编辑问题
当两个终端同时打开或者意外结束文件时,会产生一个.swap文件 (交换文件)举例说明:
你在两个终端同时打开/tmp/passwd文件,会产生/tmp/.passwd.swp。这时,有六个按钮可以使用:
用户组的概念
用户组是一组具有相同权限的用户的集合。通过将用户加入到相应的用户组中,可以简化权限的管理。
主组:每个用户都有一个与之关联的主组,通常在创建用户时指定。
附加组:用户还可以属于一个或多个附加组,从而获得额外的权限。
用户组的管理命令
添加用户组:groupadd groupname
删除用户组:groupdel groupname
修改用户组属性:(修改组名)groupmod -n newname oldname
添加用户到组:(添加用户到附加组)usermod -a -G groupname username
将用户设为主组:(修改用户的主组)usermod -g groupname username
用户组的权限管理
文件和目录的权限:通过设置文件和目录的用户组权限,可以控制用户组内的成员对该文件或目录的访问。
权限类型:读(r)、写(w)、执行(x),分别对应不同的操作权限。
权限设置:使用(给用户组添加rwx权限)或者(数字模式设置权限)等方式设置权限。chmod g+rwx filenamechmod 770 filename
用户组的实际应用
项目团队管理:为项目团队创建一个用户组,并将所有团队成员添加到该组,便于统一管理项目相关资源的访问权限。
系统服务管理:某些系统服务可能需要特殊权限才能运行,可以通过将服务运行的用户添加到特定的用户组来实现权限的分配。
注意事项
权限最小化原则:只赋予用户完成工作所必需的最小权限,以减少潜在的安全风险。
定期审计:定期检查和审计用户组和用户的权限设置,确保权限分配的合理性和安全性。
通过上述总结,我们可以看到Linux系统中的用户组管理是一个复杂但至关重要的任务。合理的用户组管理不仅能够提高系统的安全性,还能够提升工作效率,确保系统的稳定运行。
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.youkuaiyun.com/2301_80089323/article/details/139751284