七、文件的其他操作命令
1.文本内容统计wc
1.1作用
wc命令用于统计指定文本文件的行数、字数或字节数
1.2格式
wc -参数 文件名
1.3参数

1.4示例
1.统计文件中所有的内容

行数 单词数 字节数
2.配合管道符
[root@server ~]# ll / | wc -l # 文件数
[root@server ~]# grep "/bin/bash" /etc/passwd | wc -l
[root@server ~]# cat /etc/passwd | cut -d ":" -f1 | wc -l
例1: (统计跟目录下的文件和目录总述)

例2:(查找在/etc/passwd文件中出现/bin/bash的行数)


例3:(统计/etc/passwd中用户的数量)

2.复制、移动文件
2.1格式
cp -参数 源文件 目标文件
2.2参数

2.3示例
1.将home文件夹下的t1.txt复制到根目录下

2.将Desktop下的t2.txt复制到根目录下的t3.txt(复制之前根目录下没有t3.txt,会自动创建该文件)

![]()

3.复制目录
首先在根下创建目录

将根下的/t1复制到root目录下

查看文件目录是否完整

3.移动文件或目录
3.1格式
mv [选项] 源文件名称 目标文件名称
3.2作用
mv命令用于剪切或重命名文件
剪切操作不同于复制操作,因为它会把源文件删除掉,只保留剪切后的文件。
如果在同一个目录中将某个文件剪切后还粘贴到当前目录下,其实本质就是对文件进行了重命名操
作。
3.3示例
[root@server ~]# touch t3.txt
[root@server ~]# mv t3.txt /etc #源为文件,目标为目录 ,为移动
[root@server ~]# touch t3.txt
[root@server ~]# mv t3.txt t4.txt # 源为文件 ,目标为文件,位置不变,为改名
4.查找文件
4.1查找文件路径(whereis)
作用:可以搜索系统命令的可执行文件路径和说明文档
示例:

4.2查找文件路径(which)
作用:搜索系统命令的可执行文件
示例:

4.3查找文件(find)
作用:按照文件名、大小、时间、权限、类型、所属者、所属组来搜索文件
格式:
find 查找路径 查找条件 具体条件 操作
注意:
find命令默认的操作是print输出
find是检索文件的,grep是过滤文件中字符串
参数:

示例:创建如下文件夹和目录

依次建立如下文件


查找文件(-name)

查找文件(-size)

查找文件(-cmin)查找在一分钟内被修改的文件

查找文件(-perm)根据权限查找
-222表示必须全部满足(ugo全部满足写的权限)
/222表示只满足ugo中的一个即可

查找文件(-user)

-o表示或者
-a 表示and

查找文件(-type)

(-exec)找到文件并进行下一步操作

5.压缩和解压缩
5.1zip和unzip命令
格式:
zip FILE # 压缩
unzip FILE # 解压缩
5.2示例
1.将bin.tar压缩为zip文件

将其解压缩

2.gzip压缩

解压缩gzip
![]()
3. bzip2压缩

解压缩bzip2

4.xz压缩为

解压缩xz
![]()
5.打包压缩一步完成

6.归档命令
6.1格式
tar -参数 [args]……
6.2参数
常用参数

必选参数

辅助参数

6.3示例
1.将/usr/bin/文件夹下的文件或目录打包到当前的bin.tar文件中,并释放该文件

2.利用-C(大写)将指定文件释放到指定文件夹下

3.在不释放文件的情况下查看文件夹里的内容

4.将文件追加到bin.tar中



只获取bin.tar中的file

八、命令解释器-shell
1.概述
1.1概念
shell:壳,命令解释器,负责解析用户输入的命令

1.2分类
内置命令 (shell内置),shell为了完成自我管理和基本的管理,不同的shell内置不同的命令,但是大
部分都差不多
外置命令,在文件系统的某个目录下,有个与命令名称相同的文件
2.type命令
2.1.作用
查看命令是内置命令、外置命名、alias命令
2.2.格式
type -参数 命令名
2.3.参数
type -a 列出当前命令可以如何执行
type -t 仅列出命令按照哪种方式执行
2.4.示例

