linux系统常见及常用命令(超详细:系统篇)-CSDN博客
linux系统常见及常用的命令操作(进程管理、网络通信篇)_linux网络命令-CSDN博客
linux系统常见及常用的命令操作(包管理、文件和目录操作)-CSDN博客
目录
一、文件查看和编辑:
1.cat:查看文件内容并将其打印到标准输出设备
cat 是系统中的一个命令行工具,主要用于显示、连接文件。
格式:cat [OPTION]... [FILE]...
OPTION:cat 命令的选项参数(可选)
FILE:要显示或连接的文件(可选)
选项参数:
-A
或--show-all
:等效于-vET
,显示所有内容,包括不可打印字符。-b
或--number-nonblank
:为所有非空行编号。-e
:等效于-vE
,在输出中显示$
以表示行结束,并显示不可打印字符。-E
或--show-ends
:在每行的结尾显示$
符号。-n
或--number
:为所有行编号(包括空行)。-s
或--squeeze-blank
:压缩连续的空行,只保留一个。-T
或--show-tabs
:显示制表符(通常为^I
)。-v
或--show-nonprinting
:显示不可打印字符(除了换行符和制表符)。
- 常用命令操作:
# 使用示例:
# 显示文件内容:
[root@hostname ~]# cat file.txt
# 将文件内容重定向到另一个文件
[root@hostname ~]# cat file1.txt > file2.txt
# 显示行号(包括空行)
[root@hostname ~]# cat -n file.txt
# 压缩连续的空行
[root@hostname ~]# cat -s file.txt
2.more:分页查看文件内容
more
是一个分页工具,常用于逐页查看长文件的内容;主要适用于较长的文件,方便阅读;
格式:more [OPTION]... [FILE]...
OPTION:more 命令的选项参数(可选)
FILE:要查看的文件(可选)
选项参数:
-d
:在显示提示信息时,使用提示符Press space to continue, 'q' to quit
。-f
:将换行符视为单行的终结,而不是每个输入行的结尾。-l
:使more
忽略空行。-c
:在显示内容之前清除屏幕。-p
:类似于-c
,但不清除屏幕。-s
:压缩多个连续的空行为一个空行。-u
:忽略制表符,将制表符视为空格。-x
:设置制表符的宽度(默认是 8)。-n
:在分页显示时,每页显示的行数
- 常用命令操作:
# 使用示例:
# 显示文件内容:(翻到下一页:按 Space 键;退出,q)
[root@hostname ~]# more file.txt
# 查看文件的前几行:(逐行滚动:按 Enter 键)
[root@hostname ~]# more +5 file.txt
# 清除屏幕然后分页
[root@hostname ~]# more -c file.txt
3.less:分屏显示文件内容,支持上下滚动和搜索
less
是一个功能强大的分页工具,类似于 more
,但提供了更多的功能和灵活性;常用,可搜索百度或菜鸟教程,详细查看命令详解
格式:less [OPTION]... [FILE]...
OPTION:less 命令的选项参数(可选)
FILE:要查看的文件(可选)
选项参数:
-N
或--LINE-NUMBERS
:显示行号。-S
或--chop-long-lines
:不自动换行长行,而是水平滚动显示。-X
或--no-init
:启动时不清除屏幕。-F
或--quit-if-one-screen
:如果文件内容能完全显示在一个屏幕上,则自动退出。-P
或--prompt
:自定义提示符。-i
或--ignore-case
:搜索时忽略大小写。-g
:显示搜索匹配项的高亮。-r
或--RAW-CONTROL-CHARS
:显示控制字符。-e
:立即退出后继续查看文件。-c
:清屏后显示内容。
- 常见命令操作:
# 使用示例:
# 显示文件内容:(向前滚动:按 b 键;向后滚动:按 Space 键或 f 键;退出:q)
# 搜索内容:在 less 中按 / 键,然后输入搜索模式,按 Enter 键进行搜索。按 n 键查看下一个匹配项
[root@hostname ~]# less file.txt
# 显示行号:
[root@hostname ~]# less -N file.txt
# 禁用自动换行:(水平滚动长行,不自动换行)
[root@hostname ~]# less -S file.txt
# 搜索时忽略大小写
[root@hostname ~]# less -i file.txt
4.head:显示文件的前几行
head
是一个用于查看文件开头部分内容的命令。它默认显示文件的前 10 行,但可以通过选项调整显示的行数或字节数;常用,可搜索百度或菜鸟教程,详细查看命令详解
格式:head [OPTION]... [FILE]...
OPTION:head 命令的选项参数(可选)
FILE:要查看的文件(可选)
选项参数:
-n NUM
或--lines=NUM
:显示前NUM
行(例如-n 20
显示前 20 行)-c NUM
或--bytes=NUM
:显示前NUM
字节(例如-c 50
显示前 50 字节)-q
或--quiet
:不显示文件名(适用于多文件时)-v
或--verbose
:显示所有文件名(默认行为)
# 使用示例:
# 显示文件的前 10 行
[root@hostname ~]# head file.txt
# 显示文件的前 20 行
[root@hostname ~]# head -n 20 file.txt
# 显示多个文件的前 10 行,并显示文件名
[root@hostname ~]# head file1.txt file2.txt
# 显示文件的前 50 字节
[root@hostname ~]# head -c 50 file.txt
5.tail:显示文件的末尾几行(常用于查看日志文件)
tail
是一个用于查看文件末尾部分内容的命令。它默认显示文件的最后 10 行,但也可以根据需要调整显示的行数或字节数;常用,可搜索百度或菜鸟教程,详细查看命令详解
格式:tail [OPTION]... [FILE]...
OPTION:tail 命令的选项参数(可选)
FILE:要查看的文件(可选)
常用选项:
-n NUM
或--lines=NUM
:显示最后NUM
行(例如-n 20
显示最后 20 行)-c NUM
或--bytes=NUM
:显示最后NUM
字节(例如-c 50
显示最后 50 字节)-f
或--follow
:实时追踪文件的新增内容,适用于监控日志文件-F
或--retry
:与-f
选项类似,但在文件被重新创建时会自动重新打开-q
或--quiet
:不显示文件名(适用于多文件时)-v
或--verbose
:显示所有文件名(默认行为)
- 常见命令操作:
# 使用示例:
# 显示文件的最后 10 行:
[root@hostname ~]# tail file.txt
# 显示文件的最后 20 行:
[root@hostname ~]# tail -n 20 file.txt
# 显示文件的最后 50 字节:
[root@hostname ~]# tail -c 50 file.txt
# 实时追踪文件的新增内容:
[root@hostname ~]# tail -f file.log
6.vi或vim:文本编辑器,用于编辑文件内容
vi
和 vim
都是文本编辑器,用于在命令行界面下编辑文件
(1)vi :传统的文本编辑器
(2)vim:增强版 vi
:改进和扩展了 vi
的功能,提供更多的特性和更好的用户体验
格式:vi [OPTION] [FILE] 或 vim [OPTION] [FILE]
OPTION:可选的命令行选项
FILE:要编辑的文件
基本操作:
普通模式、插入模式、可视模式、末行模式
- 进入编辑模式:按
i
(插入模式)、a
(追加模式)等- 保存并退出:输入
:wq
或:x
。- 退出而不保存:输入
:q!
在 vim 多种模式下,有多种操作,还可以联合正则进行操作,如需了解,可进行单独查询
7.grep:在文件中搜索特定的文本
grep
是一个强大的文本搜索工具,用于在文件或标准输入中查找匹配的文本行
格式:grep [OPTIONS] PATTERN [FILE...]
OPTIONS:选项,用于调整 grep 的行为
PATTERN:要搜索的模式(正则表达式)
FILE:要搜索的文件。可以指定多个文件,也可以从标准输入中读取数据
常见选项:
-i
:忽略大小写-v
:反转匹配,显示不匹配的行-r
或-R
:递归搜索目录及其子目录-l
:仅显示匹配的文件名-n
:显示匹配行的行号-H
:总是显示文件名(即使只有一个文件)-o
:仅显示匹配的部分-E
:使用扩展正则表达式-P
:使用Perl兼容正则表达式(PCRE)-c
:仅显示匹配的行数
- 常见命令操作:
# 使用示例:
# 搜索文件中包含 "error" 的行:
[root@hostname ~]# grep "error" logfile.txt
# 在所有 .log 文件中递归搜索 "warning":
[root@hostname ~]# grep -r "warning" *.log
# 搜索忽略大小写的 "SUCCESS" 并显示行号:
[root@hostname ~]# grep -in "SUCCESS" file.txt
8.sed:用于文本替换和文本处理
sed
是一个流编辑器,用于对文本进行非交互式的编辑。它可以执行各种文本处理任务,如替换、插入、删除等;
格式:sed [OPTIONS] 'COMMAND' [FILE...]
OPTIONS:选项,用于调整 sed 的行为
COMMAND:要执行的编辑命令
FILE:要处理的文件。可以省略,sed 会从标准输入读取数据
常用选项:
-n
:禁止自动打印模式空间的内容。需要配合p
命令使用,以显示匹配的行。-e
:允许在命令行中使用多个编辑命令-f
:从指定的文件中读取编辑命令。-i
:直接在文件中修改(不使用此选项时,sed
会将结果输出到标准输出而不更改原文件)。-r
或-E
:使用扩展正则表达式。
- 常用命令操作:
# 使用示例:
# 替换(s):
# 替换匹配的文本:
[root@hostname ~]# sed 's/old/new/' file.txt
# 替换所有匹配项(加 g 标志):
[root@hostname ~]# sed 's/old/new/g' file.txt
# 替换特定行中的匹配项:
[root@hostname ~]# sed '3s/old/new/' file.txt
# 删除(d):
# 删除匹配的行:
[root@hostname ~]# sed '/pattern/d' file.txt
# 插入(i):
# 在匹配的行前插入文本:
[root@hostname ~]# sed '/pattern/i\New text' file.txt
# 追加(a):
# 在匹配的行后追加文本:
[root@hostname ~]# sed '/pattern/a\Additional text' file.txt
# 替换并打印(p):
# 仅打印匹配的行(与 -n 选项一起使用):
[root@hostname ~]# sed -n '/pattern/p' file.txt
9.awk:用于文本和数据处理
awk
是一种强大的文本处理工具,特别适合于处理以行和字段为基础的文本数据。它常用于格式化文本、提取字段和执行复杂的数据处理任务;
格式:awk [OPTIONS] 'PROGRAM' [FILE...]
OPTIONS:选项,用于调整 awk 的行为
PROGRAM:awk 程序,包括模式和操作
FILE:要处理的文件。可以省略,awk 会从标准输入读取数据
常用选项:
-F
:指定字段分隔符-f
:从指定文件中读取awk
脚本-v
:为awk
程序设置变量-W
:启用警告(如-W compat
启用兼容模式)语法示例:
awk 'pattern { action }' file
pattern
:匹配模式(可以是正则表达式或条件)。{ action }
:在模式匹配时执行的操作。
# 常用模式和操作示例:
# 打印字段(print):
# 打印文件中的所有行:
[root@hostname ~]# awk '{print}' file.txt
# 打印特定字段:打印每行的第一个和第三个字段
[root@hostname ~]# awk '{print \$1, \$3}' file.txt
# 字段分隔符(-F):
# 使用空格作为字段分隔符(默认):
[root@hostname ~]# awk '{print \$1}' file.txt
# 使用逗号作为字段分隔符:
[root@hostname ~]# awk -F ',' '{print \$1}' file.txt
# 模式匹配:
# 打印包含 "pattern" 的行:
[root@hostname ~]# awk '/pattern/' file.txt
# 只处理匹配的行:
[root@hostname ~]# awk '/pattern/ {print \$1}' file.txt
# 条件操作:
# 打印第二列值大于 100 的行:
[root@hostname ~]# awk '\$2 > 100 {print \$0}' file.txt
# 字段和行处理:
# 打印每行的行号:
[root@hostname ~]# awk '{print NR, \$0}' file.txt
# 计算文件中第二列的总和:
[root@hostname ~]# awk '{sum += \$2} END {print sum}' file.txt
# 内置变量:
NR:当前记录的行号
NF:当前记录的字段数
FS:字段分隔符(默认为空格)
OFS:输出字段分隔符(默认为空格)
# 打印文件的前两列:
[root@hostname ~]# awk '{print \$1, \$2}' file.txt
# 统计每个字段的出现次数:
[root@hostname ~]# awk '{count[\$1]++} END {for (word in count) print word, count[word]}' file.txt
# 格式化输出:将每行的第一列和第三列格式化为宽度为 10 和 15 的字段:
[root@hostname ~]# awk '{printf "%-10s %-15s\n", \$1, \$3}' file.txt
10.find:在目录树中查找文件
find
命令是一个强大的文件查找工具,用于在文件系统中查找文件和目录。它可以根据各种条件(如名称、大小、修改时间等)来搜索文件,并可以对找到的文件执行操作;
格式:find [path] [options] [expression]
path:指定要搜索的路径。如果省略,find 默认搜索当前目录
options:find 命令的选项,用于控制搜索的行为
expression:用于匹配文件的条件和操作
常用选项:
-name
:根据文件名匹配-iname
:根据文件名匹配(忽略大小写)-type
:根据文件类型匹配
d
:目录l
:符号链接c
:字符设备b
:块设备-size
:根据文件大小匹配
b
:512 字节(默认单位)c
:字节k
:千字节M
:兆字节G
:吉字节-mtime
:根据修改时间匹配
+n
:大于 n 天-n
:小于 n 天n
:正好 n 天-atime
:根据访问时间匹配-ctime
:根据状态更改时间匹配-user
:根据文件所有者匹配-group
:根据文件所属组匹配-perm
:根据文件权限匹配
- 常用命令操作:
# 使用示例:
# -exec:对找到的文件执行命令:
[root@hostname ~]# find /path/to/search -name "*.txt" -exec wc -l {} \;
解释:对每个 .txt 文件执行 wc -l 命令,{} 是匹配到的文件名,\; 表示命令的结束
# -print:打印文件路径(通常是默认操作)
[root@hostname ~]# find /path/to/search -name "*.log" -print
# -delete:删除匹配的文件
[root@hostname ~]# find /path/to/search -name "*.tmp" -delete
解释:删除所有以 .tmp 结尾的文件。注意:使用此选项时要小心,因为文件将被永久删除
# 组合条件:
# -and:逻辑与:
[root@hostname ~]# find /path/to/search -type f -name "*.conf" -and -size -1M
解释:匹配类型为文件且文件名以 .conf 结尾且小于 1 MB 的文件
# -or:逻辑或:
[root@hostname ~]# find /path/to/search -name "*.jpg" -or -name "*.png"
解释:匹配所有 .jpg 或 .png 文件
# ! 或 -not:逻辑非:
[root@hostname ~]# find /path/to/search ! -name "*.bak"
解释:匹配所有不以 .bak 结尾的文件
# -prune:排除目录:
[root@hostname ~]# find /path/to/search -type d -name "exclude_dir" -prune -o -name "*.txt" -print
解释:排除名为 exclude_dir 的目录,但仍搜索其他 .txt 文件
# 查找并删除超过 30 天未修改的日志文件:
[root@hostname ~]# find /var/log -name "*.log" -mtime +30 -delete
# 查找特定目录下的所有大小超过 100 MB 的文件,并显示其详细信息:
[root@hostname ~]# find /path/to/dir -type f -size +100M -ls
# 查找所有由当前用户创建的 .pdf 文件并计数:
[root@hostname ~]# find /home/user -type f -user $(whoami) -name "*.pdf" | wc -l
11.wc:计算字数
wc
(word count)命令是一个用于计算文件中的行数、字数和字符数的工具。它常用于统计文本文件的基本信息;
格式:wc [options] [file...]
options:控制 wc 命令输出的内容
file:要统计的文件。如果省略,wc 将从标准输入读取数据
常用选项:
-l
:显示行数-w
:显示字数-c
:显示字符数:-m
:显示字符数(每个字符)-L
:显示最长行的长度-h
:以更易读的格式显示文件大小
# 使用示例:
# 计算文件的行数、字数和字符数:
[root@hostname ~]# wc filename
解释:输出格式通常是:行数、字数、字符数和文件名
# 计算多个文件的行数、字数和字符数
[root@hostname ~]# wc file1 file2
解释:对于多个文件,wc 会逐个显示每个文件的统计信息,并在最后输出总计
# 计算标准输入的行数、字数和字符数:
[root@hostname ~]# echo "Hello world" | wc
解释:输出是标准输入的行数、字数和字符数。在这里,它会显示 1 2 11,表示 1 行,2 个单词,11 个字符
# 计算文件中的行数:
[root@hostname ~]# wc -l filename
解释:只输出文件的行数
# 只输出文件的行数:
[root@hostname ~]# wc -L filename
解释:输出文件中最长行的字符数
# 实际应用:
# 检查日志文件的大小:输出文件的字节数,帮助了解日志文件的大小
[root@hostname ~]# wc -c /var/log/syslog
# 统计一组文件的行数总和:统计所有以 .txt 结尾的文件的行数,并显示总计
[root@hostname ~]# wc -l *.txt
# 查找文本中最长的一行
[root@hostname ~]# wc -L file.txt
注意事项:
wc
命令统计的字符数可能会因为不同的字符编码(如 UTF-8 和 ASCII)而有所不同。在使用-c
时,wc
统计的是字节数,对于多字节字符集,实际字符数可能会更少。- 使用
wc
时可以结合其他命令进行更复杂的处理。例如,你可以使用管道将wc
与其他命令结合,处理来自命令输出的数据。
二、用户、组和权限管理
1. sudo:以超级用户权限执行命令;俗称提权
sudo
是一个用于以超级用户(root)或其他用户的身份运行命令的工具
格式:sudo [OPTION] COMMAND [ARGUMENTS...]
OPTION:用于修改 sudo 的行为的选项
COMMAND:要执行的命令
ARGUMENTS:传递给命令的参数
常用选项:
-h
或--help
:显示帮助信息
-V
或--version
:显示版本信息
-k
:使任何现有的sudo
过期
-l
:列出当前用户的权限
-u USER
:以指定用户的身份运行命令
-i
:以 root 用户的身份启动一个交互式 shell
-s
:以当前用户的环境启动一个 shell
# 使用示例:
# 以 root 权限执行命令
[root@hostname ~]# sudo apt update
解释:这条命令使用 sudo 执行 apt update,更新软件包列表
# 以特定用户身份运行命令
[root@hostname ~]# sudo -u username command
# 安装软件包:
[root@hostname ~]# sudo apt install package-name
# 编辑系统文件:
[root@hostname ~]# sudo nano /etc/hosts
# 列出用户的 sudo 权限
[root@hostname ~]# sudo -l
注意事项:
- 安全性:使用
sudo
可以避免直接以 root 身份登录,从而增加系统安全性。只有授权用户才能执行特权命令。- 密码:第一次使用
sudo
命令时,系统会要求输入用户密码,以确保执行此操作的用户具有sudo
权限。- 权限缓存:
sudo
默认会在一段时间内缓存用户的授权状态,在此期间不需要再次输入密码。- 使用慎重:通过
sudo
执行的命令可以对系统产生重大影响,因此在使用时应谨慎。
2. su:切换用户
su
(substitute user)命令用于在 Unix 和 Linux 系统中切换用户身份。它允许用户以另一个用户的身份执行命令或启动一个新的 shell;
格式:su [OPTION] [USER]
OPTION:用于修改 su 行为的选项
USER:要切换到的目标用户,如果不指定用户,则默认为 root 用户
常用选项:
-
或-l
(或--login
):模拟用户登录-c COMMAND
:以指定用户身份执行命令-s SHELL
:指定 shell-
(单独使用):切换到 root 用户并模拟完整的登录环境
- 常用命令操作:
# 使用示例:
# 切换到 root 用户:
[root@hostname ~]# su
解释:切换到 root 用户,需要输入 root 用户的密码
# 以指定用户身份启动 shell:
[root@hostname ~]# su - username
解释:切换到 username 用户,并模拟登录环境
# 以指定用户身份执行命令:
[root@hostname ~]# su -c 'ls /home/username' username
解释:使用 username 的权限执行 ls 命令
# 切换到 root 并执行特定命令:
[root@hostname ~]# su -c 'apt update'
解释:使用 root 权限执行 apt update 命令
注意事项:
- 密码:使用
su
切换到其他用户(特别是 root 用户)时,需要输入目标用户的密码。- 安全性:与
sudo
不同,su
需要输入目标用户的密码,不仅限于授权用户,这可能会带来安全隐患。使用sudo
可以更细粒度地控制权限。- 环境变量:使用
su -
或su -l
时,目标用户的环境变量和工作目录会被加载。这与直接使用su
不同,后者不会模拟用户的完整登录环境。
3. passwd:修改用户密码
passwd
命令用于在 Unix 和 Linux 系统中更改用户的密码。它允许用户更新自己的密码,或者系统管理员更改其他用户的密码;
格式:passwd [OPTION] [USER]
OPTION:用于修改 passwd 命令行为的选项
USER:指定要更改密码的用户。如果省略,则默认更改当前用户的密码
常用选项:
-d
(删除密码):删除指定用户的密码,使用户帐户没有密码保护。用户将需要通过其他方式进行验证;-e
(立即过期):使用户密码立即过期,用户在下次登录时必须更改密码;-l
(锁定帐户):锁定用户帐户,防止用户使用密码登录。此操作会在用户的密码中插入一个特殊字符,防止用户使用密码进行身份验证;-u
(解锁帐户):解锁之前被锁定的用户帐户;-n
(设置最小密码年龄):指定用户密码的最小有效期(天数)。在此期间内,用户不能更改密码;-x
(设置最大密码年龄):指定用户密码的最大有效期(天数)。超过此期限后,用户需要更改密码-w
(设置密码过期警告期限):指定用户密码过期前的警告天数-i
(设置密码过期后账户被禁用的天数):设置用户密码过期后账户被禁用的天数
- 常用命令操作:
# 使用示例:
# 更改当前用户的密码:
[root@hostname ~]# passwd
解释:执行该命令后,系统会提示输入当前密码和新密码,然后确认新密码
# 更改指定用户的密码:
[root@hostname ~]# sudo passwd username
解释:作为超级用户(或使用 sudo),更改 username 的密码。需要输入当前用户的密码以验证操作权限
# 删除指定用户的密码:
[root@hostname ~]# sudo passwd -d username
解释:删除用户 username 的密码,账户将没有密码保护
4. useradd:建立用户帐号
useradd
命令是用于在 Unix 和 Linux 系统中创建新用户的工具。它允许系统管理员添加新的用户账户并配置一些基本的用户属性
格式:useradd [OPTION] USERNAME
USERNAME:要创建的新用户的用户名
常用选项:
-b
(--base-dir
):指定用户主目录的基本路径。默认情况下,用户主目录将被创建在/home
下;-c
(--comment
):为用户添加描述信息。通常用来设置用户的全名或其他描述;-d
(--home
):指定用户的主目录。如果未指定,系统通常会在/home
下创建一个以用户名命名的目录;-e
(--expiredate
):设置用户账户的过期日期。格式为YYYY-MM-DD;
-f
(--inactive
):设置密码过期后的账户禁用天数。设置为 0 表示密码过期后立即禁用账户;-g
(--gid
):指定用户的主组。gid
可以是组的名称或 GID(组标识符)。默认情况下,用户会创建一个与其用户名相同的主组;-G
(--groups
):指定用户所属的附加组,多个组用逗号分隔;-m
(--create-home
):如果未指定主目录,则创建用户主目录。默认情况下,当指定了-d
选项时,系统不会创建目录,除非使用了-m;
-p
(--password
):为用户指定初始密码。密码通常以加密格式传递;-s
(--shell
):指定用户的登录 shell。默认通常是/bin/bash;
-u
(--uid
):指定用户的 UID(用户标识符)。UID 必须是唯一的;-r
(--system
):创建一个系统账户。系统账户通常用于系统服务和守护进程,它们的 UID 通常低于 1000;-k
(--skel
):指定 skeleton 目录,从中复制文件到新用户的主目录;
# 使用示例:
# 创建一个简单的用户:
[root@hostname ~]# useradd username
解释:这将创建一个名为 username 的用户,默认情况下创建主目录 /home/username,主组和默认 shell。
# 创建用户并指定主目录:
[root@hostname ~]# useradd -d /home/customdir username
解释:创建用户 username 并将其主目录设置为 /home/customdir
# 创建用户并设置初始密码:
[root@hostname ~]# useradd -p $(openssl passwd -1 'password') username
解释:使用加密形式的密码设置用户 username 的初始密码为 'password'。openssl passwd -1 用于生成加密密码
# 创建用户并指定用户组:
[root@hostname ~]# useradd -g groupname username
解释:创建用户 username 并将其主组设置为 groupname
注意事项:
- UID 和 GID:创建用户时,
UID
和GID
应确保唯一,以避免与现有账户冲突。- 密码:创建用户后,通常需要使用
passwd
命令设置或更改用户的密码。- 系统账户:使用
-r
选项创建的系统账户通常不需要设置密码,因为它们用于系统服务。
5. groupadd:添加群组
groupadd
命令用于在 Unix 和 Linux 系统中创建新的用户组。用户组用于将多个用户组织在一起,以便进行权限管理和资源共享
格式:groupadd [OPTION] GROUPNAME
GROUPNAME:要创建的新用户组的名称
常用选项:
-g
(--gid
):指定用户组的 GID(组标识符)。GID 必须是唯一的,不与现有组冲突。如果未指定,系统会自动分配一个可用的 GID;
-o
(--non-unique
):允许创建一个具有非唯一 GID 的组。如果指定了-g
选项,并且系统上已经存在一个具有相同 GID 的组,则可以使用-o
选项
-r
(--system
):创建一个系统组。系统组的 GID 通常低于 1000。系统组主要用于系统服务和守护进程,通常不用于普通用户
- 常用命令操作:
# 使用示例:
# 创建一个简单的用户组:
[root@hostname ~]# groupadd groupname
解释:创建一个名为 groupname 的用户组。系统会自动分配一个唯一的 GID
# 创建一个具有特定 GID 的用户组
[root@hostname ~]# groupadd -g 1001 groupname
解释:创建一个名为 groupname 的用户组,指定 GID 为 1001。如果 GID 1001 已经存在且不使用 -o 选项,则会报错
# 创建一个具有非唯一 GID 的用户组:
[root@hostname ~]# groupadd -g 1001 -o groupname
创建一个名为 groupname 的用户组,使用 GID 1001,即使 GID 1001 已经存在于其他组中(通常不推荐这样做)
# 创建一个系统组:
[root@hostname ~]# groupadd -r systemgroup
解释:创建一个名为 systemgroup 的系统组,系统会自动分配一个适合系统组的 GID,通常低于 1000
注意事项:
- GID 唯一性:确保指定的 GID 不与现有组冲突。如果使用默认 GID,系统会自动分配一个唯一的 GID。
- 权限管理:用户组通常用于权限管理。可以将文件或目录的权限设置为特定用户组,以便组内用户共享访问权限。
- 系统组:系统组用于系统服务和守护进程,不应将普通用户加入到系统组中。
6. chmod:修改文件或目录的权限
chmod
命令用于更改文件或目录的权限。在 Unix 和 Linux 系统中,文件和目录的权限决定了用户对这些资源的访问控制;
格式:chmod [OPTION] MODE FILE
MODE:指定权限的设置方式
FILE:要更改权限的文件或目录名
权限表示:
权限通常由三组组成:
所有者(User,
u
)、组(Group,g
)和其他人(Others,o
)。每组权限包括读(
r
)、写(w
)和执行(x
)权限。权限可以通过数字或符号模式指定。
符号模式:
- 添加权限:
u+r
:为所有者添加读权限g+w
:为组添加写权限o+x
:为其他人添加执行权限- 删除权限:
u-r
:为所有者删除读权限g-w
:为组删除写权限o-x
:为其他人删除执行权限- 设置确切权限:
u=rwx
:为所有者设置读、写和执行权限g=rw
:为组设置读和写权限(无执行权限)o=r
:为其他人设置读权限- 数字模式:
4
:读权限(r)2
:写权限(w)1
:执行权限(x)7
:读、写和执行权限(rwx)权限可以用三个八进制数字表示,每个数字代表所有者、组和其他人的权限
- 例如:
755
:所有者拥有读、写、执行权限,组和其他人拥有读和执行权限。644
:所有者拥有读和写权限,组和其他人拥有读权限。
- 常用命令操作:
# 使用示例:
# -R(--recursive):递归地更改目录及其子目录和文件的权限
[root@hostname ~]# chmod -R 755 directory/
# -c(--changes):仅在权限更改时显示消息
[root@hostname ~]# chmod -c 755 file.txt
# -v(--verbose):显示详细信息,包括所有更改
[root@hostname ~]# chmod -v 755 file.txt
# 为所有者、组和其他人设置不同权限
[root@hostname ~]# chmod u=rwx,g=rx,o=r file.txt
# 递归地为目录及其所有内容设置权限
[root@hostname ~]# chmod -R 755 directory/
# 将权限设置为数字模式
[root@hostname ~]# chmod 644 file.txt
7. chown:修改文件或目录的所有者
chown
命令用于更改文件或目录的所有者和/或所属组
格式:chown [OPTION] [OWNER][:[GROUP]] FILE...
OWNER:指定新所有者的用户名或用户ID(UID)
GROUP:指定新组名或组ID(GID)。如果不指定,则默认为所有者的默认组
FILE:要更改所有者或组的文件或目录名
常用选项:
-R
(--recursive
):递归地更改目录及其所有子目录和文件的所有者和/或组
-c
(--changes
):仅显示已更改的文件或目录的详细信息
-v
(--verbose
):显示详细信息,包括所有的更改情况
- 常用命令操作:
# 使用示例:
# 更改文件所有者:
[root@hostname ~]# chown user file.txt
解释:这将把 file.txt 的所有者更改为 user,不更改组
# 更改文件所有者和组
[root@hostname ~]# chown user:group file.txt
解释:这将把 file.txt 的所有者更改为 user,组更改为 group
# 仅更改组
[root@hostname ~]# chown :group file.txt
解释:这将把 file.txt 的组更改为 group,不更改所有者
# 递归地更改目录及其所有内容的所有者和组
[root@hostname ~]# chown -R user:group directory/
解释:这将把 directory/ 目录及其所有子目录和文件的所有者更改为 user,组更改为 group
# 使用参考文件更改所有者和组
[root@hostname ~]# chown --reference=ref_file.txt file.txt
解释:这将把 file.txt 的所有者和组设置为与 ref_file.txt 相同的所有者和组
注意事项:
chown
命令需要具有适当的权限。通常,只有超级用户(root)可以更改文件或目录的所有者。- 更改文件的所有者或组可能会影响文件的访问权限和系统的安全性,因此需要谨慎操作。
8. chgrp:修改文件或目录的所属组
chgrp
命令用于更改文件或目录的所属组
格式:chgrp [OPTION] GROUP FILE...
GROUP:指定新组名或组ID(GID)。这个组将被设置为文件或目录的所属组
FILE:要更改所属组的文件或目录名
常用选项:
-R
(--recursive
):递归地更改目录及其所有子目录和文件的所属组
-c
(--changes
):仅显示已更改的文件或目录的详细信息
-v
(--verbose
):显示详细信息,包括所有的更改情况
- 常用命令操作:
# 使用示例:
# 更改文件所属组:
[root@hostname ~]# chgrp group file.txt
解释:这将把 file.txt 的所属组更改为 group,不更改所有者
# 递归地更改目录及其所有内容的所属组
[root@hostname ~]# chgrp -R group directory/
解释:这将把 directory/ 目录及其所有子目录和文件的所属组更改为 group
# 使用参考文件更改所属组
[root@hostname ~]# chgrp --reference=ref_file.txt file.txt
解释:这将把 file.txt 的所属组设置为与 ref_file.txt 相同的组
# 显示更改的信息
[root@hostname ~]# chgrp -v group file.txt
解释:这将显示 file.txt 的所属组更改的详细信息
9. id:显示用户的ID,以及所属群组的ID
id
命令用于显示当前用户或指定用户的用户ID(UID)和组ID(GID)
格式:id [OPTION] [USER]
USER:可选参数,指定要查询的用户。如果省略,则显示当前用户的信息
常见选项:
-u
(--user
):仅显示用户ID(UID)
-g
(--group
):仅显示主组ID(GID)
-G
(--groups
):显示所有附加组的ID(GID)
-n
(--name
):以用户名或组名的形式显示ID。如果与-u
或-g
一起使用,将显示用户名或组名
-r
(--real
):显示实际的UID和GID,而不是有效的(在有些系统中可能有所不同)
-a
(--all
):显示所有可用的信息(如果系统支持)
- 常用命令操作:
# 使用示例:
# 显示当前用户的所有信息
id
解释:输出包括用户ID(UID)、主组ID(GID)以及所有附加组的ID
# 显示当前用户的UID
id -u
解释:输出仅显示用户ID
# 显示当前用户的主组GID
id -g
解释:输出仅显示主组ID
# 显示当前用户的所有附加组ID
id -G
解释:输出显示所有附加组的ID