第一周
- 1.一个完整计算系统的简要介绍。
- 2.学会进制的转换,并简单举例完成转换。
- 3.制作一个教程,说明vmware软件如何下载安装。
- 4.说明GPL和MIT开源协议的区别。
- 5.制作2个安装教程,安装rocky 8.5, ubuntu 22.04,并结合xshell说明如何通过虚拟IP登入系统。
- 6.说明tab键补全命令以及补全路径的原理。
- 7.说明内部命令和外部命令的区别,以及他们如何获取帮助的?
- 8.说明命令行快捷键如何完成,1)快速跳转到行首?2)快速跳转到行尾?3)快速删除当前光标到行尾,4)快速删除光标到行首,5)如何快速取消执行命令。
- 9.总结Linux目录结构说明每个目录主要的用途。
- 10.总结文件通配*, ?, [a-z], [0-9], ~, {a..z}, [:alnum:], [:alpha:], [:blank:], [:digit:], [:graph:], [:lower:], [:punct:], [:space:], [:upper:] 等常用通配符。
- 11.说明文件系统如何根据用户输入的路径查找到磁盘上的文件的过程。
- 12.总结硬链接和软件链接原理,并举例说明如何使用。
- 13.说明linux命令管理工作流程,结合管道功能,自行设计几个题目。
- 14.说明标准输入,标准输出,标准错误输出的区别,及举例说明其功能。
- 15.总结学过的用户,组,权限相关的命令及选项,示例
1.一个完整计算系统的简要介绍。
2.学会进制的转换,并简单举例完成转换。
整数转换
1、十进制转二进制
(1)十进制转二进制的转换原理:除以2,反向取余数,直到商为0终止。
(2)具体做法:
将某个十进制数除2得到的整数部分保留,作为第二次除2时的被除数,得到的余数依次记下,重复上述步骤,直到整数部分为0就结束,将所有得到的余数最终逆序输出,则为该十进制对应的二进制数。
2、十进制转八进制
(1)转换原理:除以8,反向取余数,直到商为0终止。
(2)具体步骤与二进制一样
3、十进制转十六进制
(1)转换原理:除以16,反向取余数,直到商为0终止。
(2)具体步骤也和二进制、八进制一样,重复上述做法即可得到十六进制数。
小数部分转换
1、十进制转二进制
(1)原理:十进制小数转换成二进制小数采用 “乘2取整,顺序输出” 法。
2、十进制转八进制
(1)原理:十进制小数转换成八进制小数采用 “乘8取整,顺序输出” 法。
(2)思路和十进制转二进制一样
3、十进制转十六进制
(1)原理:十进制小数转换成十六进制小数采用 “乘16取整,顺序输出” 法。
(2)思路也是一样的,就不重复了
3.制作一个教程,说明vmware软件如何下载安装。
4.说明GPL和MIT开源协议的区别。


