文科小白从零开始学习Linux系统第六天之Linux系统文件与目录管理最终部分和用户与组管理第一部分

目录

前言

第二部分:Linux系统文件与目录内容检索

一、文件和目录内容检索处理命令

6、cut切割

7、which命令

8、whereis命令

9、diff命令

二、文件与目录归档压缩命令

1、tar

2、zip/unzip

3、gzip / gunzip

4、bzip2 / bunzip2

5、xz / unxz

三、统计命令

1、wc

2、du

3、高级工具 ncdu

Linux用户与组管理

一、用户与组概述

1、用户类型

2、用户和用户组关系

3、用户和用户组配置文件

二、用户管理

1、useradd命令

结语


前言

今天学习了文件与目录管理的最后一部分,最好还是在练习中熟悉命令的用法,注意区分不同命令对应的不同路径和文件,避免使用的命令和路径或文件不符的情况;此外还学习了用户与组管理的一小部分,主要是概述和useradd命令,记住每个字符段所代表的具体意思是重点。

第二部分:Linux系统文件与目录内容检索

一、文件和目录内容检索处理命令

6、cut切割

cut 是 Unix 和类 Unix 系统中的命令,用于根据指定的字符分隔符从输入中提取字段。cut 命令用于处理文本文件,通常与管道 (|) 和其他命令一起使用,以进一步处理和分析文本数据。

语法:

cut [options] [field-spec]

选项:

选项作用
-f通过指定哪一个字段进行提取。cut命令使用“TAB”作为默认的字段分割符
-d“TAB”是默认的分隔符,使用此选项可更改为其他的分隔符
-c以字符为单位进行分割
- -complement用于排除所指定的字段
- -output-delimiter更改输出内容的分隔符
-s跳过空白字段
-b, -B仅打印非空白的字段。

案例:

以下是使用 cut 命令的一些示例:

  1. 提取指定范围内的字段:(连续)

cut -d ':' -f 1-3 file.txt
  1. 使用制表符作为分隔符提取字段:

cut -d $'\t' -f 1 file.txt
  1. 提取指定文件中的所有字段:

cut -d ':' -f * file.txt
  1. 仅提取非空白字段:

cut -b 3 file.txt
  1. 使用通配符提取多个字段:(可以不连续)

cut -d':' -f 1,2,3 file.txt
  1. 统计messages(系统)日志每个时间点产生日志的条目数量

cut -d' ' -f 4 messages | cut -d ':' -f 1 | uniq -c
  1. 统计web站点访问用户数

[root@c2407 nginx]# cat access.log  | cut -d " " -f 1 | uniq -c
     12 192.168.115.1
     25 192.168.115.100

7、which命令

which 命令在 Unix 和类 Unix 系统中用于查找一个命令的完整路径。当您输入一个命令名称时,which 命令会告诉您该命令位于哪个文件系统中。which 命令通常用于确认命令是否存在于系统 PATH 中,或者用于在脚本中获取命令的确切路径。如果您想要查找的命令不存在于 PATH 中,which 命令将不会返回任何输出。

语法:

which [command]

选项:

选项作用
-a 或 --all打印所有匹配的命令路径,而不仅仅是第一个匹配的。
-p 或 --print-path除了命令名称外,还打印出完整的路径。
-v 或 --version打印 which 命令的版本信息。

案例:

8、whereis命令

whereis 命令在 Unix 和类 Unix 系统中用于查找二进制文件、源代码文件和手册页的位置。它搜索默认的文件系统路径来确定指定命令的相关文件。

语法:

whereis [-bms] [-u] [-f] [-h] [-L] [-M] [-S] [-version] [command]

选项:

选项作用
-b 或 --binary只查找二进制文件。
-m 或 --manual只查找手册页。
-s 或 --source只查找源代码文件。
-u 或 --usage打印使用说明。
-f 或 --follow跟随符号链接。
-h 或 --help打印帮助信息。
L 或 --logical搜索逻辑路径,不包含物理符号链接。
-M 或 --physical搜索物理路径,不包含逻辑符号链接。
-S 或 --size只查找指定大小的文件。

案例:

9、diff命令

语法:

diff [选项] 文件1 文件2

选项:

选项作用
-q 或 --quiet只输出文件差异的文件名,不显示详细差异。
-c 或 --context以语境方式显示差异,默认显示3个字符的上下文。
-u 或 --unified以统一的方式显示差异,这是默认模式,显示共同的祖先与当前文件之间的差异。
-a 或 --text比较文本文件,忽略文件的格式差异。
-b 或 --ignore-space-change忽略空白的差异(空格、制表符等)。
-B 或 --ignore-space-at-eol忽略每行末尾的空白差异。
-i 或 --ignore-case忽略大小写差异。
-D 或 --horizontal-split以水平分割的方式显示差异。
-E 或 --sideby-side以并排的方式显示差异。
-l 或 --from-file只显示文件2相对于文件1的差异。
-r 或 --recursive递归地比较目录。
-N 或 --new-file当文件2是文件1不存在的文件时,只显示文件2的内容。
-x 或 --exclude跳过指定模式的文件。
-X 或 --exclude-from从指定的文件中读取排除模式。
--from-file=FILE同 -l,指定比较的基准文件。
--horizontalsplit同 -D,以水平分割的方式显示差异。
--left-column只显示左侧列的差异。
--no-dereference不解析符号链接。
--old-file当文件1是文件2不存在的文件时,只显示文件1的内容。
--recursive同 -r,递归地比较目录。
--right-column只显示右侧列的差异。
--speed-large-files用于大文件,减少内存使用。