2.5.执行原理
系统为了让用户在命令行快速方便地执行命令,将可执行文件的路径存储在环境变量PATH中,使得shell知道命令的可执行文件位置
PATH环境变量:当用户每次执行外部命令的时候都会去该变量所记录的路径下搜索和命令同名的二进制文件,如果有则执行该二进制文件,如果没有则提示命令找不到。

3.Linux 中的特殊符号

4.命令别名
4.1作用
别名:命令的快捷方式,对于需要经常执行,且要很长时间输入的长命令很有用。
4.2格式
alias 别名='原命令 - 参数'
4.3查看别名设置

4.4常用别名
1.untar:
由于 tar 命令的参数太多不好记忆,所以将解压缩设为如下:
alias untar='tar -zxvf '
2.wget
下载大文件时的断点续连,防止网络异常中断:
alias wget='wget -c '
3.getpass
生成 20 个字符的随机数密码,使用 openssl 命令,但命令又很长不方便,可以设置别名:
alias getpass="openssl rand -base64 20"
4.ping
ping url时会无限次输出,但其实没多大意义,可以使用 -c 命令将其限制为 5 次输出:
alias ping='ping -c 5'
5.speed
测试网速命令speedtest-cli ,为了方便使用可以设置别名:
安装: speedtest-cli是基于python编写的需要使用pip工具下载
[root@server ~]# pip install speedtest-cli
bash: pip: command not found...
Install package 'python3-pip' to provide command 'pip'? [N/y] y
* Waiting in queue...
* Loading list of packages....
The following packages have to be installed:
python3-pip-21.2.3-6.el9.noarch A tool for installing and managing Python3
packages
Proceed with changes? [N/y] y
4.5删除别名
1.格式:
unalias 别名
2.举例
[root@server ~]# alias
[root@server ~]# unalias ping
[root@server ~]# alias
3.注意:
在命令行中使用alias命令设置的别名仅在该次登入有效,如果重新开启一个 Shell,或者重新登录系统,则这些alias将无法使用。
在linux中提供alias永久化的方法:
将别名命令写入到~/.bashrc和/etc/bashrc文件中
执行 source ~/.bashrc 和 source ~/etc/bashrc 生效
[root@server ~]# alias ping='ping -c 5'
[root@server ~]# ping www.qq.com
# 关闭shell,重新打开
[root@server ~]# ping www.qq.com # 别名失效
[root@server ~]# vim ~/.bashrc
# 写入别名
[root@server ~]# source ~/.bashrc # 生效,注意切换仅对当前账户生效
[root@server ~]# vim /etc/bashrc
# 写入别名
[root@server ~]# source /etc/bashrc
# 切换到普通账户测试
5.命令历史
5.1作用
history命令可以查阅命令历史记录
5.2格式
history -参数
5.3参数
number:显示最近number条命令历史
-c:清空当前历史命令



5.4设置history记录命令条数
[root@server ~]# vim /etc/profile
# 定位:HISTSIZE=1000
#退出后重启:reboot
九、账户和组管理
1.账户和工作组的分类
1.1用户分为三类
超级账户——账户名为root,它具有一切权限,只有进行系统维护(例如:建立用户等)或其他必要情形下才用超级用户登录,以避免系统出现安全问题。
系统账户——是Linux系统正常工作所必需的账户,主要为了满足相应的系统进程对文件属主的要求而建立的,如:bin、daemon、adm、sshd等,注意:系统账户不能登录。
普通用户——是为了让使用者能够使用Linux系统资源而建立的,大多数用户属于此类。
1.2工作组分为两类
基本组(私有组):新建立账户时,若没有指定账户所属的工作组,会建立和账户名相同的组
扩展组(公有组):可以容纳多个用户,组中的账户都具有组所拥有的权利。
1.3账户和工作组的配置文件
账户名、密码、工作组信息和工作组密码存储在以下配置文件中

