如何使文件夹/目录对用户不可删除/不可删除但仍可写

时间:2017-08-09 12:39:25

标签: linux bash sh file-permissions

当需要在用户的主目录中创建文件夹,允许用户在文件夹中读取/写入/删除文件但不允许删除文件夹本身(考虑到普通用户)时,需要这样做而不是sudoer)。

在我的情况下(即RedHat)仅仅将具有root权限的文件放在用户的文件夹中是不够的,因为用户拥有该文件夹。
在我的情况下,如果用户拥有(或拥有所有权限)文件夹,即使使用根文件或空文件夹,他也可以将其删除。

我做了很多实验,包括玩chown和权限,如400,000,o + t,1775等。最初我不想使用chattr

与此同时,我找到了一个解决方案,我在下面作为答案分享;一种适合我目前需要的变体。

1 个答案:

答案 0 :(得分:2)

这是我发现自己的解决方案 基本上它使用的事实是,当root子文件夹不为空时,用户不能再删除它。

在下面的示例中,超级用户(root)每次创建(如果不存在)具有用户主目录中的用户权限的文件夹,然后放入具有root权限的文件夹(如果已经不存在),并且在根文件夹中放置一个具有root权限的文件。

## prepare directory for the external configuration
EXT_CONFIG_PATH="~user/.EXT_CONFIG"
mkdir -p ${EXT_CONFIG_PATH}
chown user:user ${EXT_CONFIG_PATH}
chmod 555 ${EXT_CONFIG_PATH}
mkdir -p ${EXT_CONFIG_PATH}/.rootguard
chmod o+t ${EXT_CONFIG_PATH}/.rootguard
touch ${EXT_CONFIG_PATH}/.rootguard/.rootguard
chmod 400 ~user/.EXT_CONFIG/.rootguard/.rootguard