/ tmpに対する正しい権限は何ですか?誤ってすべてを再帰的に公開に設定しました。

/ tmpに対する正しい権限は何ですか?誤ってすべてを再帰的に公開に設定しました。

私は何時間も何人かのユーザーと共有したい非常に短い一時ディレクトリを作成しました。/some/path/tmp

sudo chown 777 -R /tmp残念ながら、私は代わりに有効にしたsudo chown 777 -R tmpので、私の/tmpファイルは完全に公開されました。

今は完全に公開されているので、セキュリティ上の問題はありますか?より安全な設定に戻す必要がありますか?正しい権限は何ですか/tmp

答え1

一般設定は/tmp1777で、lsで表示されますdrwxrwxrwt。つまり、完全に開いていますが、ファイルの所有者だけを削除できます(これはtディレクトリの追加ビットの意味です)。

モード777を使用する場合の問題は、/tmp他のユーザーが作成したファイルを削除して目的のコンテンツに置き換えることができることです。

ファイルシステムがtmpfsの場合、/tmp再起動するとすべてが復元されます。それ以外の場合はを実行してくださいchmod 1777 /tmp

また、多くの文書を/tmp機密に保つ必要があります。ただし、少なくとも1つのディレクトリは誰でも読むことができなければならず/tmp/.X11-unix、他の同様のディレクトリ(/tmp/.XIM-unixなど)も可能でなければなりません。ほとんどの場合、次のコマンドを使用すると正しく設定されます。

chmod 1777 /tmp
find /tmp \
     -mindepth 1 \
     -name '.*-unix' -exec chmod 1777 {} + -prune -o \
     -exec chmod go-rwx {} +

つまり、すべてのファイルとディレクトリをプライベートに設定します(すべての権限、グループなどを削除します)、誰もがX11ソケットにアクセスできるようにします。これらのソケットへのアクセス制御は、ファイル権限ではなくサーバーによって強制されます。さらされるべき他のソケットがあるかもしれません。find /tmp -type s -user 0世界中からアクセスできるようにするために必要なルート所有ソケットを見つけるには、実行してください。他のシステムユーザーが所有するソケットがあるかもしれません(例えば、システムバスとの通信に使用されます)。ナビゲーションfind /tmp -type s ! -user $UID$UIDユーザーIDがある場所)

答え2

/tmpすべての人に対する読み取り、書き込み、および実行権限が必要ですが、通常、ユーザーが他のユーザーに属するファイル/ディレクトリを削除できないように、固定/var/tmpビット()も追加します。o+tだからchmod a=rwx,o+t /tmp動作する必要があります。

権限を再帰的に変更する場合...ファイルとディレクトリの所有者/グループが同じままである限り、大きな問題は発生しません。ただし、/tmpユーザーのプライバシーを保護するために、他のユーザーまたはグループ全体の権限を削除して、/ tmp自体以外のすべてのアイテムの権限を変更することもできます。rx

検索はこれを行うのに最適な方法です。ルートとして、次のことを行います。

cd /tmp
find . -type f -exec chmod u=rw,go= {} \;   # (or u=rw,g=r,o= {})
find . -type d -exec chmod u=rwx,go= {} \;  # (or u=rwx,g=rx,o= {})

答え3

[root@Niflheim tmp]# ls -alF .
total 1632
drwxrwxrwt 15 root root    4096 Apr  7 04:24 ./
drwxr-xr-x 28 root root    4096 Apr  2 21:02 ../
[root@Niflheim tmp]# stat -c '%A %a %n' .
drwxrwxrwt 1777 .

CentOS 5.9システムで。

関連情報