私は何時間も何人かのユーザーと共有したい非常に短い一時ディレクトリを作成しました。/some/path/tmp
sudo chown 777 -R /tmp
残念ながら、私は代わりに有効にしたsudo chown 777 -R tmp
ので、私の/tmp
ファイルは完全に公開されました。
今は完全に公開されているので、セキュリティ上の問題はありますか?より安全な設定に戻す必要がありますか?正しい権限は何ですか/tmp
?
答え1
一般設定は/tmp
1777で、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システムで。