Linux随笔03
第3章 用户管理:
3.1 用户/组概览
Linux系统是多用户、多任务的分时操作系统,系统上每一个进程都有一个特定的文件,每个文件都被一个特定的所拥有。如果需要使用系统资源,首先必须向系统超级用户申请为普通用户,然后以普通用户的身份进入系统。超级用户可以对普通用户进行跟踪,并设置他们的访问权限,这样可以保证系统的安全。
每个用户都属于一个用户组或者多个组,系统可以对一个用户组中的所有用户进行集中管理。组与组的控制权限是不同点,系统根据不同的需求,把用户分别放在不同的组中。
3.1.1 用户标识:UID与GID
Linux系统不能识别用户名信息,所以每个用户都有唯一的系统可识别的UID,它类似于居民身份证编号。
id命令可以查看当前用户登录信息。
默认情况下,不带任何参数的 `id` 命令将显示当前用户的用户ID和用户组ID
UID为用户的ID。是用户标识符,用于唯一标识一个用户。
在计算机领域,UID通常是一个整数或字符串,用于在系统中区分不同用户。UID可以由系统自动生成,也可以由用户自行设置。
在某些系统中,UID还与用户的权限、角色等信息相关联。
在编程中,UID常用于实现用户注册、登录、权限控制等功能。
例如,在数据库中存储用户信息时,UID可以作为用户的唯一键;在服务器端处理用户请求时,可以根据UID查找用户相关信息。
GID为用户所属组的ID。是一种用于标识某个特定实体的标识符。
在计算机领域,GID通常用于分布式系统、数据库和网络编程中。
GID的主要特点是全局唯一性和稳定性,以确保在多个进程、系统或网络节点之间正确地唯一标识某个实体。
groups为用户属于的所有组的ID。每个用户都有一个默认的所属组,当创建新用户时,如果不指定所属组,系统会自动为该用户创建一个与用户名相同的组,该组的用户列表默认为空。
groups主要涉及用户与组的归属关系,用户可以属于一个或多个组。通过`id`、`groups`和`usermod`等命令,可以查看和修改用户的所属组。
ll命令:查看文件的所有者(每个文件都有一个所有者)
每个进程是以某个用户的身份运行的,ps aux | less命令可以查看进程。会显示所有进程的详细信息,一页一页地查看
eg:用ps aux命令查看httpd进程:ps aux | grep httpd
3.1.2 用户/组相关文件
在Linux系统中,所有用户的用户名和密码都存放在/etc/passwd和/etc/shadow这两个文件中
在/etc/passwd文件中,一行记录对应一个用户,每行记录又被冒号分隔为7个字段,依次为用户名称、密码占位符、用户UID、主组GID、注释性描述、用户主目录、用户的Shell。
[root@localhost suli]# vim /etc/passwd
在/etc/shadow文件中,每行记录由冒号分隔为9个字段,依次为用户名称、加密后的密码、最近改动密码时间、密码不可变更时间(99999没有限制)、密码重新变更时间、密码过期时间、密码过期宽恕时间、用户失效时间、保留。
[root@localhost suli]# vim /etc/shadow
$id号越大加密程度越高
UID为0是特权用户,UID为1~499是系统用户,UID为500以上是普通用户。
3.1.3 超级用户
root用户拥有所有系统权限,而且root用户有权利覆盖文件系统上的所有普通权限。系统中大多数设备只能由root控制,如安装或删除软件、管理系统文件和目录等。普通用户要进行相关操作需要root用户的许可。
3.2 管理用户/组
管理用户与用户组主要是创建、更改、删除等操作
3.2.1 创建用户/组
useradd命令:创建用户/组
“!!”:密码未设置。
在Linux下创建一个用户时,若未指定任何组(主组或附加组),系统会默认给该用户创建一个和用户名相同的组作为用户的主组,如果将多个用户划入一个组,只需要对组设定权限即可,由此也能减少很多后台管理上的麻烦。
-G参数指定已存在的附加组
如果在使用useradd命令时加入了错误的设置数据,或者要对一些信息进行详细的修改,除了直接在/etc/passwd与/etc/shadow文件中修改,也可以使用usermod与gpasswd命令
一个用户可以属于很多组,创建组的命令为groupadd
[root@localhost suli]# groupadd sale
[root@localhost suli]# groupadd it
[root@localhost suli]# groupadd market
用户组的信息保存在/etc/group文件中,上面创建的组在该文件的尾部,使用tail命令查看,所有新创建组并没有成员
[root@localhost suli]# tail /etc/group
一般情况并不需要专门指定组的GID,系统会自动依次增加数值。如果需要指定GID,添加-g参数或者-gid
useradd命令中的参数
参数 | 说明 |
-d | 指定用户的主目录 |
-u | 指定用户特定的UID(整数) |
-g | 指定用户主组的名称或ID |
-G | 指定用户的附加组列表 |
-s | 指定用户的登录Shell |
3.2.2 删除用户/组
userdel命令:删除一个用户。添加-r可以同时在/home目录与mail spool中删除该用户。若用户不存在可以使用rm-rf手动删除
groupdel命令:删除一个用户组。如果某个初始用户正在使用该用户组,则无法删除,此时需要修改该用户的GID或者直接删除该用户
3.2.3 修改用户密码
passwd命令:修改密码。只有root用户可以修改其他用户的密码,普通用户修改密码时需要提供原密码,root用户修改普通用户的密码不需要提供原密码。
3.2.4 安全用户
在创建用户时,通过-s参数指定用户登录shell为/sbin/nologin,可以将其设置为安全用户。
当指定某个用户的登录为Shell为/sbin/nologin时,此用户无论通过本地还是远程登陆的方式都将不能登录系统,也无法实现系统管理,但该用户仍可以使用FTP和邮件服务这种不需要登录系统的服务,这样的用户一般称为安全用户
在创建用户时,如果该用户没有必要登录系统,应该将此用户的登录Shell修改为/sbin/nologin,以消除安全隐患
Shell是用户登录系统执行的第一个程序,它并不是固定的,可以根据需求在/etc/passwd文件中随意更改,然后将root用户下的/bin/bash/替换成/usr/sbin/reboot,完成后保存
echo$SHELL命令:查看用户shell为...
3.2.5 配置文件
/etc/login.defs与/etc/default/useradd是命令useradd的配置文件,决定useradd创建用户默认的参数,文件中的配置对root用户无效
3.2.6 su/sudo命令
su命令可以进行身份切换。
普通用户切换至root用户需要密码,root用户切换至普通用户不需要密码
加入wheel组的普通用户可以使用sudo命令来执行系统相关操作,用户使用sudo时,必须先输入密码
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?