linux目录权限都是nobody,你真的了解Linux的目录权限?

最近系统的学习Linux知识,看到目录权限的知识点时有点恍然大悟,顿感醍醐灌顶,另外还有些许的汗颜。

在说Linux目录权限之前,我先简要梳理下Linux文件的权限。

0ca30eb1e76c?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

文件权限有10列,第1位代表这个文件是“目录,文件或链接文件等”,[-] 代表文件 [d]代表目录,第2到第4位表示此文件的拥有者权限,第5到7位表示组拥有的权限,最后三位表示其他用户拥有的权限,每组身份的权限都是3位 rwx (读,写,执行)且位置不变,若不具备某一个权限,使用 - 占位。  Linux文件的权限对于没有系统学习过Linux的工程师来说也是基本一看便懂得的,文件可读取,可写入,可执行,对于一个菜鸟级写高级语言的工程师来说也是太易理解了。但也许就是简单,对于文件夹的权限大多数并不会再去理解,觉得和文件应该会没什么区别,因为这并不影响写代码,如果在自己本地或测试环境执行程序遇到文件夹权限问题,工程师们都信心满满地输入chown -R nobody:nobody wenjianjia   chmod -R 777 wenjianjia 一切问题都解决了。大概就是这样把目录权限的理解给忽略掉了。

0ca30eb1e76c?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

上面也提到了,文件权限的第一位为[d]时表示目录,接着后9位与文件是一样的,表示目录每组身份的权限,关键点就在于此权限的理解,一定要与文件权限的理解区别开。对于文件的权限的理解上面也说了,大多数人都会认为是简单的,主要是因为与我们大众主观上的理解是一致的。因为文件里存储的是数据,但目录里存储的是一个一个的文件,其实际上目录主要的内容是文件名列表。下面具体来看看目录中各权限意义。

r 可读,对文件来说文件是可读的,比如读取文本文件里的文字内容;对于目录来说可读,表示可读取目录结构列表,即读取文件名列表,所以如果目录具有r 可读权限,使用ls 可列出目录下的文件名。这里跟大众主观上的读取有所出入了。

w可写,对于文件来说文件可添加,可修改,可删除文件中的数据;对于目录来说,具有可写权限就大,只要是与文件名相关的操作,比如添加文件或目录,删除文件或目录,重命名或移动文件或目录等都是目录的可写权限。

x可执行,对于文件来说可执行代表此文件具有被系统执行的权限;对于目录来说可执行代表的是用户能否进入该目录,即是否可以使用cd命令进入此目录。这个理解就以主观上的可执行相差太多了,必须另外记忆了。

所以根据上面对文件目录权限的总结,若用户对某目录具有r权限,但不具备x权限,是不能进入此目录的,不能进入此目录就意味着更不能读取目录里面文件的具体内容就算此用户有此文件的权限,但因为有r权限,所以能查看此目录下有哪些文件。

请看下面练习:

0ca30eb1e76c?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

0ca30eb1e76c?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

当前账户为vagrant ,testuser目录权限为drwx------,当vagrant用户试图进入testuser目录,提示cannot open directory testuser:Permission denied 即没有权限 ,

testuser1目录权限为drwx---r--,当试图进入testuser1,提示ls: cannot access testuser1/file1.log: Permission denied,虽然还是提示没有权限,但与上面提示不一致,请注意看,且在提示后列出了file1.log ,即列出了目录中的文件名,目录的r权限就到此为止,它只能列出文件名。即使vagrant用户有能查看file1.log的权限,但由于vagrant用户对testuser1目录只有 r  读权限所以是无法查看file1.log的内容。

0ca30eb1e76c?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

testuser2目录的权限为drwx---r-x,通过cd命令能更直观的了解目录的 x 权限,只有当用户具有某个目录的x权限,才能通过cd命令进入此目录,把当前目录当成工作目录。

0ca30eb1e76c?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

testuser3的权限drwx---rwx,通过touch 命令在工作目录中创建新文件体现了目录的w权限,vagrant用户虽然对testuser2目录拥有r 读与 x 执行(即可进入此目录中)权限,进入目录后也可以查看file1.log的内容(因为有file1.log的[r]权限),但由于对testuser2不具备w写权限,所以无法创建文件;而用户对testuser3目录具有[w]权限所以可以进行touch命令创建文件。

总结:Linux操作系统中任何一个文件(文本文件,目录等)都具有,用户、组、其他3种身份的个别权限。对目录权限的认识不能与文件权限混为一谈,目录的[r]权限表示可以列出目录中的文件名列表,[w]权限表示可以在目录中添加文件,修改文件名,移动文件,删除文件等,记住只要与文件名变动相关的操作都需要有w权限,[x] 执行权限表示用户是否能进入此目录。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值