案例:

[root@c2407 opt]# diff /etc/passwd ./passwd 
44d43
< nginx:x:988:982:Nginx web server:/var/lib/nginx:/sbin/nologin

二、文件与目录归档压缩命令

1、tar

归档命令

语法:

tar [选项] [归档文件名] [-C] [解压路径]

选项:

选项作用
-z,--gzip用 gzip 对存档压缩
-c, --create建立新的存档
-v, --verbose详细显示处理的文件
-f, --file指定存档文件路径及名称
-j, --bzip2通过 bzip2 过滤归档
-x, --extract, --get从归档中解出文件
-C指定解压后的存储路径
tvf仅查看归档包中的文件内容
--same-owner保留文件所有者(需root权限)
-J使用xz压缩

案例:

  1. 压缩

tar -czvf archive.tar.gz /path       # 使用gzip压缩
tar -cjvf archive.tar.bz2 /path     # 使用bzip2压缩
tar -cJvf archive.tar.xz /path      # 使用xz压缩
  1. 解压

tar -xvf archive.tar -C /target/path  # 解压到指定目录

2、zip/unzip

语法:

zip 压缩后的文件名 需要压缩的文件

解压缩命令:

unzip 压缩文件名

3、gzip / gunzip

默认压缩后源文件消失

语法:

gzip 需要压缩的文件
gzip -k filename       # 保留原文件

解压缩命令:

默认解压后源文件消失

gunzip 压缩文件
gunzip -k 压缩文件

4、bzip2 / bunzip2

压缩后源文件消失,压缩率最高

语法:

bzip2 需要压缩的文件

解压缩命令:

解压后源文件消失

bunzip2 压缩文件

5、xz / unxz

  • 压缩文件

    xz filename            # 生成filename.xz
  • 解压文件

    unxz filename.xz

工具对比

工具/格式压缩率速度典型扩展名特点
gzip.gz通用,适合文本文件
bzip2.bz2高压缩率,适合大文件
xz极高最慢.xz最高压缩率,资源消耗大
zip.zip跨平台(Windows兼容)
tar.tar仅归档,需配合压缩工具使用

三、统计命令

1、wc

统计文件内容的行数、字符数、单词数

wc -l file.txt            # 统计文件行数(常用日志分析)
wc -c file.txt            # 统计字节数
wc -m file.txt            # 统计字符数(与字节数区别在UTF-8环境)
wc -w file.txt            # 统计单词数(以空格分隔)
wc -L file.txt            # 统计最长行的长度

2、du

统计文件占用磁盘空间的容量

du -sh /path/to/dir       # 统计目录总大小(-s汇总,-h人性化显示)
du -h --max-depth=1 /var  # 显示/var下一级子目录大小
du -ah /path              # 显示所有文件及子目录大小(含隐藏文件)

3、高级工具 ncdu

ncdu /path/to/dir          # 交互式分析目录占用(按大小排序,支持删除)
ncdu -x /                  # 不跨越文件系统边界扫描

Linux用户与组管理

一、用户与组概述

与windows类似,Linux也有用户和用户组的概念。在Linux系统中,每次登录系统都必须以一个用户的身份登录,并且登录后的权限也会根据用户身份来确定。 每一个进程在执行时,也会有其用户,该用户也和进程所能控制的资源有关。Linux系统下的每一个目录、文件,都会有其属于的用户和用户组,我们称其为属主和属组。由此可见,用户和用户组与Linux系统的运行息息相关。在实际操作使用系统时,我们往往较多关注用户与用户组。

在Linux系统中,每个用户都有自己的用户ID,称为UID,每个用户组也有自己的用户组ID,称为GIDUID和GID在Linux系统中是不可重复的。Linux系统就是通过UID和GID来对用户和组进行管理的,而对于管理员来说,往往会设置用户名和组名,这样使得用户和用户组的使用管理更人性化。

1、用户类型

  • root用户

root用户时UID和GID都等于0的用户,是Linux系统中的“上帝”,拥有最大的权限。如果深入了解Linux系统,会发现root用户真的拥有很多特权,比如:无视Linux对权限的设置而强行读、写、执行文件,切换其他用户登录不需要密码,可以强行切换到已经存在的用户,只有root可以为普通用户修改密码等等。

  • 系统用户 (程序用户)

系统用户通常用于运行服务,但是此用户无家目录,也不能用于登录系统。例如,在yum安装apache、nginx等服务后,就会自动创建apache和nginx的用户和同名用户组。在CentOS6系统中,系统用户的UID范围是1-499,在CentOS7系统中,系统用户的ID是1-999

  • 普通用户

