【Linux命令饲养指南-完结】05-Linux用户、权限和软件管理:从“谁进谁出”到“装软件就像点外卖”
兄弟们前四篇我们学了走路、翻文件、看体检报告。今天这篇是管理员必修课——用户和组谁可以进你家、文件权限谁能动你东西、软件管理怎么装新软件。尤其是软件安装我们一起顺便把CentOS红帽系和UbuntuDebian系两大家族的命令都给学习了。通过这篇我们就能给服务器开账号、设权限、装软件就算忘记到时候回头查询就行啦。话不多说直接写在前面CentOS vs Ubuntu 最实用命令差距总结1. 切 root 管理员最容易错CentOSsu-输 root 密码直接进。Ubuntusudo-i输当前用户密码默认没开 root 密码。2. 安装软件包管理器CentOSyum / dnfyuminstall软件名# 或新版dnfinstall软件名Ubuntuaptaptupdateaptinstall软件名3. 重启/启停服务基本一样但习惯不同systemctl start 服务名 systemctl stop 服务名 systemctl restart 服务名 systemctl status 服务名两者完全通用没区别。4. 查看网络 IPCentOS 7 以前常用ifconfigUbuntu 更推荐ipaddr现在新版都通用ip addr。5. 防火墙CentOS默认 firewalldUbuntu默认 ufw# Ubuntu 开端口ufw allow22ufw status6. 用户相关CentOS新建用户默认就能用Ubuntu新用户要加 sudo 权限才能管理员操作7. 密码策略CentOS密码简单也能设Ubuntu密码要求更严太短/太简单会不让设8. 目录结构/home、/etc、/var、/usr 这些完全一样日常 cd、ls、mkdir、rm 命令一模一样。超级精简记忆口诀切 rootCentos su -Ubuntu sudo -i装软件Centos yumUbuntu apt服务命令一模一样操作文件一模一样第一部分用户和组 —— Linux 里的“小区门禁系统”Linux 是一个多用户多任务系统就像一栋小区每个人有自己的房间还有公共区域。用户就是住户组就是住户群比如“业主群”、“篮球群”。1. 查看用户 ——more /etc/passwd查户口本所有用户的信息都记录在/etc/passwd文件里这个文件谁都能读但密码存在别处。more/etc/passwd每一行代表一个用户格式类似root:x:0:0:root:/root:/bin/bash admin:x:1000:1000:admin:/home/admin:/bin/bash冒号分隔重点看前三个字段root/admin用户名x密码占位符实际密码在/etc/shadow0/1000用户IDUID。UID0 是超级用户 root普通用户从1000开始。 举个/etc/passwd就像小区的业主花名册root 是开发商啥都能干普通用户是租客。2. 创建用户 ——useraddpasswd给新住户发钥匙需要 root 权限才可操作这个命令。1、创建用户useraddzhongge# 创建用户 zhongge自动创建家目录 /home/zhongge2、设置密码passwd123456# 设置密码输入两次屏幕上不显示常见参数useradd -g 组名 用户名指定初始组useradd -G 附加组 用户名指定附加组useradd -s /sbin/nologin 用户名禁止登录用于运行服务的账户 注意useradd只是创建用户必须用passwd设密码否则用户无法登录。3. 切换用户 ——su临时串门suzhongge# 切换到 zhongge环境变量还是原来的su- zhongge# 切换到 zhongge同时加载他的环境推荐su-# 切换到 root需要 root 密码su -相当于“重新登录”会进到目标用户的家目录。su不带横杠就是“半拉子切换”容易出问题建议总是用su -。⚠️ 从 root 切到普通用户不需要密码反过来需要。⚠️Ubuntu使用的是sudo -i4. 删除用户 ——userdel -rf注销户口操作的时候需要root权限userdel-rfzhongge-r删除家目录和邮箱池-f强制删除即使用户还在登录如果用户登录过删除前最好先pkill -u zhongge杀掉他的进程或者让他自己退出。5. 用户组 —— 把住户拉进群每个用户创建时会自动生成一个同名的主组。组信息存在/etc/group。more/etc/group# 查看所有组groupadddevops# 新建组 devopsgroupdeldevops# 删除组组里不能有用户 有用户删除不成功gpasswd-azhongge devops# 把 zhongge 加入 devops 组-a addgpasswd-dzhongge devops# 把 zhongge 移出 devops 组-d deletegroupszhongge# 查看 zhongge 属于哪些组 主组不能移除附加组随便加。为什么需要组因为权限可以按组设置。比如devops组的人都能读/var/log省得一个个给用户授权。第二部分文件权限 —— 谁可以“读/写/执行”1. 权限的“三组九位”大法执行ll会看到类似-rwxrw-r--. 1 root root 1777 Sep 9 23:50 profile我们拆解第一段-rwxrw-r--位置含义说明第1字符文件类型-普通文件d目录l链接第2-4字符所有者权限用户权限文件的主人能干啥第5-7字符所属组权限和主人同组的成员能干啥第8-10字符其他人权限既不是主人也不在组里的人能干啥每个权限位r 可读read数字 4w 可写write数字 2x 可执行execute数字 1- 没有权限数字 0所以rwx 4217rw- 426r-- 4--- 0。上面例子的-rwxrw-r--翻译所有者rwx→ 7可读可写可执行所属组rw-→ 6可读可写不可执行其他人r--→ 4只读 记忆法权限三位数如 764就是“主人-组-其他人”的数字。2. 修改权限 ——chmod改数字chmod755profile# 变成 rwxr-xr-xchmod-R755/folder# 递归修改文件夹下所有文件常用权限值755主人全权组和其他人只读可执行最常见644主人可读写组和其他只读普通文件777所有人全权极度危险除非你确定要公开700只有主人全权别人啥也干不了 骚操作也可以用字母chmod ux file给主人加执行权限但数字更直观。3. 修改所有者/组 ——chown和chgrpchownzhongge profile# 把文件所有者改成 zhonggechown-Rzhongge /folder# 递归改文件夹chgrpdevops profile# 把文件所属组改成 devopschgrp-Rdevops /folder也可以一条命令改所有者和组chownzhongge:devops profile⚠️ 修改所有者和组需要 root 权限或者你是文件当前所有者且属于目标组。第三部分软件管理命令 —— 装软件就像点外卖这是今天的重头戏。我们将两种主流系统CentOS 和 Ubuntu进行比对学习。0. 简述软件安装的底层原理必读我们装软件时到底发生了什么源代码程序员写的原始代码C/C/Python等。理论上你可以下载源码自己编译安装但过程繁琐./configure make make install还要手动解决依赖。软件包为了方便开发者把编译好的二进制文件打包成.rpmRed Hat系或.debDebian系。这就是软件包。仓库Repository官方或第三方维护的软件包集合放在互联网的HTTP/FTP服务器上。仓库里不仅有软件包还有元数据软件叫什么、版本、依赖哪些其他包、下载地址等。包管理器yumCentOS 7、dnfCentOS 8、aptUbuntu。它们的作用是从仓库下载元数据yum update或apt update根据你要装的软件自动计算依赖关系比如装nginx需要openssl、pcre等从仓库下载所有需要的包并按顺序安装把软件信息记录到本地数据库方便升级和卸载类比点外卖仓库 外卖平台美团/饿了么里面有很多商家软件包管理器 外卖App你点一份“宫保鸡丁”安装nginxApp自动帮你加上“米饭筷子餐巾纸”依赖rpm/deb 手动安装 直接去商家自提但可能发现忘了买米饭还得再跑一趟。 所以强烈推荐用包管理器安装yum/apt而不是手动下载rpm/deb。除非你要的软件官方仓库没有才考虑手动下载或编译。1. 上传下载和网络下载辅助工具从本地上传/下载到服务器rz/sz需要安装 lrzsz# CentOSyuminstall-ylrzsz# Ubuntuaptinstall-ylrzsz rz# 上传弹出窗口选本地文件传到服务器当前目录sz 文件名# 下载把服务器文件下载到本地注意需要在XShell、SecureCRT等支持Zmodem协议的终端里使用。如果使用纯SSH推荐用scp命令。从互联网下载文件wgetwgethttp://example.com/software.rpmwget就是一个下载器支持HTTP/HTTPS/FTP。包管理器底层也会用到它。2. RPM 命令CentOS/RedHat 系底层包管理RPM 是 Red Hat Package Manager 的缩写。它可以直接安装.rpm文件但不会自动解决依赖。常用操作# 安装-i install-v verbose-h 显示进度rpm-ivhpackage.rpm# 查询所有已安装包过滤mysqlrpm-qa|grepmysql# 卸载-e eraserpm-emysql-server-5.7.21-1.el7.x86_64RPM 的缺点你下载了一个mysql.rpm安装时可能报错“需要 libssl.so.10”。你得自己去找哪个包提供这个库手动下载安装然后回来重试。依赖地狱就是这么来的。所以 RPM 通常只用于安装本地自己打的包或者系统自带的少数包。日常装软件请用 YUM。3. YUM / DNFCentOS 的包管理器自动解决依赖YUM Yellowdog Updater Modified。CentOS 7 用yumCentOS 8 用dnf用法几乎一样。⚠️ 补充说明CentOS 系统官方已停止维护(如果你使用CentOS 那么yum可能使用不了)本文示例环境为 Rocky Linux其包管理方式与 CentOS 完全一致仍可正常使用 yum 命令操作步骤通用。YUM 的工作原理配置文件在/etc/yum.repos.d/下每个.repo文件定义一个仓库比如 BaseOS、EPEL、Nginx官方源。执行yum update时YUM 下载所有仓库的元数据软件包列表、依赖关系、版本。当你yum install nginx时YUM 查找nginx包读取它的依赖列表递归找出所有需要的包然后从仓库下载并安装。安装完成后YUM 会把包信息记录到本地 RPM 数据库。常用命令# 搜索包yum search nginx yum list*mysql*# 安装-y 自动确认yuminstall-ynginx# 卸载yum remove-ynginx# 更新所有包yum update-y# 清理缓存换源后常用yum clean all常见仓库base/appstream系统官方仓库epelExtra Packages for Enterprise Linux社区维护的扩展包nginx/mysql官方源去官网下载.repo文件放入/etc/yum.repos.d/就能装最新版 运维金句yum install -y是 CentOS 上装软件的“标准答案”。4. APT / APT-GETUbuntu/Debian 的包管理器Ubuntu 使用apt底层是.deb包。原理和 YUM 完全类似仓库配置文件在/etc/apt/sources.list和/etc/apt/sources.list.d/元数据更新用apt update。常用命令对比操作CentOS (yum)Ubuntu (apt)更新软件源元数据yum update实际也会升级apt update升级所有包yum upgradeapt upgrade搜索包yum search xxxapt search xxx安装包yum install -y nginxapt install -y nginx卸载包yum remove -y nginxapt remove -y nginx保留配置文件apt purge -y nginx彻底删除列出已安装yum list installedapt list --installed清理缓存yum clean allapt cleanUbuntu 典型操作sudoaptupdate# 重要先更新源信息sudoaptinstall-ynginx# 安装sudoaptremove-ynginx# 卸载sudoaptautoremove-y# 删除无用的依赖包 注意Ubuntu 默认不允许 root 直接登录所以命令前加sudo。CentOS 可以切 root 或加sudo。第四部分️ AI 辅助实战软件安装与卸载CentOS 参考直达 CentOS AI辅助实现下载和安装软件Ubuntu 参考直达 ️Ubuntu AI辅助实现下载和安装软件5. 软件到底去哪里下载仓库地址揭秘CentOS 官方仓库http://mirror.centos.org/centos/7/os/x86_64/实际会重定向到国内镜像比如阿里云、清华Ubuntu 官方仓库http://archive.ubuntu.com/ubuntu/同样有国内镜像EPELhttps://dl.fedoraproject.org/pub/epel/第三方软件官方源比如 Nginx 官方源https://nginx.org/packages/centos/7/x86_64/当你yum install nginx时YUM 会去仓库配置的 baseurl 里找nginx包。如果找不到就报错“No package nginx available”。这时候你需要添加 EPEL 或 Nginx 官方源。添加 Nginx 官方源CentOS# 下载官方提供的 repo 文件yuminstall-yhttps://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm# 然后就能 yum install nginx 了添加 Nginx 官方源Ubuntusudoaptinstall-ycurlgnupg2curl-fsSLhttps://nginx.org/keys/nginx_signing.key|sudoapt-keyadd-sudoadd-apt-repositorydeb https://nginx.org/packages/ubuntu/$(lsb_release-cs)nginxsudoaptupdatesudoaptinstallnginx6. 总结不同场景用什么方式装软件场景推荐方式原因普通软件nginx, mysql, redisyum install或apt install自动解决依赖方便管理需要特定版本的软件先添加官方源再install仓库版本可能旧官方源最新官方仓库没有的软件找第三方源EPEL、PPA或下载 deb/rpm比如yum install epel-release自己写的程序打包成 rpm/deb或写个脚本便于分发和卸载下载单个 rpm/deb 手动安装不推荐除非离线环境会掉进依赖地狱源码编译最后的选择能定制但麻烦升级也难结尾今天这篇信息量爆炸但核心就三件事用户和组谁是谁谁在哪个群文件权限谁能读/写/跑软件管理用包管理器yum/apt从仓库自动安装告别依赖地狱一句话总结useradd加人chmod定规矩yum install装世界。本文由一位曾经在/etc/passwd里手抖删掉 root 行导致系统瘫痪的菜鸟小白整理请珍惜你的 root 权限。如果觉得有用记得点赞收藏⭐哦老铁们Linux系列到此告一段落啦~~ 咱们其他系列见