1.用户账号文件:
/etc/passwd 是一个文本文件,用于定义系统的账号,由于所有账户都对passwd有读权限,所以该
文件中只定义用户账号,而不保存口令。

/etc/passwd文件中字段说明
由7个字段组成,字段之间用“:”分隔,意义:账号名:密码:UID:GID:个人资料:主目录:Shell
账号名:用户登录Linux系统时使用的名称。
密码:以前是以加密格式保存密码的位置,现在密码保存在/etc/shadow文件中,此处只是密
码占位符“x”或“*”。若为“x”,说明密码经过了shadow的保护。
UID:账户的ID值,是一个数字标识,相当于账户的“身份证编号”,具有唯一性
root账户UID——0
系统账户的UID——1~999
普通账户的UID——≥1000
注意:普通账户从1000开始编号,连续编号,即使系统管理员某些账户号码未使用,普
通账户也不可使用
GID:基本组的ID值,用来区分不同的工作组,相同的组具有相同的GID。
个人资料:注释信息,可以记录账户的完整姓名、地址、办公室电话、家庭电话等个人信息。
家目录:类似Windows 的个人目录,通常是/home/账户名
Shell:定义用户登录后激活的Shell,默认是Bash Shell
2.id 命令
作用:
查看账户的UID、GID等信息
格式
id 账户名

3.用户密码文件
/etc/shadow存储密码加密后的密文,又称为“影子文件”,该文件为了保证了账户密码的安全性只有
root 账户拥有读权限,注意:若该文件权限发生变化,需要留心恶意攻击

登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
4.工作组帐号文件
/etc/group文件存储每个组工作组信息


2.用户管理
2.1添加新用户
1.格式
useradd -参数 账户名
2.参数
-c 注释信息:设置相关的说明信息,如,:真实姓名、邮箱地址等。
-d:目录:设定账户的家目录(默认为/home/用户名)。
-e YYYY-MM-DD:设置用户的失效日期,此日期后将不能使用该账号。
-f 天数:指定密码到期后多少天账号被禁用,若指定为0,则表示账号到期后被立即禁用;若指定 为-1,则表
示账号过期后不被禁用(即密码永不过期)。
-g 组名或GID号:为账户指定所属的基本组,该组在指定时必须已存在。
-G:组名或GID号列表:为账户指定所属的扩展组,各组在指定时已存在,附加组可以有多个,组之间用“,”分
隔。
-M:不创建账户家目录。
-N:不创建与账户名同名的基本组。
-p:密码:指定账户的登录密码。
-s shell名:指定账户登录后使用的Shell,默认是bash。
-u 用户号:设置账号的UID,默认是已有账户的最大UID加1。如果同时有-o选项,则可以重复使用其他用户的
标识号。
3.示例
添加用户timinglee


-u指定UID


-G添加附加组

-s,-M(该用户不能登录,也不创建目录信息)


2.2删除用户
1.格式
userdel 账户名
2.参数
-r:在删除该账户的同时,一并删除该账户对应的家目录
3.示例

2.3修改账户信息
1.格式
usermod -参数 账户名
2.参数
常用参数 -c,-d,-m,-g,-G,-s,-u 等,意义与useradd命令中的参数相同
-l :新账户名:更改账户的名称,必须在该用户未登录的情况下才能使用
-L:锁定(暂停)用户账户,使其不能登录使用
-U:解锁用户账户
3.示例
-l,-u修改用户的名称和UID

修改GID和所在组(抹除之前组)
-aG保留之前组的身份
-d修改家目录

-md连同目录文件一起修改



-s(修改shell)

-L上锁,-U解锁

2.4账号设置密码
1.格式
passwd - 参数 账户名
2.参数
-d:清空指定用户的口令,与未设置口令的账户不同,未设置口令的账户无法登录系统,而口令为空的账户可以。
-e:使用户的账号密码立即过期,强迫用户下次登录时必须修改口令。
-i:口令过期后多少天停用账户。
-l:锁定(停用)用户账户。
-n:指定口令的最短存活期。
-x:指定密码的最长使用期限。
-u:解锁用户账户。
echo 密码 | passwd --stdin 用户名
3.示例
直接设置密码:(!!为没有设置密码)

