需求: /目录下面有一个public目录,每一个系统的普通用户均可以往这个目录放东西,对在public目录下本身的文件有彻底控制权,不能修改删除别人的文件,jack用户对此目录及目录下全部文件有彻底控制权
思路:
一、每一个用户均可以在public目录底下放文件,那么这个目录的权限就是 777,全部人可写可读可执行drwxrwxrwxlinux
二、对本身的文件有彻底控制权,对于一个普通用户来讲,登录本身的帐号创建的文件默认权限应该是664或者775(/etc/profile里面普通用户的umask=002),属主属组都是本身,普通用户对本身的文件是有彻底控制权的bash
三、粘滞位,public目录权限777规定了全部人对目录下的文件有删除剪切移动的权限,那么这里就有一个问题,tom在public底下创建的文件,lucy也是能够删除的,由于tom对于public这个目录是普通用户,lucy也是普通用户,咱们权限都是7,一个普通用户能够删除大目录下全部人的文件,显然是不合理危险的,因此我须要对public这个目录在进行一些限制,public目录的权限改为1777,这个1就是粘滞位t,当目录被设置了粘滞位权限之后,即使用户对该目录有写入权限,也不能删除该用户中其余用户的文件数据,而是只有该文件的全部者和root用户才有权将其删除,说白了就是实现了public目录权限和底下文件权限的一个动态平衡。粘滞位只能对目录设置,权限中x会变成t。
验证:ide
当须要为用户提供一个开放目录而不但愿形成管理混乱时,经过为目录设置粘滞位权限即可以解决
但是如何让jack用户对这个公共目录下的全部其它用户建立的文件有彻底控制权呢,这个时候就须要超级管理员root 在/etc/sudoers配置文件受权jack用户chown命令,chown -R jack /public递归更改public目录及其下面子文件的属主为jack, 又由于chown只能针对已经存在的文件作属主更改,把这条命令chown -R jack /public加到jakc用户的系统环境.bashrc文件里,jack用户每次登录系统对public里面文件刷一遍属主权限,此时实现jack用户对下面全部文件有彻底控制权,但是有一个问题,当jack用户修改其余普通用户好比tom用户的文件时,属主会变动成jack,又由于对于普通用户的反其码umask=002,普通用户对本身的文件彻底控制权经过属组来控制(属组中只有有本身一我的)
验证:3d
注意在root执行chown -R jack /public时候,tom2这个文件并不存在,因此属主属组默认都是本身
至此,就经过粘滞位Stickybit实现了公共目录的管理,同时经过root对jack的chown属主受权,更改jack的.bahsrc环境j,让jack成为公共目录的主人,可是jack此时存在chown权限过限的风险,jack对其余全部目录也有chown更改属主的权限,这是visudo受权没法避免出现的问题,只能经过法律与道德进行约束,也能够经过root更改目录属主为jack,不经过受权jack方式,而后经过脚本,检测只要jack一登陆root就去执行,这样经过技术就能够解决权限过分问题。blog