常用Linux命令(四)

1、uname 命令
uname(Unix Name)是用于‌打印系统信息‌的命令。它主要用于查看内核版本、硬件架构、主机名等关键系统标识,常用于脚本判断环境或排查兼容性问题。

基本语法

uname [选项]

参数说明

参数 长选项 说明 典型输出示例
‌-a‌ --all ‌显示所有信息‌ 🔥 最常用 Linux host 5.4.0... x86_64...
‌-s‌ --kernel-name 内核名称 Linux
‌-n‌ --nodename 主机名(Hostname) my-server
‌-r‌ --kernel-release ‌内核发行版本‌ 5.4.0-42-generic
‌-v‌ --kernel-version 内核详细版本(含编译时间) #46-Ubuntu SMP...
‌-m‌ --machine ‌硬件架构‌ x86_64 (64位), aarch64 (ARM)
‌-p‌ --processor 处理器类型 x86_64 或 unknown
‌-i‌ --hardware-platform 硬件平台 x86_64 或 unknown
‌-o‌ --operating-system 操作系统名称 GNU/Linux

实际使用举例

#快速查看系统全景
uname -a

#最常见的云服务器或物理机(如 Ubuntu, CentOS)
Linux my-server 5.4.0-150-generic #167-Ubuntu SMP Mon May 15 14:16:20 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

#macOS (Apple Silicon M1/M2/M3)
Darwin MacBook-Pro.local 22.5.0 Darwin Kernel Version 22.5.0: Mon Apr 24 20:52:43 PDT 2023; root:xnu-8796.121.2~5/RELEASE_ARM64_T8112 arm64

#macOS (Intel 芯片)
Darwin John-MacBook-Pro.local 19.6.0 Darwin Kernel Version 19.6.0: Thu Jun 18 20:49:00 PDT 2020; root:xnu-6153.141.1~1/RELEASE_X86_64 x86_64


#判断 CPU 架构
uname -m
#x86_64 / amd64: 常见的 Intel/AMD 64位服务器。
#aarch64 / arm64: ARM 架构(如华为鲲鹏、AWS Graviton、Apple M系列芯片)。
#i386 / i686: 老旧的 32位系统。

2、which 命令
which 命令用于在系统的 ‌PATH 环境变量‌指定的目录中,查找可执行文件(命令)的‌绝对路径‌。

简单来说,当你输入一个命令(如 python 或 git)时,which 能告诉你系统实际运行的是哪一个文件。

基本语法

which [选项] [命令名]

实际使用举例

##查看命令的安装位置

which python
##输出: /usr/bin/python

which git
##输出: /usr/bin/git

##排查“命令找不到”或“版本不对”的问题

which java
##输出: /opt/jdk1.8/bin/java

echo $PATH
##检查 PATH 中 /opt/jdk1.8/bin 是否排在其他 Java 路径之前


##查看别名(Alias)的真实指向
which ll
##输出: ll: aliased to ls -l

3、whoami 命令
whoami 是用于‌显示当前有效用户名‌的命令。

基本语法

whoami

实际使用举例

##确认当前登录用户

whoami
# 输出: root

4、su 命令
su(‌S‌witch ‌U‌ser 或 ‌S‌ubstitute ‌U‌ser)是用于‌切换用户身份‌的命令。

它允许你从当前用户切换到另一个用户(通常是 root),从而获得该用户的权限和环境。

基本语法

su [选项] [用户名]

参数说明

参数 说明 示例
‌-‌ 模拟完整登录(Login Shell) su - root
‌-c‌ 以目标用户身份‌执行一条命令‌后退出 su - root -c "systemctl restart nginx"
‌-s‌ 指定使用的 Shell su -s /bin/bash user
‌-l‌ 同 -,使登录 shell su -l root

实际使用举例

##切换到 root 进行系统管理

su - root
## 输入 root 密码
## 现在你是 root 了

##以其他用户身份执行单条命令

## 以 postgres 用户身份执行数据库备份命令
su - postgres -c "pg_dump mydb > backup.sql"

## 以 www-data 用户身份查看文件权限
su - www-data -c "ls -l /var/www/html"

5、sudo 命令
sudo(‌S‌uper ‌U‌ser ‌DO‌)是 Linux 中最核心的权限管理命令。它允许‌普通用户‌以‌超级用户(root)‌或其他指定用户的身份执行命令,而无需知道 root 密码,只需输入‌当前用户‌的密码。

基本语法

sudo [选项] 命令

参数说明

参数 长选项 说明 示例
‌(无)‌ - 以 root 身份执行命令 sudo apt update
‌-i‌ --login ‌模拟 root 登录‌(获取 root Shell)🔥 推荐 sudo -i
‌-s‌ --shell 启动 root 身份的 Shell,但保留部分原环境变量 sudo -s
‌-u‌ --user 以‌指定用户‌身份执行命令 sudo -u postgres psql
‌-l‌ --list 查看当前用户拥有哪些 sudo 权限 sudo -l
‌-k‌ --reset-timestamp ‌清除密码缓存‌(下次必须重新输密码) sudo -k
‌-E‌ --preserve-env 保留当前用户的环境变量 sudo -E ./script.sh

实际使用举例

##一、执行单条特权命令

## 更新软件包列表
sudo apt update

## 重启网络服务
sudo systemctl restart nginx

## 查看只有 root 能读的日志
sudo tail -f /var/log/auth.log

##二、如果你需要连续执行多条管理员命令,每次都输 sudo 很麻烦,可以进入 Root Shell

