Linux篇章(二)
Linux用户组
用户和用户组简介
与windows类似,Linux也有用户和用户组的概念。在Linux系统中,每次登录系统都必须以一个用户的身份登录,并且登录后的权限也会根据用户身份来确定。 每一个进程在执行时,也会有其用户,该用户也和进程所能控制的资源有关。Linux系统下的每一个目录、文件,都会有其属于的用户和用户组,我们称其为属主和属组。由此课件,用户和用户组与Linux系统的运行息息相关。在实际操作使用系统时,我们往往关注用户较多与关注用户组。
在Linux系统中,每个用户都有自己的用户ID,称为UID,每个用户组也有自己的用户组ID,称为GID,UID和GID在Linux系统中是不可重复的。Linux系统就是通过UID和GID来对用户和组进行管理的,而对于管理员来说,往往会设置用户名和组名,这样使得用户和用户组的使用管理更人性化。
三种类型用户
root用户
root用户时UID和GID都等于0的用户,是Linux系统中的“上帝”,拥有最大的权限。如果深入了解Linux系统,会发现root用户真的拥有很多特权,比如:无视Linux对权限的设置而强行读、写、执行文件,切换其他用户登录不需要密码,可以强行切换到已经所用的用户,只有root可以为普通用户修改密码等等。
系统用户
系统用户通常用于运行服务,但是此用户无家目录,也不能用于登录系统。例如,在yum安装apache、nginx等服务后,就会自动创建apache和nginx的用户和同名用户组。在CentOS6系统中,系统用户的UID范围是1-499,在CentOS7系统中,系统用户的ID是1-999。
普通用户
普通用户只能由root用户创建,该用户拥有家目录,并且可以登录,该用户的权限由root分配。普通用户拥有指定的shell环境。
用户和用户组配置文件
用户和用户组关系
在Linux系统中,每个用户必定属于一个主组,默认情况下属于与其同名的用户组,最多可以有31个附属组,从用户权限的角度看,主组和附属组其实差别不大,用户也会拥有其附属组的组相关权限。
文件路径
用户:
(1)/etc/passwd # 存放的是用户;用户文件
(2)/etc/shadow # 存放的是用户的密码 ;用户的密码文件
用户组:
(1)/etc/group # 存放的是组;组文件
(2)/etc/gshadow # 存放的是组的密码 ;组的密码文件
passwd 和 group文件
这两个配置文件对用户组至关重要!
passwd文件
$ cat /etc/passwd | grep armin
armin: x:1000:1000::/home/armin:/bin/bash
armin 用户名
x 密码占位符
1000 用户的UID (超级用户账号的UID号固定值为0,程序用户账号的UID号为1-499,普通用户账号的UID号为500-60000)
1000 用户的GID (超级用户账号的GID号固定值为0,程序用户账号的GID号为1-499,普通用户账号的GID号为500-60000)
"" 用户说明
/home/armin 用户的家目录,所有普通用户的家目录,如果在创建的时候,不指定的话,默认都在/home下;但是root的家目录在/root
/bin/bash 用户的登陆shell,如果是/bin/bash 或者/bin/sh是可以登陆系统的,如果是/sbin/nologin是不能登陆系统的
/etc/shadow文件
$ cat /etc/shadow | grep armin
armin:!!:19089:0:99999:7:::
第一列是用户名
第二列是密码:当为!!或者*表示未设置密码,不能登录系统;当为空表示密码为空
第三列是上次修改密码的天数,时间从1970年1月1日算起
第四列是密码最短有效期限,0代表无期限
第五列是密码最长有效期限,99999代表永久
第六列是密码的过期时间的警告时间
第七列是密码过期之后多少天后不能登录系统
第八列是账号失效时间,单位是天数
第九列是保留
添加删除及修改用户
添加用户
语法:useradd 用户名
选项:
-d 在创建用户的时候,指定家目录
-s 在创建用户的时候,指定登陆shell
-u 在创建用户的时候,指定UID
-g 在创建用户的时候,指定用户的基本组
-G 在创建用户的时候,指定用户的附加组
-M 在创建用户的时候不要家目录
-c 在创建用户的时候,添加用户说明
示例:创建一个名为zhangsan和lisi的用户
# 创建一个名为zhangsan的用户
useradd zhangsan
# #创建一个用户lisi,这个用户的基本组是zhangsan,附加组是lemon,指定这个用户的家目录是/lisi,不能登陆系统
useradd -g zhangsan -G lemon -d /lisi -s /sbin/nologin lisi
删除用户
语法:userdel 用户名;选项和useradd一致
示例:
# 删除用户(不完全删除)
userdel 用户名
# 完全删除用户(完全:指的是连同家目录一起删除)
userdel -r 用户名
修改用户
语法:usermod 用户名
选项基于useradd又多了两项:
-L 锁定用户
-U 解锁用户
示例:
# 将/etc/passwd文件"AA"用户的登陆shell修改成/sbin/nologin
usermod -s /sbin/nologin AA
设置用户密码
passwd 用户名
passwd -d 用户名 # 设用户密码为空
添加 删除及添加移除用户组
创建组
语法:groupadd 组名
示例:
# 创建一个名为lemon的组
groupadd lemon
删除组
语法:groupdel 组名
示例:
# 创建一个名为lemon的组
groupdel lemon
用户添加到某个组
语法:gpasswd -a 用户名 组名
示例:
# 添加一个lisi用户到shuai的组
gpasswd -a lisi shuai
# 批量添加用户到组
gpasswd -M a1,a2,a3 lemon #将名为a1、a2、a3的用户同时添加到名为lemon的组中
# 查看用户有没有添加到组
groups 用户名 或 grep 组名 /etc/group
用户从组中移除
语法:gpasswd -d 用户名 组名
示例:
# 将名为a1的用户移出去
gpasswd -d a1 lemon
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律