セキュリティのためにプライベートシェルスクリプトをどこに配置する必要がありますか?

セキュリティのためにプライベートシェルスクリプトをどこに配置する必要がありますか?

私はいくつかのカスタム機能を作るためにshを学んでいます。私はスタック交換で確認し、誰かが私の個人的なスクリプトを下に置くと、実際にそのようなことをするよう~/binなマルウェアを探索できると言ったので、私の個人的なスクリプトのための安全な場所を探しています。ls()rm -rf

答え1

ilkkachuのコメントに基づいて編集されました。ファイル書き込み禁止が削除から保護されていないことを忘れました。したがって、ファイルも書き込み禁止フォルダに配置する必要があります。


次の場合、ファイルを変更するにはパスワードが必要です。

  • 所有者にのみ書き込み権限があります。
  • 所有者はルートです。

それでも、誰でもファイルを削除して自分のコンテンツに再作成できます。これを防ぐには、書き込み権限がないフォルダにファイルを配置する必要があります。フォルダの削除も可能なので返品保護されたフォルダーにある必要があります。などまで/...

つまり、ファイル権限が次のようになります。

.rw-r--r-- root通常のユーザーシェルで実行できますが、変更するにはsudoが必要です。

.rwxr-xr-x root実行可能でなければならない場合も同様です。

そのファイルの間に含まれるすべてのフォルダーは、次のようにする/必要があります。

drwxr-xr-x root

幸いなことに、ほとんどのトップレベルのシステムフォルダはhomeルートでのみ書くことができるので、それは適しています。コンベンションが何なのかよくわかりません。/usr/shareたとえば、見てみましょう。

したがって、通常のファイルから始めてください~/myscripts/script.sh

# change file permissions to .rw-r--r--
chmod 644 myscripts/script.sh
# or to .rwxr-xr-x
chmod 755 myscripts/script.sh

# set permissions on the folder (they should be like this by default already)
chmod 755 myscripts

# make root the owner
sudo chown root:root myscripts/script.sh
sudo chown root:root myscripts

# place it in one of the root folders
sudo mv myscripts /usr/share/

この攻撃ベクトルが気になる場合は、すべての自動実行シェルスクリプトが同様に保護されていることを確認する必要があります。また、新しい場所を指すすべてのシンボリックリンクまたは設定ファイルをロックする必要があります。

関連情報