没有合适的资源?快使用搜索试试~ 我知道了~
首页Linux与UNIX Shell:深入解析文件权限与命令操作
Linux与UNIX Shell:深入解析文件权限与命令操作
需积分: 10 6 下载量 123 浏览量
更新于2024-07-19
收藏 17.06MB PDF 举报
本资源是一份详细的LINUX与UNIX Shell编程指南,涵盖了Linux系统下的shell命令及其应用。首先,章节一深入解析了文件的安全与权限管理,包括文件类型、权限位(符号模式与绝对模式)、改变权限的方法(如chmod命令),以及特殊权限如suid/guid的使用及其目的。chown和chgrp命令用于修改文件所有者和组,umask则控制新文件的默认权限设置。此外,还介绍了符号链接的创建和用途。 第二部分着重于两个强大的工具:find和xargs。find命令提供了丰富的选项,如搜索文件名、权限、所有者、组、更改时间等,以及与cpio、exec等其他操作的结合示例。xargs则用于处理find命令的输出,将其作为参数传递给其他命令。这些章节通过实际案例帮助读者理解如何高效地在Linux环境中搜索和操作文件。 第三部分讲解了后台任务执行,包括定时任务的管理和调度,如crontab(详细解释了其语法、选项和常用场景)以及at命令的使用。&运算符在这一部分也得到了深入解析,演示了如何将命令放到后台运行。 整个指南结构清晰,实用性强,适合Linux初学者和进阶用户学习和参考,能够帮助他们更好地掌握Linux环境下的Shell编程技巧和文件管理系统管理。通过阅读和实践,读者可以提升对Linux系统权限控制、文件搜索和自动化任务执行的理解和熟练程度。
资源详情
资源推荐
(续)
权 限 所代表的含义
rwx r-x r- x 文文件属主可读、写、执行,同组用户和其他用户可读、执行
rw- rw- --- 文文件属主和同组用户可读、写
rw- rw- r- - 文文件属主和同组用户可读、写,其他用户可读
rw- rw- --- 文文件属主和同组用户及其他用户读可以读、写,慎用这种权限
设置,因为任何用户都可以写入该文件
1.4 改变权限位
对于属于你的文件,可以按照自己的需要改变其权限位的设置。在改变文件权限位设置
之前,要仔细地想一想有哪些用户需要访问你的文件 (包括你的目录)。可以使用c h m o d 命令来
改变文件权限位的设置。这一命令有比较短的绝对模式和长一些的符号模式。我们先来看一
看符号模式。
1.4.1 符号模式
c h m o d 命令的一般格式为:
chmod [who] operator [permission] filename
w h o 的含义是:
u 文件属主权限。
g 同组用户权限。
o 其他用户权限。
a 所有用户(文件属主、同组用户及其他用户 )。
o p e r a t o r的含义:
+ 增加权限。
- 取消权限。
= 设定权限。
p e r m i s s i o n的含义:
r 读权限。
w 写权限。
x 执行权限。
s 文件属主和组s e t - I D 。
t 粘性位*。
l 给文件加锁,使其他用户无法访问。
u,g,o 针对文件属主、同组用户及其他用户的操作。
*在列文件或目录时,有时会遇到“ t”位。“t”代表了粘性位。如果在一个目录上出现
“t”位,这就意味着该目录中的文件只有其属主才可以删除,即使某个同组用户具有和属主
同等的权限。不过有的系统在这一规则上并不十分严格。
如果在文件列表时看到“ t”,那么这就意味着该脚本或程序在执行时会被放在交换区 (虚
存)。不过由于当今的内存价格如此之低,大可不必理会文件的“ t”的使用。
4 第一部分 shell
下载
1.4.2 chmod命令举例
现在让我们来看一些使用 c h m o d 命令的例子。假定 m y f i l e 文件最初具有这样的权限: r w x
rwx rwx :
命 令 结 果 含 义
chmod a-x myfile rw- rw- rw- 收回所有用户的执行权限
chmod og-w myfile rw- r-- r- - 收回同组用户和其他用户的写权限
chmod g+w myfile rw- rw- r- - 赋予同组用户写权限
chmod u+x myfile rwx rw- r- - 赋予文件属主执行权限
chmod go+x myfile rwx rwx r- x 赋予同组用户和其他用户执行权限
当创建m y f i l e文件时,它具有这样的权限:
如果这是我写的一个脚本,我希望能够具有执行权限,并取消其他用户 (所有其他用户 )
的写权限,可以用:
$ chmod u+x o-w myfile
这样,该文件的权限变为:
现在已经使文件属主对 m y f i l e 文件具有读、写执行的权限,而 a d m i n组的用户对该文件具
有读权限。
如果希望某个脚本文件对你自己来说可执行,而且你对该文件的缺省权限很放心,那么
只要使它对你来说具有执行权限即可。
$ chmod u+x dt
1.4.3 绝对模式
c h m o d命令绝对模式的一般形式为:
chmod [mode] file
其中m o d e 是一个八进制数。
在绝对模式中,权限部分有着不同的含义。每一个权限位用一个八进制数来代表,如表
1 - 3所示。
表1-3 八进制目录/文件权限表示
八 进 制 数 含 义 八 进 制 数 含 义
0 4 0 0 文件属主可读 0 0 1 0 同组用户可执行
0 2 0 0 文件属主可写 0 0 0 4 其他用户可读
0 1 0 0 文件属主可执行 0 0 0 2 其他用户可写
0 0 4 0 同组用户可读 0 0 0 1 其他用户可执行
0 0 2 0 同组用户可写
在设定权限的时候,只需按照表 1 - 3 查出与文件属主、同组用户和其他用户所具有的权限
相对应的数字,并把它们加起来,就是相应的权限表示。
从表1 - 3中可以看出,文件属主、同组用户和其他用户分别所能够具有的最大权限值就是7。
第1章 文件安全与权限 5
下载
再来看看前面举的例子:
相应的权限表示应为6 4 4 ,它的意思就是:
0 4 0 0 + 0 2 0 0 (文件属主可读、写) = 0 6 0 0
0 0 4 0 (同组用户可读) = 0 0 4 0
0 0 0 4 ( 其他用户可读) = 0 0 0 4
0 6 4 4
有一个计算八进制权限表示的更好办法,如表 1 - 4所示:
表1-4 计算权限值
文 件 属 主 同 组 用 户 其 他 用 户
r w x r w x r w x
4 + 2 + 1 4 + 2 + 1 4 + 2 + 1
使用表1 - 4,可以更容易地计算出相应的权限值,只要分别针对文件属主、同组用户和其
他用户把相应权限下面的数字加在一起就可以了。
m y f i l e文件具有这样的权限:
r w - r - - r - -
4 + 2 4 4
把相应权限位所对应的值加在一起,就是 6 4 4 。
1.4.4 chmod命令的其他例子
以下是一些c h m o d 命令绝对模式的例子:
命 令 结 果 含 义
chmod 666 rw- rw- rw- 赋予所有用户读和写的权限
chmod 644 rw- r-- r- - 赋予所有文件属主读和写的权限,所有其他用户读权限
chmod 744 rwx r-- r- - 赋予文件属主读、写和执行的权限,所有其他用户读的权限
chmod 664 rw- rw- r- - 赋予文件属主和同组用户读和写的权限,其他用户读权限
chmod 700 rwx --- --- 赋予文件属主读、写和执行的权限
chmod 444 r-- r-- r- - 赋予所有用户读权限
下面举一个例子,假定有一个名为 y o a的文件,具有如下权限:
我现在希望使自己对该文件可读、写和执行, a d m i n组用户对该文件只读,可以键入:
如果希望自己对该文件可读、写和执行,对其他所有用户只读,我可以用:
如果希望一次设置目录下所有文件的权限,可以用:
chmod 644*
这将使文件属主和同组用户都具有读和写的权限,其他用户只具有读权限。
6 第一部分 shell
下载
还可以通过使用- R选项连同子目录下的文件一起设置:
chmod -R 664 /usr/local/home/dave/*
这样就可以一次将/ u s r / l o c a l / h o m e / d a v e 目录下的所有文件连同各个子目录下的文件的权限
全部设置为文件属主和同组用户可读和写,其他用户只读。使用 - R 选项一定要谨慎,只有在
需要改变目录树下全部文件权限时才可以使用。
1.4.5 可以选择使用符号模式或绝对模式
上面的例子中既有绝对模式的,也有符号模式的,我们可以从中看出,如果使用该命令
的符号模式,可以设置或取消个别权限位,而在绝对模式中则不然。我个人倾向于使用符号
模式,因为它比绝对模式方便快捷。
1.5 目录
还记得在前面介绍c h m o d 命令时讲过,目录的权限位和文件有所不同。现在我们来看看其
中的区别。目录的读权限位意味着可以列出其中的内容。写权限位意味着可以在该目录中创
建文件,如果不希望其他用户在你的目录中创建文件,可以取消相应的写权限位。执行权限
位则意味着搜索和访问该目录(见表 1 - 5、表1 - 6)。
表1-5 目录权限
r w x
可以列出该目录中的文件 可以在该目录中创建或删除文件 可以搜索或进入该目录
表1-6 目录权限举例
权 限 文 件 属 主 同 组 用 户 其 他 用 户
drwx rwx r- x ( 7 7 5 ) 读、写、执行 读、写、执行 读、执行
drwx r-x r- - ( 7 5 4 ) 读、写、执行 读、执行 读
drwx r-x r- x ( 7 5 5 ) 读、写、执行 读、执行 读、执行
如果把同组用户或其他用户针对某一目录的权限设置为 - - x,那么他们将无法列出该目录
中的文件。如果该目录中有一个执行位置位的脚本或程序,只要用户知道它的路径和文件名,
仍然可以执行它。用户不能够进入该目录并不妨碍他的执行。
目录的权限将会覆盖该目录中文件的权限。例如,如果目录 d o c s具有如下的权限:
而其中的文件p a y的权限为:
那么a d m i n 组的用户将无法编辑该文件,因为它所属的目录不具有这样的权限。
该文件对任何用户都可读,但由于它所在的目录并未给 a d m i n组的用户赋予执行权限,所
以该组的用户都将无法访问该目录,他们将会得到“访问受限”的错误消息。
1.6 suid/guid
我们在前面曾经提到过 s u i d和g u i d 。这种权限位近年来成为一个棘手的问题。很多系统供
第1章 文件安全与权限 7
下载
应商不允许实现这一位,或者即使它被置位,也完全忽略它的存在,因为它会带来安全性风
险。那么人们为何如此大惊小怪呢?
s u i d 意味着如果某个用户对属于自己的 s h e l l 脚本设置了这种权限,那么其他用户在执行这
一脚本时也会具有其属主的相应权限。于是,如果根用户的某一个脚本设置了这样的权限,
那么其他普通用户在执行它的期间也同样具有根用户的权限。同样的原则也适用于 g u i d ,执
行相应脚本的用户将具有该文件所属用户组中用户的权限。
1.6.1 为什么要使用suid/guid
为什么要使用这种类型的脚本?这里有一个很好的例子。我管理着几个大型的数据库系
统,而对它们进行备份需要有系统管理权限。我写了几个脚本,并设置了它们的 g u i d ,这样
我指定的一些用户只要执行这些脚本就能够完成相应的工作,而无须以数据库管理员的身份
登录,以免不小心破坏了数据库服务器。通过执行这些脚本,他们可以完成数据库备份及其
他管理任务,但是在这些脚本运行结束之后,他们就又回复到他们作为普通用户的权限。
有相当一些U N I X 命令也设置了s u i d和g u i d 。如果想找出这些命令,可以进入 / b i n或/ s b i n目
录,执行下面的命令:
$ ls -l | grep '^...s'
上面的命令是用来查找s u i d 文件的;
$ ls -l | grep '^...s..s'
上面的命令是用来查找s u i d和g u i d的。
现在我们明白了什么是s u i d ,可是如何设置它呢?下面就来介绍这个问题。如果希望设置
s u i d,那么就将相应的权限位之前的那一位设置为 4;如果希望设置g u i d ,那么就将相应的权限
位之前的那一位设置为2;如果希望两者都置位,那么将相应的权限位之前的那一位设置为4+2。
一旦设置了这一位,一个 s将出现在 x的位置上。记住:在设置 s u i d 或g u i d 的同时,相应的
执行权限位必须要被设置。例如,如果希望设置 g u i d ,那么必须要让该用户组具有执行权限。
如果想要对文件 l o g i n 设置s u i d,它当前所具有的权限为 rwx rw- r-- (741),需要在使用
c h m o d命令时在该权限数字的前面加上一个 4,即chmod 4741,这将使该文件的权限变为 r w s
rw- r- -。
$ chmod 4741 logit
1.6.2 设置suid/guid的例子
下面给出几个例子:
表1-7 设置s u i d / g u i d
命 令 结 果 含 义
chmod 4755 rws r-x r- x 文文件被设置了 s u i d ,文件属主具有读、写和执行的权限,所有其
他用户具有读和执行的权限
chmod 6711 rws --s --s 文文件被设置了 s u i d 和g u i d ,文件属主具有读、写和执行的权限,
所有其他用户具有执行的权限
chmod 4764 rws rw- r- - 文文件被设置了 s u i d ,文件属主具有读、写和执行的权限,同组用
户具有读和执行的权限,其他用户具有读权限
8 第一部分 shell
下载
剩余367页未读,继续阅读
254、小小黑
- 粉丝: 342
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- zlib-1.2.12压缩包解析与技术要点
- 微信小程序滑动选项卡源码模版发布
- Unity虚拟人物唇同步插件Oculus Lipsync介绍
- Nginx 1.18.0版本WinSW自动安装与管理指南
- Java Swing和JDBC实现的ATM系统源码解析
- 掌握Spark Streaming与Maven集成的分布式大数据处理
- 深入学习推荐系统:教程、案例与项目实践
- Web开发者必备的取色工具软件介绍
- C语言实现李春葆数据结构实验程序
- 超市管理系统开发:asp+SQL Server 2005实战
- Redis伪集群搭建教程与实践
- 掌握网络活动细节:Wireshark v3.6.3网络嗅探工具详解
- 全面掌握美赛:建模、分析与编程实现教程
- Java图书馆系统完整项目源码及SQL文件解析
- PCtoLCD2002软件:高效图片和字符取模转换
- Java开发的体育赛事在线购票系统源码分析
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功