GPL(GNU General Public License):GNU通用公共许可协议
GNU General Public Licence (GPL) 有可能是开源界最常用的许可模式。GPL 保证了所有开发者的权利,同时为使用者提供了足够的复制,分发,修改的权利:
- 可自由复制
你可以将软件复制到你的电脑,你客户的电脑,或者任何地方。复制份数没有任何限制。 - 可自由分发
在你的网站提供下载,拷贝到U盘送人,或者将源代码打印出来从窗户扔出去(环保起见,请别这样做)。 - 可以用来盈利
你可以在分发软件的时候收费,但你必须在收费前向你的客户提供该软件的 GNU GPL 许可协议,以便让他们知道,他们可以从别的渠道免费得到这份软件,以及你收费的理由。 - 可自由修改
如果你想添加或删除某个功能,没问题,如果你想在别的项目中使用部分代码,也没问题,唯一的要求是,使用了这段代码的项目也必须使用 GPL 协议。
需要注意的是,分发的时候,需要明确提供源代码和二进制文件,另外,用于某些程序的某些协议有一些问题和限制,你可以看一下 @PierreJoye 写的 Practical Guide to GPL Compliance 一文。使用 GPL 协议,你必须在源代码代码中包含相应信息,以及协议本身。
MIT(The Massachusetts Institute of TechnologyLicense):麻省理工学院许可协议
MIT 协议可能是几大开源协议中最宽松的一个,核心条款是:
该软件及其相关文档对所有人免费,可以任意处置,包括使用,复制,修改,合并,发表,分发,再授权,或者销售。唯一的限制是,软件中必须包含上述版 权和许可提示。
这意味着:
- 你可以自由使用,复制,修改,可以用于自己的项目。
- 可以免费分发或用来盈利。
- 唯一的限制是必须包含许可声明。
MIT 协议是所有开源许可中最宽松的一个,除了必须包含许可声明外,再无任何限制。
5.制作2个安装教程,安装rocky 8.5, ubuntu 22.04,并结合xshell说明如何通过虚拟IP登入系统。
6.说明tab键补全命令以及补全路径的原理。
tab 键可以实现命令及路径等补全,提高输入效率,避免出错
-
命令补全
内部命令:
外部命令: bash根据PATH环境变量定义的路径,自左而右在每个路径搜寻以给定命令名命名的文
件,第一次找到的命令即为要执行的命令
命令的子命令补全,需要安装bash-completion -
路径补全
把用户给出的字符串当做路径开头,并在其指定上级目录下搜索以指定的字符串开头的文件名
如果惟一: 则直接补全
否则: 再次Tab给出列表 -
双击Tab键
command 2Tab 所有子命令或文件补全
string2Tab 以string开头命令
/2Tab 显示所有根目录下一级目录,包括隐藏目录
./2Tab 当前目录下子目录,包括隐藏目录
*2Tab 当前目录下子目录,不包括隐藏目录
~2Tab 所有用户列表
$2Tab 所有变量
@2Tab /etc/hosts记录 (centos7 不支持)
=2Tab 相当于ls –A (centos7不支持)
7.说明内部命令和外部命令的区别,以及他们如何获取帮助的?
内部命令: 由shell自带的,而且通过某命令形式提供, ,用户登录后自动加载并常驻内存中
外部命令: 在文件系统路径下有对应的可执行程序文件,当执行命令时才从磁盘加载至内存中,执行
完毕后从内存中删除
区别指定的命令是内部或外部命令
type COMMAND
#内部命令
[root@rocky8-7 ~]# type -a :
: is a shell builtin
#存在对应内部和外部命令
[root@rocky8-7 ~]# type -a cd
cd is a shell builtin
cd is /usr/bin/cd
#外部命令
[root@rocky8-7 ~]# type -a ip
ip is /usr/sbin/ip
- 内部命令帮助
help COMMAND
man bash
- 外部命令及软件帮助
COMMAND --help 或 COMMAND -h
使用 man 手册(manual): man COMMAND
信息页:info COMMAND
程序自身的帮助文档:README、INSTALL、ChangeLog
程序官方文档
相关网站,如:技术论坛
搜索引擎
格式说明:
[] 表示可选项
CAPS或 <> 表示变化的数据
... 表示一个列表
x |y| z 的意思是“ x 或 y 或 z ”
-abc的 意思是 -a -b –c
{ } 表示分组
man 帮助段落说明
NAME 名称及简要说明
SYNOPSIS 用法格式说明
[] 可选内容
<> 必选内容
a|b 二选一
{ } 分组
... 同一内容可出现多次
DESCRIPTION 详细说明
OPTIONS 选项说明
EXAMPLES 示例
FILES 相关文件
AUTHOR 作者
COPYRIGHT 版本信息
REPORTING BUGS bug信息
SEE ALSO 其它帮助参考
8.说明命令行快捷键如何完成,1)快速跳转到行首?2)快速跳转到行尾?3)快速删除当前光标到行尾,4)快速删除光标到行首,5)如何快速取消执行命令。
快捷键 |
执行的操作 |
|---|---|
| Ctrl+d | 退出,exit logout |
| Ctrl+c | 终止前台运行的程序 |
| Ctrl+l | 清屏(实际上拉还是能看到历史) |
| Ctrl+a | 光标移动到命令行的最前端 |
| Ctrl+e | 光标移动到命令行的最后端 |
| Ctrl+u | 删除光标前所有的字符 |
| Ctrl+k | 删除光标后所有的字符 |
| Ctrl+r | 搜索命令历史 |
| Alt+r | 删除当前整行 |
| CMD !* | 利用上一个命令的全部参数做CMD的参数 |
| Esc+. | 点击Esc键后松开,然后点击 . 键,调用前一个命令中最后一个参数 |
| Alt+. | 按住Alt键的同时点击 . 键,调用前一个命令中最后一个参数 |
Alt+.需要对xshell进行设置

