linux系统常见及常用的命令操作(文件查看和编辑、用户、组合权限管理)

linux系统常见及常用命令(超详细:系统篇)-CSDN博客

linux系统常见及常用的命令操作(进程管理、网络通信篇)_linux网络命令-CSDN博客

linux系统常见及常用的命令操作(包管理、文件和目录操作)-CSDN博客

目录

一、文件查看和编辑:

1.cat:查看文件内容并将其打印到标准输出设备

2.more:分页查看文件内容

3.less:分屏显示文件内容,支持上下滚动和搜索

4.head:显示文件的前几行

5.tail:显示文件的末尾几行(常用于查看日志文件)

6.vi或vim:文本编辑器,用于编辑文件内容

7.grep:在文件中搜索特定的文本

8.sed:用于文本替换和文本处理

9.awk:用于文本和数据处理

10.find:在目录树中查找文件

11.wc:计算字数

二、用户、组和权限管理

1. sudo:以超级用户权限执行命令;俗称提权

2. su:切换用户

3. passwd:修改用户密码

4. useradd:建立用户帐号

5. groupadd:添加群组

6. chmod:修改文件或目录的权限

7. chown:修改文件或目录的所有者

8. chgrp:修改文件或目录的所属组

9. id:显示用户的ID,以及所属群组的ID


一、文件查看和编辑:

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:文本编辑器,用于编辑文件内容

        vivim 都是文本编辑器,用于在命令行界面下编辑文件

(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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

重见之日

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值