普通用户只能由root用户创建,该用户拥有家目录,并且可以登录,该用户的权限由root分配。普通用户拥有指定的shell环境。

2、用户和用户组关系

在Linux系统中,每个用户必定属于一个主组(基本组),默认情况下属于与其同名的用户组,最多可以有31个附属组,从用户权限的角度看,主组和附属组其实差别不大,用户也会拥有其附属组的组相关权限。

3、用户和用户组配置文件

Linux系统下用户和用户组相关的配置文件主要有以下几个:

  • /etc/passwd

存储用户信息

tail -1 /etc/passwd
user10:x:1014:1014::/home/user10:/bin/bash
#用户名:密码占位符:用户ID:组ID:用户描述信息:用户家目录:登录shell
  • /etc/shadow

该配置文件保存了用户的密码信息 。

tail -1 /etc/shadow
user2:!!:19522:0:99999:7:::
#用户名:密码:用户创建时间:密码最短使用期限:密码最长使用期限:密码过期提醒时间:密码过期后的宽容时间:密码过期时间:没用

注意: !! 表示该用户没有设置密码。

! 表示用户密码被锁定,该用户无法登录操作系统。

  • /etc/group

该文件保存了用户组的信息 。

tail -1 /etc/group
nginx:x:982:
#组名:占位符:组ID:非基本组的组成员
  • /etc/gshadow

该文件保存了用户组的密码。

  • /etc/login.defs

该文件可以设置密码过期时间,密码最大长度限制等内容。影响的是新创建的用户密码信息。

[root@ansible ~]# cat /etc/login.defs 
#
# Please note that the parameters in this configuration file control the
# behavior of the tools from the shadow-utils component. None of these
# tools uses the PAM mechanism, and the utilities that use PAM (such as the
# passwd command) should therefore be configured elsewhere. Refer to
# /etc/pam.d/system-auth for more information.
#
​
# *REQUIRED*
#   Directory where mailboxes reside, _or_ name of file, relative to the
#   home directory.  If you _do_ define both, MAIL_DIR takes precedence.
#   QMAIL_DIR is for Qmail
#
​
#QMAIL_DIR  Maildir
MAIL_DIR    /var/spool/mail
#MAIL_FILE  .mail
​
# Password aging controls:
#
#   PASS_MAX_DAYS   Maximum number of days a password may be used.
#   PASS_MIN_DAYS   Minimum number of days allowed between password changes.
#   PASS_MIN_LEN    Minimum acceptable password length.
#   PASS_WARN_AGE   Number of days warning given before a password expires.
#
PASS_MAX_DAYS   99999
PASS_MIN_DAYS   0
PASS_MIN_LEN    5
PASS_WARN_AGE   7
​
#
# Min/max values for automatic uid selection in useradd
#
UID_MIN                  1000
UID_MAX                 60000
# System accounts
SYS_UID_MIN               201
SYS_UID_MAX               999
​
#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN                  1000
GID_MAX                 60000
# System accounts
SYS_GID_MIN               201
SYS_GID_MAX               999
​
#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD    /usr/sbin/userdel_local
​
#
# If useradd should create home directories for users by default
# On RH systems, we do. This option is overridden with the -m flag on
# useradd command line.
#
CREATE_HOME yes
​
# The permission mask is initialized to this value. If not specified, 
# the permission mask will be initialized to 022.
UMASK           077
​
# This enables userdel to remove user groups if no members exist.
#
USERGROUPS_ENAB yes
​
# Use SHA512 to encrypt password.
ENCRYPT_METHOD SHA512
​
  • /etc/skel目录

作用: 用户创建时默认文件的模版目录

[root@c2407 skel]# ls -a
.  ..  .bash_logout  .bash_profile  .bashrc  .mozilla

二、用户管理

1、useradd命令

创建一个新用户或更新默认新用户信息

语法:

useradd [选项] 用户名

选项:

选项作用
-u指定用户的UID。
-d指定用户的家目录,而不采用默认创建在/home中的目录。不能是已存在的目录。
-s指定用户的登录shell
-M创建用户时不创建家目录
-g创建用户时指定基本组,不会创建用户的同名组
-G创建用户时指定附加组,依然会创建同名组
-e创建用户时,指定用户的失效时间。

案例:

1、指定用户的UID

useradd -u 54321 user1

2、指定用户家目录

useradd -d /user2 user2

3、指定用户的登录shell

useradd -s /sbin/nologin user3

4、创建用户时不创建家目录

useradd -M user4

5、创建程序用户

useradd -M -s /sbin/nologin user5

6、创建用户时指定基本组

useradd -g user5 user6

7、创建用户时指定附加组

useradd -G user5 user7

8、创建用户时,指定用户的失效时间。

useradd -e 2024-04-08 user8
#验证:
tail -1 /etc/shadow
user8:!!:19820:0:99999:7::19821:

结语

今天已经将文件与目录检索学习完毕,可以在命令练习中不断熟悉各种命令的具体用法,在课下多加练习;此外,Linux系统中的用户与组管理中,各个字符段所代表的意义十分重要,也是这一部分刚开始学习的重点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值