2017-08-09 10 views
2

ユーザーのホームディレクトリにフォルダを作成し、ファイルを読み書きできるようにするために必要です。フォルダを削除することはできません(通常のユーザーでsudoerではなく)。ユーザーに対してフォルダ/ディレクトリを削除/削除できないようにするにはどうすればいいですか?

私の場合(RedHat)、ユーザーがフォルダを所有しているため、root権限を持つファイルをuser`sフォルダ内に置くだけでは不十分でした。
私の場合、ユーザーがフォルダを所有している(またはすべてのアクセス許可を持っている)場合は、ルートファイルまたは空のフォルダがあっても削除できます。

私はchownと400、000、o + t、1775などの許可を持って遊ぶことを含む多くの実験を行いました。最初はchattrを使いたくありませんでした。

私は解決策を見つけました。これは私が以下の答えとして共有しています。これまでの私のニーズに合ったバリアント。

+0

質問と回答を並行して編集して、質問と回答の分離したペアを作成しました。編集は私が通常行うよりもはるかに広範囲です。それがあなたの意図を超えていると思ったら教えてください。その場合はロールバックして謝ります。 – Yunnosch

+0

@Yunnosch私はすべてが大丈夫だと思う、あなたはポイントを明確にするのに役立つ素晴らしい仕事をしています。ありがとうございました。 –

+0

ディレクトリを削除するには、親ディレクトリに書き込む権限が必要です。だから、問題のユーザーからそのアクセス許可を削除し、サブディレクトリを削除することはできません... – twalberg

答えて

2

ここに私自身が見つけた解決策があります。
基本的に、ルートサブフォルダが空でない場合、ユーザーはそれをもう削除できないという事実を利用します。

ユーザのホームディレクトリにユーザ権限を持つフォルダを作成するたびに(すでに存在しない場合)、スーパーユーザ(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 
+0

ファイルではなくファイルではないフォルダを作成するのはなぜですか?あなた自身に尋ねたり答えたりすることは、おそらく高く評価されます。しかし、あなたはまだあなたの解決策を説明しなければならないだけでなく、何が問題を解決した理由と理由も説明しなければなりません。特に、問題の規定された要件と矛盾するものとして読むことができる場合。 – Yunnosch

+0

私の場合、それはユーザフォルダであるため、ルートファイルだけを置くだけでは不十分です。私が正しく覚えていれば、ユーザーがフォルダを所有している(またはすべての権限を持っている)場合、ルートファイルまたは空のフォルダがあってもそれを削除できるのは、Linuxのポリシーです(他のディストリビューション/バージョンでは確かに言えません)。ルートサブフォルダが空でないとき、彼はそれをもう削除することができません。 –

+0

興味深い背景情報。私はそれを質問に編集することをお勧めします。私の意見では、この質問は「有用で研究されている」(ただしそれほど重要ではない...)。多分あなたはこれで何かを引用することもできますか? – Yunnosch

関連する問題