ほとんどの場合、ソースからプログラムをインストールするときは、新しいユーザーと新しいグループを作成し、/usr/local/<myapp>
を指定することをお勧めします。 最近作成されたユーザーとグループの所有権。
-
なぜそのような慣習が良い習慣と見なされるのですか?
-
何が改善されますか?
例:MySQLデータベースサーバーのmysqlユーザー/mysqlグループ。
承認された回答:
慣例は、アプリケーションごとではなく、サービスごとに1つのユーザーとグループを作成することです。つまり、ローカルユーザーによって実行されるプログラムは、root以外のユーザーとしてインストールする必要はありません。デーモン、バックグラウンドで実行され、ネットワークまたはその他の通信手段を介して送信される要求を実行するプログラムであり、専用ユーザーとして実行する必要があります。
デーモンは専用ユーザーとして実行されるため、(バグが原因で、おそらく攻撃者によって引き起こされた)誤動作した場合に発生する可能性のある被害は限定的です。影響を受けるのはデーモンのデータファイルのみです(攻撃者がローカルルートホールを見つけることができた場合を除く)。 、発生する可能性があります)。たとえば、データベースデーモンmysqld
専用のユーザーおよびグループとして実行mysql:mysql
およびデータベースのデータファイル(/var/lib/mysql/*
)mysql:mysql
に属します 。
使用されているがデーモンによって変更されるべきではないデーモン実行可能ファイルおよびその他の静的データと構成ファイルは、専用ユーザーに属していてはならないことに注意してください。 root:root
が所有する必要があります 、ほとんどのプログラムおよび構成ファイルと同様です。 mysqld
プロセスには、/usr/sbin/mysqld
を上書きするビジネスはありません または/etc/mysql/my.cnf
、したがって、これらのファイルはmysql
に属していてはなりません ユーザーまたはmysql
によって書き込み可能 ユーザーまたはmysql
グループ。一部のファイルをデーモンと管理者だけが読み取れるようにする必要がある場合は、ユーザーrootと専用グループが所有し、モード0640(rw-r-----
)である必要があります。 。
root:root
が所有できない実行可能ファイルの特別なカテゴリ ユーザーによって呼び出されるが、追加の特権で実行する必要があるプログラムです。これらの実行可能ファイルは、(少なくとも部分的に)rootとして実行する必要がある場合は、setuidrootである必要があります。その場合、実行可能ファイルのモードは4755(rwsr-xr-x
)である必要があります。 )。プログラムがrootとしてではなく追加の特権を必要とする場合は、プログラムをsetgidにして、追加の特権がユーザーではなくグループを介して取得されるようにする必要があります。その場合、実行可能ファイルのモードは2755(rwxr-sr-x
)になります。 )。理由は2つあります:
- 実行可能ファイル自体の変更を許可しないでください。ユーザーが脆弱性を悪用した場合、プログラムで使用されるデータファイルを変更できる可能性がありますが、他のユーザーを攻撃するために実行可能ファイルにトロイの木馬を挿入することはできません。プログラムを実行します。
- 実行可能ファイルのデータファイルはグループに属しています。 setuidプログラムは、ユーザーと対話するために実際のユーザー(プログラムを呼び出したユーザー)と、プライベートデータファイルにアクセスするための有効なユーザー(プログラムを実行しているユーザー)を切り替える必要があります(その理由追加の特権を持つため)。 setgidプログラムは、グループのみがアクセスできるユーザーごとのデータをさらに分離できます(たとえば、rootとプログラムのグループのみがアクセスできるディレクトリにユーザーが所有するファイルを保存することにより)。