`
oldrat
  • 浏览: 1207 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

你不知道的Linux/Unix下目录权限的含义

阅读更多

节选自我的博文 Linux/Unix的精巧约定两例:目录权限和文本行数

如有谬误敬请指正。

目录的执行权限

普通文件有执行权限、执行操作,很容易理解,目录执行权限是个啥?

 写道
目录的执行权限 是 下面操作的前提:

1. 该目录下的文件(包含子目录)的读、写、执行操作(即目录下文件的全部操作)
2. 该目录本身的写操作
    注: 要对目录进行写操作,要同时有该目录的写权限 和 该目录的执行权限。
    详见《Unix环境高级编程》第四章第5节“文件访问权限”;中文版第二版在第76页。
    多谢kiminotes同学半夜还和我一起验证和确认这个问题,并给我找出了上面资料。

关于上面提到的目录的读、写操作的说明在下一节给出。


上面条款1实际上包含有递归说明:
1. 目录的执行权限前提要有父目录的执行权限;
2. 父目录的执行权限的前提是要有父目录的父目录的执行权限;
3. ……

 

举个例子来讲解一下,比如要读文件/home/foo/readme.txt:
1. 要读readme.txt,前提要可以执行父目录foo
2. 要执行foo目录,前提要可以执行父目录home
3. 要执行home目录,前提要可以执行父目录/(即root目录)
4. root目录没有父目录了(或者说,root目录的父目录是自己),递归终止。

 

上面分析的结果是,要读文件/home/foo/readme.txt需要:
1. readme.txt的读权限
2. foo目录的执行权限
3. home目录的执行权限
4. /目录的执行权限


通过上面分析可以看出,目录的执行权限是对其下子文件进行操作的前提。

 

所以只要对自己的Home目录的权限改成700,就可以拒绝他人查看自己Home下的文件的内容、在目录下新建或是删除文件。
# 如果只给他Home目录的读权限,还是可以list出Home下有哪些文件,见下一节的说明

$ chmod 700 .
$ ls -ld .
drwx----- 9 foo foo 4.0K 2012-11-20 00:11 ./

注: ls的-d表示list文件是目录时,不去list目录下文件,而是list目录本身。

目录读、写操作

普通文件(非目录)的读、写操作很容易理解。目录的读、写操作说明如下:

 写道
目录读操作 = 可以list出目录下有哪些文件
写操作 = 可以在该目录下新建和删除这个目录下的文件(包含新建和删除子目录)
      注:要对目录进行写操作,前提要同时有该目录的写权限 和 该目录的执行权限。

 
所以,为了删除一个现有的文件,必须对包含该文件的目录具有写权限和执行权限;对该文件本身不需要有读、写权限。

讨论

目录这些权限的约定,让整个目录(包含下面所有的子文件)的控制变得简单,简单调整这个目录上的执行权限就可以了;信息集中,方便维护。

想想Windows的约定吧,是不是想到那个“应用到所有子目录和文件”的选项,要把所有的子目录都设置一遍。

分享到:
评论

相关推荐

    Linux/UNIX系统编程手册(源代码)

    信号是Linux/UNIX系统中的一种异步事件通知机制,如`SIGINT`(中断)用于处理用户按下Ctrl+C,`SIGSEGV`(段错误)用于捕获非法内存访问。 10. **权限与安全**: 文件和目录的权限控制是系统安全的基础。`chmod`...

    linux/unix系统编程手册附录代码

    《Linux/Unix系统编程手册》是一本深受程序员和系统管理员喜爱的经典著作,它详细阐述了在Linux和Unix操作系统上进行低级编程的各种技术。附录中的代码是书中的实例,旨在帮助读者深入理解和掌握这些系统编程的核心...

    Linux/UNIX系统编程手册 源码

    《Linux/UNIX系统编程手册》是一本深受程序员和系统管理员喜爱的经典著作,它详细阐述了在Linux和UNIX操作系统上进行系统级编程的各种技术。源码是书籍内容的实践部分,对于学习和理解书中的概念至关重要。这个...

    Linux UNIX系统编程手册(下册)

    《Linux UNIX系统编程手册(下册)》是深入学习Linux和UNIX系统开发的重要参考资料,尤其对那些希望在这些操作系统上构建应用程序的开发者来说,这本书无疑是不可或缺的宝藏。它涵盖了广泛的主题,包括系统调用、...

    exercise_one_due2v3_Linux/Unix编程_

    【描述】中的文字“很好周年活动赛纳好的那可视电话将上的还是那的呢”似乎是一段错误的或不相关的文本,可能是一个误解或者输入错误,因此无法从中提取与Linux/Unix编程相关的信息。 【标签】"due2v3 Linux/Unix...

    Linux/UNIX系统编程手册

    《Linux/UNIX系统编程手册》是一本专为程序员和系统管理员设计的专业指南,由Michael Kerrisk撰写,并由人民邮电出版社出版。这本书以其详尽的代码示例为特色,深入探讨了Linux和UNIX操作系统的底层机制,是学习系统...

    cofg.rar_Linux/Unix编程_phone

    标题 "cofg.rar_Linux/Unix编程_phone" 暗示了这个压缩包与Linux或Unix操作系统下的手机编程有关,而“Samsung SCH-I730 Mobile phone modification tool”描述则指出这是一个针对三星SCH-I730手机的修改工具。...

    《linux/unix系统编程手册》官方参考源码

    《Linux/Unix系统编程手册》是一本权威...在实际操作中,可以在非共享目录下解压源码,避免权限问题,便于学习和实验。这个过程将有助于深化对Linux/Unix系统工作原理的理解,为成为一名熟练的系统程序员奠定坚实基础。

    Linux_UNIX系统编程手册(上).pdf

    《Linux_UNIX系统编程手册》是一本深度探讨Linux和UNIX系统编程的经典著作,旨在帮助开发者深入理解操作系统内核与应用程序之间的交互机制。这本书分为上下两册,我们这里关注的是上册,它涵盖了诸多基础且重要的...

    LINUX/Unix程序设计教案 很好的学习教程。

    2. **文件系统与文件操作**:了解Linux/Unix的文件系统结构,如根目录 `/`、用户主目录 `~` 和常见的系统目录。学会使用`cd`、`ls`、`mkdir`、`rm`等基本命令进行文件和目录管理。 3. **进程管理**:理解进程的概念...

    akd.rar_Linux/Unix编程_wellpt3

    标题“akd.rar_Linux/Unix编程_wellpt3”暗示了这个压缩包可能包含与Linux或Unix系统下的编程相关的资料,特别是与“wellpt3”相关的一个项目或教程。描述提到“通过详细简单的例子,介绍JSP中怎么样查询数据库中的...

    Linux_leds.rar_Linux/Unix编程

    在Linux/Unix编程环境中,LED(Light Emitting Diode,发光二极管)的控制是一项常见的硬件交互任务,尤其在嵌入式系统中。Linux内核提供了LED子系统,允许用户空间程序通过特定的API来操作和管理LED设备。本项目名...

    Linux/unix shell 命令和编程详细

    Linux和Unix Shell是操作系统交互的重要工具,用于自动化任务和脚本编写。...通过深入学习和实践,你可以有效地管理和自动化Linux/Unix系统。提供的PDF文件很可能是对这些主题的详细讲解,建议逐一阅读以提升技能。

    Linux就该这么学 高清晰PDF_linux_Linux/Unix编程_

    1. **Linux基础**:Linux是一种开源的操作系统,基于Unix,由林纳斯·托瓦兹开发。它提供了强大的命令行界面和图形化桌面环境,广泛应用于服务器、嵌入式设备及个人计算机上。Linux的自由和开放源码特性使得开发者...

    Linux_UNIX下的不可执行目录.pdf

    这一概念由王少平和李善平在《计算机应用研究》2004年的文章中提出,探讨了在Linux/UNIX环境下如何设计和实现不可执行目录,以增强系统的安全性。 在传统的Linux/UNIX文件系统中,权限被划分为读、写和执行三个级别...

    Understanding Unix/Linux Programming

    书中的练习和光盘资源提供了丰富的实践机会,对于任何希望在Unix/Linux环境中开发软件的人来说,都是不可或缺的学习材料。通过学习这本书,读者将能够熟练地利用Unix/Linux的强大力量,编写出高效、稳定的系统级程序...

    ftp命令详解--linux/unix

    在Linux和Unix系统中,FTP命令行客户端提供了丰富的功能,使得用户能够方便地进行文件上传、下载、目录浏览等操作。以下是对标题和描述中涉及的FTP命令的详细解释: 1. `ftp [-v -d -i -n -g] [hostname]`:这是...

    Linux_Unix设计思想.pdf

    10. **编译和构建系统**:Makefile和autotools是Unix/Linux下常见的构建工具,用于自动化编译、链接和安装过程。 11. **软件包管理系统**:如RPM(Red Hat Package Manager)和dpkg(Debian Package)等,使得软件...

    Linux/unix shell-scriptting编程经典PPT

    Linux/Unix Shell脚本编程是系统管理员和开发者日常工作中不可或缺的一部分。这个经典的PPT主题涵盖了Shell脚本的基础知识,特别适合初学者和有一定经验的LINUX开发与测试人员学习。 首先,什么是Shell?Shell是...

Global site tag (gtag.js) - Google Analytics