今天在ubuntu里面做了几个有趣的权限管理实验,发现原来ubuntu的权限系统是嵌套式的。
比如在你的/home/user/下面有文件夹.ssh。然后你觉得.ssh文件夹里面的文件非常重要,而且一般也不需要改,只需要读取就行了。于是你输入了命令
$ sudo chown root:user ~/.ssh
$ sudo chmod 751 ~/.ssh
现在你觉得这时候.ssh文件夹应该不能被user给删除,对里面文件写入了吧。然而,当你右键.ssh文件夹的时候你会发现,你依然可以把这个文件夹删除,移动什么的,这是个归属于root的文件夹。
点进去之后,你会发现里面的文件确实是只读的,你没有权限删除里面的文件。这就是我所说的嵌套式权限管理。
对文件的创建,删除的权限是挂在你这个文件夹的权限上的,而对某个文件/文件夹的读写权是挂在这个文件/文件夹上的。什么意思呢?
比如,user文件夹因为是你的用户文件夹,user文件夹显示的权限7,即可读可写可执行,因此user下所属文件/文件夹就可以给你随意的进行删除,无论这个文件/文件夹是属于谁的,于是.ssh就可以给你删除了。但是对于这个文件夹下的文件/文件夹的读写权是跟具体文件的权限有关的,比如这个时候的.ssh你只能进去看看里面有什么文件,可以打开里面的文件和文件夹来看,但是你却不能删除它!
现在你能理解chown user -r
的意义了吧,-r是递归地在你选定的文件夹里面设置相同的权限,比如chmod 777 -r /home/user
这个时候不仅user被设置为777权限,.ssh也被设置为777权限。于是user下的所有文件及文件夹就都可以读写还有执行了。