Linux与Unix Shell编程安全:权限、setuid与文件管理

1星 需积分: 0 1 下载量 78 浏览量 更新于2024-07-24 收藏 19.3MB PDF 举报
"Linux与Unix Shell编程指南" 在深入讲解Linux与Unix Shell编程之前,首先要理解的是文件的安全性和权限管理,这是系统中至关重要的一个环节。文件安全与权限涉及到如何保护系统资源,避免未授权访问,确保数据的安全性。在Linux和Unix系统中,通过设置权限位,可以控制文件和目录的访问权限,这对于系统的正常运行和用户隐私至关重要。 1. **文件和目录的权限** 文件和目录都有三个级别的权限:属主(owner)、同组用户(group)和其他用户(others)。每个级别有三个操作权限:读(read)、写(write)和执行(execute)。例如,`-rw-r-xr--`表示文件的权限,其中`-`表示这是一个普通文件,`rw-`代表属主有读写权限,`r-x`表示同组用户有读和执行权限,`r--`意味着其他用户只有读权限。 2. **setuid** setuid是一个特殊权限,当设置在文件上时,允许用户执行该文件时获得文件所有者的权限,这通常用于提供特权服务,如`sudo`或`passwd`命令。 3. **chown和chgrp** `chown`命令用于改变文件或目录的所有者,而`chgrp`则用来改变所属组。这两个命令通常由根用户使用,以确保权限的正确分配。 4. **umask** umask定义了默认的文件创建权限,它是一个八进制数字,表示你想要从默认权限中移除的权限。例如,umask为022时,新创建的文件默认对其他人没有写权限。 5. **符号链接(Symbolic Links)** 符号链接是一种软链接,它指向另一个文件或目录,而不是复制其内容。符号链接可以创建文件或目录的别名,有助于管理和组织文件系统。 在进行Shell编程时,理解这些基本的文件权限和安全概念是至关重要的。例如,你可能需要编写脚本来创建、修改或删除文件,并且需要确保这些操作在正确的权限下执行。此外,了解如何通过Shell命令如`chmod`、`chown`和`chgrp`来调整权限,以及如何使用`umask`设置默认权限,对于编写安全、可靠的脚本至关重要。 Shell编程不仅仅是编写命令行脚本,它还包括使用变量、流程控制、函数、输入/输出重定向等高级特性。在实际应用中,Shell脚本可以用来自动化日常任务,如系统维护、日志处理、文件备份等。通过熟练掌握Shell编程,你可以极大地提高工作效率,同时保证系统的稳定运行。 在后续章节中,你将学习到更多关于Shell编程的细节,如变量赋值、条件语句、循环结构、函数定义、错误处理以及如何调用外部命令。此外,还会接触到一些高级主题,如进程控制、管道和重定向、脚本调试等。这将帮助你全面理解和掌握Linux与Unix环境下的Shell编程技术。
2011-02-01 上传
本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的文字处理以及少量的系统管理问题。本书内容全面、文字简洁流畅,适合Shell编程人员学习、参考。 目 录 译者序 前言 第一部分 shell 第1章 文件安全与权限 1 1.1 文件 1 1.2 文件类型 2 1.3 权限 2 1.4 改变权限位 4 1.4.1 符号模式 4 1.4.2 chmod命令举例 5 1.4.3 绝对模式 5 1.4.4 chmod命令的其他例子 6 1.4.5 可以选择使用符号模式或绝对模式 7 1.5 目录 7 1.6 suid/guid 7 1.6.1 为什么要使用suid/guid 8 1.6.2 设置suid/guid的例子 8 1.7 chown和chgrp 9 1.7.1 chown举例 9 1.7.2 chgrp举例 9 1.7.3 找出你所属于的用户组 9 1.7.4 找出其他用户所属于的组 10 1.8 umask 10 1.8.1 如何计算umask值 10 1.8.2 常用的umask值 11 1.9 符号链接 12 1.9.1 使用软链接来保存文件的多个映像 12 1.9.2 符号链接举例 12 1.10 小结 13 第2章 使用find和xargs 14 2.1 find命令选项 14 2.1.1 使用name选项 15 2.1.2 使用perm选项 16 2.1.3 忽略某个目录 16 2.1.4 使用user和nouser选项 16 2.1.5 使用group和nogroup选项 16 2.1.6 按照更改时间查找文件 17 2.1.7 查找比某个文件新或旧的文件 17 2.1.8 使用type选项 17 2.1.9 使用size选项 18 2.1.10 使用depth选项 18 2.1.11 使用mount选项 18 2.1.12 使用cpio选项 18 2.1.13 使用exec或ok来执行shell命令 19 2.1.14 find命令的例子 20 2.2 xargs 20 2.3 小结 21 第3章 后台执行命令 22 3.1 cron和crontab 22 3.1.1 crontab的域 22 3.1.2 crontab条目举例 23 3.1.3 crontab命令选项 23 3.1.4 创建一个新的crontab文件 24 3.1.5 列出crontab文件 24 3.1.6 编辑crontab文件 24 3.1.7 删除crontab文件 25 3.1.8 恢复丢失的crontab文件 25 3.2 at命令 25 3.2.1 使用at命令提交命令或脚本 26 3.2.2 列出所提交的作业 27 3.2.3 清除一个作业 27 3.3 &命令 27 3.3.1 向后台提交命令 28 3.3.2 用ps命令查看进程 28 3.3.3 杀死后台进程 28 3.4 nohup命令 29 3.4.1 使用nohup命令提交作业 29 3.4.2 一次提交几个作业 29 3.5 小结 30 第4章 文件名置换 31 4.1 使用* 31 4.2 使用? 32 4.3 使用[...]和[!...] 32 4.4 小结 33 第5章 shell输入与输出 34 5.1 echo 34 5.2 read 35 5.3 cat 37 5.4 管道 38 5.5 tee 39 5.6 标准输入、输出和错误 40 5.6.1 标准输入 40 5.6.2 标准输出 40 5.6.3 标准错误 40 5.7 文件重定向 40 5.7.1 重定向标准输出 41 5.7.2 重定向标准输入 42 5.7.3 重定向标准错误 42 5.8 结合使用标准输出和标准错误 43 5.9 合并标准输出和标准错误 43 5.10 exec 44 5.11 使用文件描述符 44 5.12 小结 45 第6章 命令执行顺序 46 6.1 使用&& 46 6.2 使用|| 46 6.3 用()和{ }将命令结合在一起 47 6.4 小结 48 第二部分 文本过滤 第7章 正则表达式介绍 49 7.1 使用句点匹配单字符 50 7.2 在行首以^匹配字符串或字符序列 50 7.3 在行尾以$匹配字符串或字符 5