.bashrc
sudo を使用していくつかのコマンドを実行する必要があります。これらのコマンドはまたはにあり~/bin
、git リポジトリ (ドットファイルなど) に保存されます。
~root
にユーザーの を指すシンボリック リンクを配置しました$HOME
が、セキュリティ上あまり良くないと思ったので削除しました。
私の懸念は、非ルートユーザーがこれらのファイルへの書き込み権限を持たない場合、悪意のあるプログラムが権限昇格を実行できる可能性があります。しかし、私の考えでは安全ではないドットファイル リポジトリが多数あります。
では.bashrc
、sudoコマンドできる/etc/sudoers
NOPASSWD でオンにしてください。bin/*.sh
スクリプトでは、コマンドから sudo を省略して chown して root にしようと思っていましたが、git は所有権を保存しないので、これは問題になる可能性があります。(ほぼ)すべての個別のコマンドはとにかく sudo を必要とするので、スクリプトを root に割り当てる方が安全である点を除けば、技術的に同じだと思います。Git は何らかの問題を引き起こすと思います。
考えてみると、すべてのコマンドを/etc/sudoers
NOPASSWD で許可した場合、ルート パスワードが要求されると、何かがおかしいと感じます。
追加情報:
- これは、ローカルのシングルユーザー マシン向けです。
- デスクトップ コンピュータへの不正アクセスは問題にならないため、自動ログインを設定しています。
- 私のラップトップでは、セッションを開始するためにパスワードが必要です。
ここまでで質問が明確でない場合は、これらのスクリプト/コマンドを安全に配置するにはどうすればよいですか? ルートによる権限昇格は、自分のユーザーのデータに対する悪意のあるプログラムよりも有害でしょうか? 考えすぎなだけでしょうか?
答え1
書き込み可能なスクリプトは、あなたが見ていない間に悪意のあるものに置き換えられる可能性があり、root がそれを実行するとゲームオーバーになります。
確かに、マシンの唯一のユーザーであれば、リスクは低くなります。しかし、一般ユーザーのアカウントをクラックする方が簡単な場合が多く (マルウェアを含むメールを読んだり、悪意のある Web サイトに接続したり、ランダム ソースを無作為にコンパイルして実行して「何が起こるか確認する」など)、ルート権限に昇格できるようになります。
答え2
私が認識しているすべてのオプション ( /usr/local/bin
、所有者ルート、書き込み権限の削除) を考慮して、バージョン管理された各ファイルに不変フラグを設定しました。
sudo chattr +i filename
非ルートユーザーや所有者でさえフラグをリセットすることはできません。ファイルや親ディレクトリを削除したり置き換えたりすることもできません。
ファイルを編集するために、次の関数を追加しました.bashrc
:
editrc () {
sudo chattr -i $1
nano $1
sudo chattr +i $1
}
他のコンピュータではドットファイルを取得する必要があり、フラグは の前に削除してgit pull
から再度適用する必要があります。フラグを引数として受け取るヘルパー関数を作成しました。
protect-config () {
FLAG=$1
FILES=$(git ls-files | xargs -I @ -- find @ -type f | xargs echo)
lsattr $FILES
if [ "$FLAG" ]; then
sudo chattr $FLAG $FILES
fi
}
そうは言っても、考えすぎです。それでも、今はそれが定着しています。主に良い習慣によるものです。
編集: 安心感よりも不便さの方が大きかったので、もう使用していません。