只有 root 用户才能指定用户名
[root@server ~]# useradd test5
[root@server ~]# passwd test5
更改用户 test5 的密码 。
新的密码:
无效的密码: 密码少于 8 个字符
重新输入新的密码:
passwd:所有的身份验证令牌已经成功更新。
[root@server ~]# su test5
[test5@server root]$ passwd test5
passwd:只有 root 户才能指定用户名。
删除密码:

2.5账户切换
1.格式
su 账户名
2.su和su - 命令区别
区别:加载的配置文件不一样
su 切换方式加载的文件: ~/.bashrc,/etc/bashrc
su - 切换方式加载的文件: /etc/bashrc,/etc/profile,~/.bashrc,~/.bash_profile
注意:su - 相当于重新建立环境,若全局变量需要继续使用则不能使用su - 命令
3.从root用户切换到任何用户不需要密码验证,而从普通用户到root或其他普通用户均需要输入目标用户的密码且验证成功后才可切换。
2.6控制用户对系统命令的使用权限
1.作用
用sudo 命令可以提高普通用户的操作权限,使用前需要root进行配置
2.示例
[root@server ~]# su fox
[fox@server root]$ cd /root
bash: cd: /root: 权限不够
[fox@server root]$ sudo cd /root
我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:
#1) 尊重别人的隐私。
#2) 输入前要先考虑(后果和风险)。
#3) 权力越大,责任越大。
[sudo] fox 的密码:
fox 不在 sudoers 文件中。此事将被报告。
3.查看用户登录系统的情况
3.1users命令
1.作用
查看当前登录系统的用户
2.示例

3.2last命令
1.作用
列出目前与过去登入系统的用户相关信息,该命令默认会去读取/var/log/wtmp文件,并把该文件
记录的登入系统的用户名单全部显示出来。
2.示例

3.3lastlog命令
1.作用
查看每个账号的最近登录时间,该命令会读取/var/log/lastlog文件
2.示例

3.4w命令
1.作用
显示登录到系统的用户信息
2.示例

第一行显示当前的系统时间、开机多久、登录到系统中的用户数和系统平均负载(平均负载是指在1分钟、5分钟、15分钟内系统负载情况)
第二行只是各个项目的说明
USER:表示登录系统的用户
TTY:表示用户使用的TTY名称
FROM:表示用户从哪里登录进来
LOGIN@:用户登录的日期和时间
idle:表示空闲时间
JCPU:在某段时间内所有与该终端相关的进程任务所耗费的cpu时间
PCPU:当前活动进程使用的系统时间
WHAT:表示当前用户执行的进程名称和选项
第三行以后,每行代表一个用户登录的信息。
3.5who命令
1.作用
显示目前登录到系统的用户,会从/var/run/utmp文件来获取信息
2.示例


[root@server ~]# who -b 列出系统最近启动的日期
system boot 2022-05-09 15:38
[root@server ~]# who -m 列出关于当前终端的信息
root pts/0 2022-05-09 15:38 (192.168.168.1)
[root@server ~]# who am i
root pts/0 2022-05-09 15:38 (192.168.168.1)
[root@server ~]# who am I
root pts/0 2022-05-09 15:38 (192.168.168.1)
[root@server ~]# who -q 列出在本地系统上的用户和用户数的清单
root
# users=1
[root@server ~]# who -r 显示当前系统的运行级别
run-level 3 2022-05-09 15:38
[root@server ~]# who -u 显示当前每个用户的用户名、登录终端、登录时间、终端活动、进程和主机名
root pts/0 2022-05-09 15:38 . 1510 (192.168.168.1)
[root@nserver ~]# who -T 显示tty终端的状态,“+”表示对任何人可写,“-”表示仅对root用户或所
有者可写,“?”表示遇到终端故障
root + pts/0 2022-05-09 15:38 (192.168.168.1)
[root@server ~]# who -w 和-T一样
root + pts/0 2022-05-09 15:38 (192.168.168.1)
4.用户组管理
4.1创建工作组
1.格式
groupadd -参数 工作组名
2.参数
-g GID:指定新工作组的GID,默认值是已有的最大的GID加1
-r: 建立一个系统组账号,与-g不同时使用时,则分配一个1~999的GID
3.示例
创建用户组指定GID为6666
4.2修改工作组
1.格式
groupmod -参数 工作组名
2.参数
-g GID——为用户组指定新的组标识号
-n 新用户组——将用户组的名字改为新名字修改用户组的名称和用户组的GID值
3.示例
将组group1的GID修改为3000,组名修改为group11