## 方法1:完全模拟 root 登录(推荐,环境最干净)
sudo -i

## 方法2:仅切换身份,保留部分原环境
sudo -s

## 退出 Root Shell
exit

##三、以其他特定用户身份执行命令


## 以 postgres 用户身份进入数据库
sudo -u postgres psql

## 以 www-data 用户身份创建文件(确保权限正确)
sudo -u www-data touch /var/www/html/test.txt

su vs sudo 的区别

特性 su sudo
‌含义‌ 切换用户身份 以超级用户身份‌执行命令‌
‌密码‌ 输入‌目标用户‌的密码 输入‌当前用户‌的密码
‌权限范围‌ 完全变成另一个用户 临时提升权限,执行完即恢复
‌安全性‌ 较低(需要知道 root 密码) 较高(可精细控制权限,无需共享 root 密码)
‌日志审计‌ 较难追踪具体谁做了什么 /var/log/auth.log 详细记录谁执行了什么
‌适用场景‌ 需要长时间以另一用户身份工作 偶尔执行管理员命令

6、chmod 命令
chmod(‌Ch‌ange ‌Mod‌e)是 Linux 中用于‌修改文件或目录权限‌的命令。

在 Linux 中,每个文件都有三种身份(所有者、所属组、其他人)和三种权限(读、写、执行)。chmod 允许你精确控制谁可以对这个文件做什么。

核心概念:权限与数字
在理解命令前,必须先看懂权限表示法。

A. 字母表示法
用户身份‌:
u (User):文件所有者
g (Group):所属组用户
o (Others):其他用户
a (All):所有用户(默认)
权限类型‌:
r (Read):读权限(数值 ‌4‌)
w (Write):写权限(数值 ‌2‌)
x (Execute):执行权限(数值 ‌1‌)
-:无权限(数值 ‌0‌)
B. 数字表示法(八进制)
将 r, w, x 的数值相加:

rwx = 4+2+1 = ‌7‌
rw- = 4+2+0 = ‌6‌
r-x = 4+0+1 = ‌5‌
r-- = 4+0+0 = ‌4‌
常见组合:‌

777:所有人可读可写可执行(⚠️ ‌极度危险‌,生产环境严禁使用)
755:所有者全权,其他人只读可执行(常用于‌脚本、程序‌)
644:所有者读写,其他人只读(常用于‌配置文件、网页文件‌)
600:仅所有者读写(常用于‌私钥、敏感数据‌)

基本语法

chmod [选项] 权限模式 文件名

实际使用举例

##一、让脚本可执行

## 方法1:数字模式(推荐)
chmod +x install.sh
## 或者
chmod 755 install.sh

## 方法2:字母模式(仅给所有者加执行权)
chmod u+x install.sh

##二、批量修改目录及其子文件权限

## 将 /var/www/html 下所有文件设为 644
sudo chmod -R 644 /var/www/html

## 将 /var/www/html 下所有目录设为 755(注意:这也会把文件设为755,需谨慎)
sudo chmod -R 755 /var/www/html

##三、撤销其他人的写权限

chmod o-w myfile.txt

7、chown 命令
chown(‌Ch‌ange ‌Own‌er)是用于‌修改文件或目录的所有者(Owner)和所属组(Group)‌的命令。

基本语法


chown [选项] [所有者][:所属组] 文件名

参数说明

参数 长选项 说明 示例
‌-R‌ --recursive ‌递归修改‌目录及其内部所有文件 🔥 最常用 chown -R www:www /var/www
‌-v‌ --verbose 显示详细处理过程 chown -v root file
‌-c‌ --changes 仅在发生更改时显示信息 chown -c root file
‌--reference‌ - 参考另一个文件的归属来设置 chown --reference=file1 file2

实际使用举例

##一、修改文件所有者

sudo chown alice myfile.txt


##二、批量修改目录权限


## 将 /var/www/html 及其下所有文件的所有者和组都改为 www-data
sudo chown -R www-data:www-data /var/www/html


8、chgrp 命令
chgrp(‌Ch‌ange ‌Grp‌)是用于‌修改文件或目录所属组(Group)‌的命令。

基本语法


chgrp [选项] 新组名 文件名

参数说明

参数 长选项 说明 示例
‌-R‌ --recursive ‌递归修改‌目录及其内部所有文件 🔥 最常用 chgrp -R developers /project
‌-v‌ --verbose 显示详细处理过程 chgrp -v staff file.txt
‌-c‌ --changes 仅在发生更改时输出信息 chgrp -c staff file.txt
‌--reference‌ - 参考另一个文件的组来设置 chgrp --reference=file1 file2

实际使用举例

##一、将文件移入共享组


## 1. 确保目录属于 devteam 组
sudo chgrp devteam /var/www/project

## 2. 确保组内有写权限(配合 chmod)
sudo chmod g+w /var/www/project


##二、批量修改目录组归属

sudo chgrp -R docker /home/user/docker-files

chown vs chmod vs chgrp

命令 全称 作用对象 典型场景
‌chown‌ Change Owner ‌所有者‌ + ‌所属组‌ “这个文件是谁的?” -> 改主人
‌chgrp‌ Change Group 仅 ‌所属组‌ “这个文件属于哪个团队?” -> 改组
‌chmod‌ Change Mode ‌读/写/执行权限‌ “主人能做什么?其他人能做什么?” -> 改权限
posted @ 2026-06-02 14:28  alex_lau  阅读(40)  评论(0)    收藏  举报