すべてのフォルダを「その他」から読み取り不可にする - ただし、「書き込み」と「実行」に関する元のステータスは維持する

すべてのフォルダを「その他」から読み取り不可にする - ただし、「書き込み」と「実行」に関する元のステータスは維持する

要約: コンピューター内のすべてのフォルダーの権限を変更して、「その他」に対してフォルダーの読み取り権限のみを失うようにするにはどうすればよいでしょうか。言い換えると、「書き込み」と「実行」に関するステータスは保持されますが、そもそも「読み取り」権限があった場合はその権限は失われるということですか。

ロングバージョン: 初めてサーバー (ユーザーが SSH 接続できるサーバー) を構成するときに、自分のhome/usernameフォルダーとサブフォルダーにのみアクセスできる新しいユーザーを作成する方法を見つけようと最初に思いました。

しかし、私はいくつかの参考文献を見つけました(例えばこの質問/回答usr/bin) をオンラインで公開し、ユーザーがやなどのシステムフォルダにアクセスしたりusr/lib、 などのフォルダに書き込んだりする必要があるため、これはおそらく良い考えではないと説明しましたtmp。もちろん、それは理にかなっています。そこで、代わりに私が実現しようとしたのは、ユーザーが使用システムフォルダにあるが、見るそれらのコンテンツ。

より具体的には、システム内のすべてのフォルダを「その他」に対して読み取り不可に設定しながら、書き込みおよび実行可能性に関しては「その他」に対する元の状態を維持することを意味します。たとえば、権限 を持つフォルダはに754なり、 を持つフォルダは になり、 を持つフォルダはなどになりますが、 、、またはを持つフォルダはそのままです。以下同様に続きます。750756752755751753752751750

この方法では、ルート以外のユーザーは、自分のフォルダーとサブフォルダー以外のフォルダーの内容を見ることはできませんhome/usernameが、元々許可されていたすべてのシステム フォルダー全体で通常どおり実行および書き込みを行うことができます。

すべてのフォルダーに対してこれを実行するにはどうすればよいですか? このアイデアの潜在的な欠陥に関するコメントももちろん歓迎します。

答え1

find /path/to/directory/ -type d -exec chmod o-r {} \;

動作するはずです。すべてのフォルダーに対して.findを実行し、他のフォルダーの読み取りビットを削除します。chmodchmod

答え2

カーネル自体によって開かれたバイナリ オブジェクトのみが実行可能としてフラグ付けされますが、読み取り可能ではありません。任意のタイプのスクリプト (bash、python など) は、実行する前に最初に読み取る必要があります。参照:

関連情報