4.3删除工作组
1.格式
groupdel 工作组名
2.示例

4.4添加/删除组成员
1.格式
gpasswd -参数 账户 工作组
2.参数
-r : 删除组密码
-a : 把用户加入组
-d : 把用户从组中删除。
-M : 可同时添加多个用户
-A : 给组指派管理员。
3.示例
创建用户lee1,添加到用户组tim

十、Linux文件系统权限
1.文件的一般权限
1.1文件详细信息
使用命令ll或ls -l 查看
结果分析:


1.2文件权限构成
权限针对三类对象定义
owner:所有者,缩写u
group :所属组,缩写g
other :其他人,缩写o
访问者三种权限

组成模式分析

文件与目录权限含义

root账户不受文件权限的读写限制,执行权限受限制
1.3chmod命令
1.作用
chmod(change mode):修改文件或目录的权限
2.格式
# 格式1
chmod [选项] [ugoa][+-=][rwx] 文件或目录...
# 格式2
chmod [选项] nnn 文件或目录...`
3.参数
-R:递归修改指定目录下所有文件、子目录的权限
ugoa:表示权限设置所针对的用户类别,可以是其中字母中的一个或组合,u(user)表示文件或目录的属主(所有者);g(group)表示属组内的用户;o(others)表示其他用户;a(all)表示所有用户(即
u+g+o)
+或-或=:表示设置权限的操作动作,+代表添加;-代表取消;=表示只赋予给定的权限,并取消原
有的权限。
rwx:用字符形式表示的所设置的权限,可以是其中一个字母或组合
nnn:用数字表示的权限
4.示例
--reference修改之前

修改之后

ugoa:
组合使用

文件夹及其中的文件的所有权限都修改

1.4chown命令
1.作用
修改文件或目录的所有者和属组
2.格式
chown -参数 所有者:所属组 文件名或目录名
# 参数-R递归设置
3.示例
修改用户和组

同时修改

修改目录("."和":"都可以使用)

2.特殊权限
2.1概述
在Linux系统中,用户对文件或目录的访问权限除了r、w、x三种一般权限外,还有SET
UID(SUID)、SET GID(SGID)、Sticky Bit(粘滞位)三种特殊权限,用于对文件或目录进行更加灵活方便的访问控制。
SUID 权限的含义:是为了让一般用户在执行某些程序的时候, 在程序的运行期间, 暂时获得该程序文件所属者的权限。
2.2SUID权限
例如:student用户要更改自己的密码
student 在执行 passwd 修改自己的密码时, 其修改的密码, 最终是需要保存到 /etc/shadow 这
个文件中, 而这个文件的权限是 --------- ,它的拥有者是 root ,也只有 root 可以“ 强制” 存储, 其他用户连看都不行,可偏偏 student 去执行 passwd (/usr/bin/passwd) ,却可以更新自己的密码
这就是因为有 s 权限的存在,当 s权限在拥有者的权限位上时, 即如-rwsr-xr-x 这样时, 称为
SUID 。SUID 即 Set UID , UID 指的是拥有者的的 ID, 而这个程序 (/usr/bin/passwd) 的拥有者
为(root) 。
注意:
suid仅对二进制文件有效
在执行过程中,调用者会暂时获得该文件的所有者权限
该权限只在程序执行的过程中有效
2.3SGID 权限
文件: 如果 SGID 设置在二进制文件上, 则不论用户是谁,在执行该程序的时候,程序的所属组将会变成该程序文件的所属组。
目录:如 果 SGID 是设置在 A 目录上, 则在 A 目录内所建立的文件或目录的所属组, 将会是此 A
目录的所属组
2.4Sticky Bit权限
Sticky Bit (SBit) 当前只针对目录有效, 对文件没有效果。
其对目录的作用:
在 具 有 SBit 的目录下, 用户若在该目录下具有 w 及 x 权限 , 则当用户在该目录下建立文件
或目录时, 只有文件拥有者与 root 才有权力删除。
例如:当 student 用户属于 A 目录的组成员或属于 other ,且拥有 wx 权限时, 可以对该目
录内任何人建立的目录或文件进行“ 删除/重命名/移动” 等操作。 如果将 A 目录加上了 Sticky
Bit 权限, 则 student用户只能针对自己建立的文件或目录进行“ 删除/重命名/移动” 等操作。
2.5设置特殊权限
为文件或目录添加三种特殊权限同样可以通过chmod命令来实施,使用“u±s”、“g±s”、“o±t”的字符权
限模式分别用于添加和移除SUID、GUID、sticky权限。
若使用数字形式的权限模式,可采用“nnnn”格式的四位八进制数字表示,其中:后面三位是一般权限
的数字表示,前面第一位则是特殊权限的标志数字:
0——表示不设置特殊权限
1——表示只设置sticky
2——表示只设置GUID权限
3——表示只设置SGID和sticky权限
4——表示只设置SUID权限
5——表示只设置SUID和sticky权限
6——表示只设置SUID和SGID
7——表示同时设置SUID、GUID、sticky3种权限
3.ACL权限
3.1作用
给指定的用户指定目录分配指定的权限。
3.2查看ACL权限
1.格式
getfacl 文件名
2.示例

3.3设定ACL权限
1.格式
setfacl -参数 文件名
2.参数
-m:设定 ACL 权限
给用户设定 ACL 权限:setfacl -m u:用户名:权限 指定文件名
给用户组设定 ACL 权限:setfacl -m g:组名:权限 指定文件名
-x:删除指定的 ACL 权限;
-b:删除所有的 ACL 权限;
-d:设定默认 ACL 权限。只对目录生效,指目录中新建立的文件拥有此默认权限;
-k:删除默认 ACL 权限;
-R:递归设定 ACL 权限。指设定的 ACL 权限会对目录下的所有子文件生效
3.示例


3.4删除ACL
# 删除指定用户的 ACL 权限
setfacl -x u:用户名 文件名
# 删除指定用户组的 ACL 权限
setfacl -x g:组名 文件名
# 删除文件的所有 ACL 权限
setfacl -b 文件名
4.权限掩码umask
4.1新建文件权限与umask关系
在Linux系统中,当用户创建一个新的文件或目录时,系统都会为新建的文件或目录分配默认的权
限,该默认权限与umask值有关
新建文件的默认权限=0666-umask值 (减去)
新建目录的默认权限=0777-umask值
4.2查看默认umask值
[root@server ~]# umask
0022
0022
[root@server ~]# touch file1
[root@server ~]# mkdir dir1
[root@server ~]# ll -d file1 dir1
drwxr-xr-x. 2 root root 6 5月 6 18:23 dir1 # 755
-rw-r--r--. 1 root root 0 5月 6 18:23 file1 # 644
4.3修改默认umask值
[root@server ~]# umask 000 # 临时修改
[root@server ~]# touch file2
[root@server ~]# mkdir dir2
[root@server ~]# ll -d file2 dir2
drwxrwxrwx. 2 root root 6 5月 6 18:26 dir2
-rw-rw-rw-. 1 root root 0 5月 6 18:25 file2
未完待续 。。。
1万+

被折叠的 条评论
为什么被折叠?



