【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的国度里,既能做遵守规则的好居民,也能成为建设社区的智者! 🐧

相关推荐
huangyuchi.9 分钟前
【Linux】LInux下第一个程序:进度条
linux·运维·服务器·笔记·进度条·c/c++
帽儿山的枪手28 分钟前
程序员必掌握的iptables五表五链
linux·网络协议
西阳未落1 小时前
Linux(14)——库的制作与原理
linux
444A4E1 小时前
深入Linux进程优先级:Nice值与O(1)调度器原理
linux·操作系统
Jooolin1 小时前
【编程史】Git是如何诞生的?这可并非计划之中...
linux·git·ai编程
云边有个稻草人1 小时前
【Linux系统】第八节—进程概念(上)—冯诺依曼体系结构+操作系统+进程及进程状态+僵尸进程—详解!
linux·进程·冯诺依曼体系结构·pcb·僵尸进程·进程的状态·task_ struct
xian0gang1 小时前
rk3588 区分两个相同的usb相机
linux
这儿有一堆花2 小时前
安全访问家中 Linux 服务器的远程方案 —— 专为单用户场景设计
linux·服务器·安全
RussellFans2 小时前
Linux 文本三剑客(grep, awk, sed)
linux·运维·服务器
Chuncheng's blog2 小时前
CentOS 7如何编译安装升级gcc至7.5版本?
linux·运维·c++·centos