【Linux系列】Linux用户大揭秘:从“公寓住户”到“社区管理员”的奇幻之旅

前言

"在Linux的王国里,每个用户都是一位独特的居民,而用户组则是他们归属的部落。" ------《Linux社会学导论》

第一章 Linux用户图鉴:看看你是哪种"房客"

1.1 普通用户:公寓里的乖巧租客

  • 日常行为:在自己的房间🚪(/home/用户名)里写文档、听音乐
  • 权限限制
    • 不能拆承重墙(修改系统文件)
    • 不能进邻居家(访问其他用户目录)
    • 不能调整整栋楼🏢的水电(修改系统配置)

经典案例

新手Alice试图删除系统字体:

bash 复制代码
rm /usr/share/fonts/*  # 立即收获"Permission denied"警告  

1.2 Root用户:无所不能的超级房东

  • 特权展示
普通用户 Root用户
只能给自己房间换灯泡 能改造整栋楼的电路系统
需要申请才能装修 直接抡大锤砸墙也没人管
每月按时交水电费 随时修改水电费计价器

安全警告 ⚠️:

某运维工程师使用Root权限运行未知脚本,结果服务器变成比特币矿机------这就是"钥匙交给陌生人"的代价!

第二章 用户身份证:UID与GID的秘密

2.1 UID:用户的数字指纹

  • 查看命令
bash 复制代码
id -u alice  # 输出1000(普通用户典型UID)  
id -u root   # 输出0(超级用户专属编号)  
  • 特殊UID彩蛋
    • UID 65534:匿名用户"nobody"
    • UID 666:系统保留(其实是给恶魔程序用的?)

2.2 GID:用户的"朋友圈"标签

  • 创建用户组
bash 复制代码
sudo groupadd gamers  # 新建"游戏玩家"群组  
  • 加入群组的好处
    • 共享游戏存档(目录权限设置为770)
    • 联机不用输密码(通过组权限控制)
    • 接收组内广播消息(wall命令)

趣味实验 :把同事加入"audio"组,悄悄用cat /dev/urandom > /dev/audio给他的电脑💻️播放白噪音!

第三章 权限魔法:Linux的"门禁系统"

3.1 三原色权限模型

  • 读 ( r ):像图书馆访客,只能看书名
  • 写 ( w ):像图书管理员,可以修改书目
  • 执行 ( x ):像魔法师,能启动咒语(程序)

权限计算器🧮:

bash 复制代码
chmod 764 secret_room.txt  
# 所有者:rwx (7=4+2+1)  
# 组用户:rw- (6=4+2)  
# 其他人:r-- (4)  

3.2 特殊权限:隐藏在暗门的机关

粘滞位(t):

bash 复制代码
chmod +t /shared_upload  # 修改目录权限,只有该目录的所有者、文件所有者或root用户才能删除目录中的文件  
  • +t:表示添加"粘滞位"(sticky bit)。当粘滞位被设置在一个目录上时,只有该目录的所有者、文件的所有者或root用户才能删除或重命名该目录中的文件。
  • /shared_upload:是需要修改权限的目标目录。

SUID:

bash 复制代码
chmod u+s /usr/bin/passwd  # 普通用户修改密码时临时获得Root权限  
  • u+s:表示为文件的所有者添加"设置用户ID位"(Set User ID,简称SUID)。当SUID被设置在一个可执行文件上时,普通用户在执行该文件时,会以文件所有者的身份(通常是root用户)运行,而不是以执行该文件的用户的身份运行。
  • /usr/bin/passwd:该文件用于更改用户密码的命令,通常由root用户所有。

SGID:

bash 复制代码
chmod g+s /project_team  # 新建文件自动继承组身份  
  • g+s:表示为目录的所属组(group)添加"设置组ID位"(Set Group ID,简称SGID)。当SGID被设置在一个目录上时,在该目录中新建的文件和子目录的所属组会继承该目录的所属组,而不是创建文件的用户的默认组。
  • /project_team:是需要修改权限的目标目录。

第四章 用户管理:从"人口普查"到"社区服务"

4.1 用户生命周期管理

新生儿落户

bash 复制代码
sudo useradd -m -s /bin/bash -G developers alice  
  • -m:创建家目录
  • -s:指定默认Shell
  • -G:加入附加组

居民改名

bash 复制代码
sudo usermod -l alicia alice  # 把alice改名为alicia  
  • -l:指定新的用户名

注销户口

bash 复制代码
sudo userdel -r bob  # 删除用户并清除家目录  

4.2 密码管理:钥匙的安全哲学

强密码生成术

bash 复制代码
# 生成12位随机密码(包含大小写字母和数字)  
openssl rand -base64 12 | cut -c1-12  

密码老化策略

bash 复制代码
# /etc/login.defs  
PASS_MAX_DAYS 90    # 密码有效期  
PASS_MIN_DAYS 7     # 修改间隔  
PASS_WARN_AGE 14    # 到期提醒  

第五章 用户管控:社区里的"天网系统"

5.1 资源配额:公平分配水电

限制磁盘空间:

bash 复制代码
sudo setquota -u alice 500M 700M 0 0 /home  
  • setquota:用于设置磁盘配额的命令行工具,常用于 Unix/Linux 系统。
  • -u:指定接下来的是用户配额。如果使用 -g,则是设置组配额。
  • alice:目标用户的用户名。
  • 500M:软限制(soft limit),即用户可以使用的最大磁盘空间为 500 兆字节。
  • 700M:硬限制(hard limit),即用户最多只能使用 700 兆字节的磁盘空间。
  • 0:这是软限制的宽限期(grace period),单位为秒。这里设置为 0 表示没有宽限期。
  • 0:这是硬限制的宽限期(grace period),同样设置为 0 表示没有宽限期。
  • /home:这是应用配额的目录。

内存用量管控:

bash 复制代码
# 使用cgroups限制内存  
cgcreate -g memory:alice_group  # 在内存子系统下创建名为alice_group的新cgroup
echo 1000000000 > /sys/fs/cgroup/memory/alice_group/memory.limit_in_bytes  # 设置内存限制为1GB
  • cgcreate:用户创建控制组(cgroup)的命令
  • -g memory:alice_group
    • memory:指定要操作的子系统为内存子系统。
    • alice_group:这是新创建的cgroup的名称。
  • echo 1000000000 > :将数值写入指定的文件。
  • /sys/fs/cgroup/memory/alice_group/alice_groupcgroup在内存子系统下的目录。
  • memory.limit_in_bytes:用于设置内存限制的文件。

第六章 用户冷知识:Linux社区的奇闻异事

  • 历史典故:最早的Linux用户是 Linus Torvalds 本人,UID=1000。
  • 彩蛋文化 :在终端输入sl(需安装),会看到一辆蒸汽火车呼啸而过。
  • 哲学思考 :每个用户的.bashrc文件就像个性签名,记录着TA的偏好与习惯。
  • 都市传说:传说某个服务器上存在UID=666的用户,专门处理"危险任务"。

终极挑战:成为用户管理大师

  1. 情景模拟 :公司新来10个实习生,请用一条命令批量创建用户(提示:newusers命令)
  2. 侦探游戏:找出最近修改过密码的用户(提示:检查/etc/shadow文件时间戳)
  3. 密室逃脱 :当忘记sudo密码时,如何不联系管理员安装软件?(提示:利用alias魔法)
  4. 社区建设:创建一个共享文件夹,让设计组所有成员可以协同编辑PSD文件(提示:结合SGID与umask)

结语:用户即宇宙

Linux用户系统就像一面镜子,映照出数字世界的秩序与自由。当我们理解:

  • 每个用户都是独特的个体
  • 每个权限都是精密的约定
  • 每个组都是协作的社区

才能真正领悟《Linux之道》中的名言:
"优秀的系统管理员不是控制用户,而是创造让用户自由生长的环境。"

愿你在Linux的国度里,既能做遵守规则的好居民,也能成为建设社区的智者! 🐧

相关推荐
HLC++10 小时前
Linux的进程间通信
android·linux·服务器
华清远见IT开放实验室12 小时前
实验室建设案例 | 石家庄科技信息职业学院嵌入式实验室——从底层硬件到系统应用,一所应用型高校的嵌入式人才培养这样落地
linux·arm开发·stm32·嵌入式硬件·高校·实验室建设
groundhappy14 小时前
idalib安装和codex ida-mcp配置
linux·开发语言·python
通信小小昕15 小时前
Ubuntu 26.04 中文输入法安装
linux·运维·ubuntu
张小姐的猫16 小时前
【Linux】网络编程 —— HTTP协议(上)
linux·运维·服务器·网络·http·单例模式·策略模式
栩栩云生16 小时前
AI 写代码犯的错,早被写进了错题集
linux·安全·ai编程
imc.1117 小时前
linux基础IO
linux·运维·服务器
BelongPanda19 小时前
Linux Nginx 纯手动 Let‘s Encrypt 泛域名证书配置教程
linux·nginx
酷可达拉斯20 小时前
Linux操作系统-shell编程(0)
linux·运维·服务器·python·云计算
2301_7779983420 小时前
Linux中断机制:操作系统如何高效运行
linux·运维·服务器