9.总结Linux目录结构说明每个目录主要的用途。
├── bin -> usr/bin:存放用户使用的二进制可执行命令,例如:cd ,ls 等命令
├── boot:存放系统启动,引导相关文件,例如:bootloader,grub等
├── dev:存放设备文件,例如:sda1,sdb1,tty等
├── etc:存放系统配置文件,例如:网络配置文件,yum源配置文件等
├── home:用户家目录,新建用户时默认在/home目录下创建同名目录,可在新建用户时使用-d选项设置家目录
├── lib -> usr/lib:存放32位程序运行时调用的动态库及内核模块文件
├── lib64 -> usr/lib64:存放64位程序运行时调用的动态库及内核模块文件
├── media:挂载点,挂载可移动存储设备,例如:CD,
├── mnt:挂载点,挂载临时文件及存储设备
├── opt:第三方应用软件安装位置,一般习惯安装到/usr/local下
├── proc:伪文件系统,存放将内核与进程等相关信息抽象虚拟的文件,所以不占用磁盘空间
├── root:root(系统管理员)的家目录
├── run:存放系统启动以后描述系统信息的文件(放置PID的目录),关机后清空
├── sbin -> usr/sbin:存放root(系统管理员)使用的二进制可执行命令,
├── srv:可理解为”service”,系统运行时某些服务所需要调用的数据
├── sys:伪文件系统,存放将系统硬件等相关信息抽象虚拟文件,同样不占用磁盘空间
├── tmp:存放临时文件及某些应用所产生的临时文件
├── usr:此目录下目录结构也遵循FHS,称为第二层(子层)FHS结构,主要存放应用程序安装及执行的有关文件,例如:/usr/share/man目录存放man命令执行时所需调用的在线帮助文件,/usr/include存放应用程序调用的头文件
└── var:此目录下目录结构也遵循FHS,称为第二层(子层)FHS结构,主要存放日志,邮件,队列,应用相关文件
/var/log/message 系统日志
/var/log/boot.log 启动日志
/var/log/dmesg 内核及硬件的有效信息
/var/log/mail.log 邮件日志
/var/log/cron 计划任务的日志
/var/lib/mysql mysql数据存放目录
/var/spool/mail 用户邮件存放目录
/var/spool/cron 计划任务相关
…………
10.总结文件通配*, ?, [a-z], [0-9], ~, {a..z}, [:alnum:], [:alpha:], [:blank:], [:digit:], [:graph:], [:lower:], [:punct:], [:space:], [:upper:] 等常用通配符。
特殊符号 |
描述 |
|---|---|
| * | 匹配0个或多个字符,但不匹配"."开头的文件,即隐藏文件 |
| ? | 匹配任何单个字符,一个汉字也算一个字符 |
| [a-z] | 匹配单个字母,查找顺序是aAbBcC...xXyYzZ |
| [0-9] | 匹配单个数字 |
| ~ | 当前用户家目录 |
| 匹配小写字母,即a-z,如没有匹配会报错 | |
| [:alnum:] | 匹配单个任意字母数字字符,即0-9、A-Z或a-z,使用时需加中括号[[:alnum:]] |
| [:alpha:] | 匹配单个任意字母字符,不管是大写还是小写,即A-Z、a-z,使用时需加中括号[[:alpha:]] |
| [:blank:] | 匹配单个空格或制表符,使用时需加中括号[[:blank:]] |
| [:digit:] | 匹配单个0-9之间的数字,使用时需加中括号[[:digit:]] |
| [:graph:] | 匹配单个除了空白字符(空格与[Tab]制表符)外的其他所有字符,使用时需加中括号[[:graph:]] |
| [:lower:] | 匹配单个小写字母字符,即a-z,使用时需加中括号[[:lower:]] |
| [:punct:] | 匹配单个标点符号,即 : " ' ? ! ; : # $ 等,使用时需加中括号[[:punct:]] |
| [:space:] | 匹配单个任意空白字符,即 空格、[Tab]制表符、NL、FF、VT和CR,使用时需加中括号[[:space:]] |
| [:upper:] | 匹配单个任意大写字母字符,即A-Z,使用时需加中括号[[:upper:]] |
11.说明文件系统如何根据用户输入的路径查找到磁盘上的文件的过程。
12.总结硬链接和软件链接原理,并举例说明如何使用。
13.说明linux命令管理工作流程,结合管道功能,自行设计几个题目。
14.说明标准输入,标准输出,标准错误输出的区别,及举例说明其功能。
Linux给程序提供三种 I/O 设备
标准输入(STDIN) -0 默认接受来自终端窗口的输入
标准输出(STDOUT) -1 默认输出到终端窗口
标准错误(STDERR) -2 默认输出到终端窗口
操作符号 |
解释 |
|---|---|
| CMD > FILE | 把STDOUT覆盖重定向到文件 |
| CMD 2> FILE | 把STDERR覆盖重定向到文件 |
| CMD &> FILE | 把STDOUT和STDERR都覆盖重定向到文件 |
| CMD > FILE 2>&1 | 把STDOUT和STDERR都覆盖重定向到文件,等同于&> |
| CMD &>> FILE | 把STDOUT和STDERR都追加重定向到文件 |
| CMD >> FILE 2>&1 | 把STDOUT和STDERR都追加重定向到文件,等同于&>> |
| CMD >> FILE | 把STDOUT追加重定向至文件 |
| CMD 2>> FILE | 把STDERR追加重定向至文件 |
| CMD > FILE1 2> FILE2 | 把STDOUT和STDERR各自覆盖重定向到不同文件 |
| CMD < FILE | 从文件导入STDIN,取代当前终端输入设备,命令需要支持标准输入 |
| CMD > FILE <<EOF | 获取STDIN,并在EOF处结束STDIN,把STDOUT覆盖重定向到文件 |
| CMD > FILE <<-EOF | 获取STDIN,并在EOF处结束STDIN,把STDOUT覆盖重定向到文件,输入的内容及终止符前的制表符会被忽略 |
| CMD >> FILE <<EOF | 获取STDIN,并在EOF处结束STDIN,把STDOUT追加重定向到文件 |
示例:
CMD > FILE
[root@rocky8-7 data]# ls /usr/ > stdout.log
[root@rocky8-7 data]# cat stdout.log
bin
games
include
lib
lib64
libexec
local
sbin
share
src
tmp
CMD 2> FILE
[root@rocky8-7 data]# ls xxx 2> stderr.log
[root@rocky8-7 data]# cat stderr.log
ls: cannot access 'xxx': No such file or directory
CMD &> FILE
[root@rocky8-7 data]# ls /usr/ xxx &> stdout_stderr.log
[root@rocky8-7 data]# cat stdout_stderr.log
ls: cannot access 'xxx': No such file or directory
/usr/:
bin
games
include
lib
lib64
libexec
local
sbin
share
src
tmp
CMD > FILE 2>&1
[root@rocky8-7 data]# ls /tmp/ zzz > stdout_stderr.log 2>&1
[root@rocky8-7 data]# cat stdout_stderr.log
ls: cannot access 'zzz': No such file or directory
/tmp/:
ks-script-f4husw0r
ks-script-wehp40vv
vmware-root_848-2697663887
vmware-root_883-4021653483
CMD &>> FILE
[root@rocky8-7 data]# ls /boot/ yyy &>> stdout_stderr.log
[root@rocky8-7 data]# cat stdout_stderr.log
ls: cannot access 'xxx': No such file or directory
/usr/:
bin
games
include
lib
lib64
libexec
local
sbin
share
src
tmp
ls: cannot access 'yyy': No such file or directory
/boot/:
config-4.18.0-425.3.1.el8.x86_64
efi
grub2
initramfs-0-rescue-c6ebc0ea560840318d5a665cff4b67d6.img
initramfs-4.18.0-425.3.1.el8.x86_64.img
initramfs-4.18.0-425.3.1.el8.x86_64kdump.img
loader
symvers-4.18.0-425.3.1.el8.x86_64.gz
System.map-4.18.0-425.3.1.el8.x86_64
vmlinuz-0-rescue-c6ebc0ea560840318d5a665cff4b67d6
vmlinuz-4.18.0-425.3.1.el8.x86_64
CMD > FILE1 2> FILE2
[root@rocky8-7 data]# ls /usr/ xxx > stdout.log 2> stderr.log
[root@rocky8-7 data]# cat stdout.log
/usr/:
bin
games
include
lib
lib64
libexec
local
sbin
share
src
tmp
[root@rocky8-7 data]# cat stderr.log
ls: cannot access 'xxx': No such file or directory
CMD < FILE
[root@rocky8-7 data]# cat < stdout.log
/usr/:
bin
games
include
lib
lib64
libexec
local
sbin
share
src
tmp
CMD > FILE <<EOF
[root@rocky8-7 data]# cat > HelloWorld.txt <<EOF
> Hello
> World
> EOF
[root@rocky8-7 data]# cat HelloWorld.txt
Hello
World
CMD > FILE <<-EOF
ctrl+v+i输入制表符
[root@rocky8-7 data]# cat > HelloWorld.txt <<EOF
> Hello
> World
> EOF
> EOF
[root@rocky8-7 data]# cat HelloWorld.txt
Hello
World
EOF
[root@rocky8-7 data]# cat > HelloWorld.txt <<-EOF
> Hello
> World
> EOF
[root@rocky8-7 data]# cat HelloWorld.txt
Hello
World
15.总结学过的用户,组,权限相关的命令及选项,示例
用户相关命令
useradd
用法:
useradd [options] LOGIN
useradd -D
useradd -D [options]
常见选项:
-u UID
-o 配合-u 选项,不检查UID的唯一性
-g GID 指明用户所属基本组,可为组名,也可以GID
-c "COMMENT“ 用户的注释信息
-d HOME_DIR 以指定的路径(不存在)为家目录
-s SHELL 指明用户的默认shell程序,可用列表在/etc/shells文件中
-G GROUP1[,GROUP2,...] 为用户指明附加组,组须事先存在
-N 不创建私用组做主组,使用users组做主组
-r 创建系统用户 CentOS 6之前: ID<500,CentOS7 以后: ID<1000
-m 创建家目录,用于系统用户
-M 不创建家目录,用于非系统用户
-p 指定加密的密码
示例:
[root@rocky8-7 ~]# useradd -u 8888 -c "test user" -s /sbin/nologin -d /data/chase chase
[root@rocky8-7 ~]# getent passwd chase
chase:x:8888:8888:test user:/data/chase:/sbin/nologin
[root@rocky8-7 ~]# ll -d /data/chase/
drwx------ 2 chase chase 62 Jan 6 13:59 /data/chase/
usermod
用法:
usermod [options] LOGIN
常见选项:
-u UID: 新UID
-g GID: 新主组
-G GROUP1[,GROUP2,...[,GROUPN]]]:新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使
用-a选项
-s SHELL:新的默认SHELL
-c 'COMMENT':新的注释信息
-d HOME: 新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用-m选项
-l login_name: 新的名字
-L lock指定用户,在/etc/shadow 密码栏增加 !
-U unlock指定用户,将 /etc/shadow 密码栏的 ! 拿掉
-e YYYY-MM-DD: 指明用户账号过期日期
-f INACTIVE: 设定非活动期限,即宽限期
示例:
[root@rocky8-7 data]# usermod -u 9999 -s /bin/bash -aG wheel -m -d /data/chase_new chase
[root@rocky8-7 data]# getent passwd chase
chase:x:9999:8888:test user:/data/chase_new:/bin/bash
[root@rocky8-7 data]# ll -d /data/chase_new/
drwx------ 2 chase chase 62 Jan 6 15:28 /data/chase_new/
userdel
用法:
userdel [options] LOGIN
常见选项:
-f --force 强制
-r --remove 删除用户家目录和邮箱
示例:
[root@rocky8-7 ~]# useradd test
[root@rocky8-7 ~]# ll -d /home/test/
drwx------ 2 test test 62 Jan 6 15:31 /home/test/
[root@rocky8-7 ~]# userdel -r test
[root@rocky8-7 ~]# ll /home/
total 0
id
用法:
id [OPTION]... [USER]
常见选项:
-u 显示UID
-g 显示GID
-G 显示用户所属的组的ID
-n 显示名称,需配合ugG使用
示例:
[root@rocky8-7 ~]# id chase
uid=9999(chase) gid=8888(chase) groups=8888(chase),10(wheel)
[root@rocky8-7 ~]# id -u chase
9999
[root@rocky8-7 ~]# id -un chase
chase
[root@rocky8-7 ~]# id -g chase
8888
[root@rocky8-7 ~]# id -gn chase
chase
[root@rocky8-7 ~]# id -G chase
8888 10
[root@rocky8-7 ~]# id -Gn chase
chase wheel
su
用法:
su [options] [-] [<user> [<argument>...]]
常见选项:
-l --login su -l UserName 相当于 su - UserName
-c --command <command> pass a single command to the shell with -c
示例:
[root@rocky8-7 ~]# su chase
[chase@rocky8-7 root]$ pwd
/root
[chase@rocky8-7 root]$ id
uid=9999(chase) gid=8888(chase) groups=8888(chase),10(wheel)
[root@rocky8-7 ~]# su - chase
Last login: Fri Jan 6 15:35:51 CST 2023 on pts/0
[chase@rocky8-7 ~]$ pwd
/data/chase_new
[chase@rocky8-7 ~]$ id
uid=9999(chase) gid=8888(chase) groups=8888(chase),10(wheel)
[root@rocky8-7 ~]# su - -c "ls -a;pwd" chase
. .. .bash_history .bash_logout .bash_profile .bashrc
/data/chase_new
passwd
用法:
passwd [OPTION...] <accountName>
常见选项:
-d 删除指定用户密码
-l 锁定指定用户
-u 解锁指定用户
-e 强制用户下次登录修改密码
-f 强制操作
-n mindays:指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天开始警告
-i inactivedays:非活动期限
--stdin 从标准输入接收用户密码,Ubuntu无此选项
示例:
[root@rocky8-7 ~]# echo -e '123456\n123456' | passwd chase
Changing password for user chase.
New password: BAD PASSWORD: The password is shorter than 8 characters
Retype new password: passwd: all authentication tokens updated successfully.
[root@rocky8-7 ~]# echo “123456” | passwd --stdin chase
Changing password for user chase.
passwd: all authentication tokens updated successfully.
chage
用法:
chage [options] LOGIN
常见选项:
-d LAST_DAY #更改密码的时间
-m --mindays MIN_DAYS
-M --maxdays MAX_DAYS
-W --warndays WARN_DAYS
-I --inactive INACTIVE #密码过期后的宽限期
-E --expiredate EXPIRE_DATE #用户的有效期
-l 显示密码策略
示例:
组相关命令
groupadd
用法:
groupadd [options] GROUP
常见选项:
-g GID 指明GID号;[GID_MIN, GID_MAX]
-r 创建系统组,CentOS 6之前: ID<500,CentOS 7以后: ID<1000
示例:
[root@rocky8-7 ~]# groupadd -g 9999 chase_new
[root@rocky8-7 ~]# getent group chase_new
chase_new:x:9999:
groupmod
用法:
groupmod [options] GROUP
常见选项:
-n group_name: 新名字
-g GID: 新的GID
示例:
[root@rocky8-7 ~]# groupmod -g 8899 -n chase_new1 chase_new
[root@rocky8-7 ~]# getent group chase_new1
chase_new1:x:8899:
groupdel
用法:
groupdel [options] GROUP
常见选项:
-f --force 强制删除,即使是用户的主组也强制删除组,但会导致无主组的用户不可用无法登录
示例:
[root@rocky8-7 ~]# groupadd test
[root@rocky8-7 ~]# getent group test
test:x:8900:
[root@rocky8-7 ~]# groupdel test
[root@rocky8-7 ~]# getent group test
[root@rocky8-7 ~]#
权限相关命令
chown
用法:
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
常见选项:
OWNER #只修改所有者
OWNER:GROUP #同时修改所有者和属组
:GROUP #只修改属组,冒号也可用 . 替换
--reference=RFILE #参考指定的的属性,来修改
-R #递归,此选项慎用,非常危险!
示例:
chgrp
用法:
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
常见选项:
-R #递归
示例:
chmod
用法:
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...
常见选项:
-R #递归
示例:
umask
- 新建文件的默认权限: 666-umask,如果所得结果某位存在执行(奇数)权限,则将其权限+1,偶数不变
- 新建目录的默认权限: 777-umask
用法:
umask [-p] [-S] [mode]
常见选项:
-S 使输出成为符号,否则输出为八进制数字
-P 如果省略MODE,则以可重复使用的形式输出,作为输入。
示例:
[root@rocky8-7 ~]# umask
0022
[root@rocky8-7 ~]# umask 002
[root@rocky8-7 ~]# umask
0002
[root@rocky8-7 ~]# umask -S
u=rwx,g=rwx,o=rx
[root@rocky8-7 ~]# umask -p
umask 0002
#持久保存umask
#全局设置: /etc/bashrc
#用户设置:~/.bashrc
setfacl
用法:
setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...
常见选项:
示例:
getfacl
用法:
getfacl [-aceEsRLPtpndvh] file ...
常见选项:
示例:
chattr
用法:
chattr [-RVf] [-+=aAcCdDeijsStTu] [-v version] files...
常见选项:
+i 不能删除,改名,更改
+a 只能追加内容,不能删除,改名
示例:
[root@rocky8-7 data]# chattr +i HelloWorld.txt
[root@rocky8-7 data]# echo 'Hello,World!' > HelloWorld.txt
-bash: HelloWorld.txt: Operation not permitted
[root@rocky8-7 data]# echo 'Hello,World!' >> HelloWorld.txt
-bash: HelloWorld.txt: Operation not permitted
[root@rocky8-7 data]# chattr -i HelloWorld.txt
[root@rocky8-7 data]# chattr +a HelloWorld.txt
[root@rocky8-7 data]# echo 'Hello,World!' > HelloWorld.txt
-bash: HelloWorld.txt: Operation not permitted
[root@rocky8-7 data]# echo 'Hello,World!' >> HelloWorld.txt
[root@rocky8-7 data]# cat HelloWorld.txt
Hello,World!
lsattr
用法:
lsattr [-RVadlv] [files...]
常见选项:
-R 递归列出目录的属性和内容
-l 使用长格式来打印选项
-p 列出文件的项目编号
示例:
[root@rocky8-7 data]# lsattr HelloWorld.txt
----ia-------------- HelloWorld.txt
[root@rocky8-7 data]# lsattr -p HelloWorld.txt
0 ----ia-------------- HelloWorld.txt
[root@rocky8-7 data]# lsattr -l HelloWorld.txt
HelloWorld.txt Immutable, Append_Only

浙公网安备 33010602011771号