私のコンピュータにログファイルを保持したいと思います。また、ボリュームマウント/パッケージのインストールなど、さまざまなシステム固有のタスクを実行するために他のアカウントに権限を付与したいと思います。したがって、ユーザーはroot権限を持っている必要がありますが、特定のファイルを変更/削除/書き込みできないように単一のログファイルを制限する必要があります。
答え1
まず、sudoersファイルを使用して、ルートがログファイルを書き込めないようにすることができます。
user ALL=(ALL) !/var/log/logfile
これにより、ログファイルがルートによって変更、移動、または削除されるのを防ぐことができます。
その後、ユーザーが必要と判断されるコマンドのみを使用できるように、sudoersファイルを編集できます。
user ALL=(ALL) /bin/command1 /bin/command2 /bin/command3
user ALL=(ALL) !ALL
これにより、ユーザーに不要なコマンドが無効になります。また、chattr +i /etc/sudoers
ユーザーがrootに変更してログファイルにアクセスできないように、sudoersファイルを変更できないようにすることもできます。
答え2
ユーザーのsudoを制限できない場合は、ログを別のノード(rsync / rsyslog)に同期できます。
答え3
システムスーパーユーザー権限を持つユーザーは、次のことを行う必要があります。
- 完全な信頼、そして
- 責任がある。
sudoers
そうでない場合、ユーザーがrootとして実行する必要がある操作は、正確な方法でファイルに一覧表示できるように厳密に指定する必要があります(rm
例:これら文書)。これらのユーザーはそれを使用sudo
してルートシェル環境を取得することもできません。
これが不可能な場合は、必要なすべての操作を実行できる別の非ルートアカウントを設定することをお勧めします。
答え4
はい、sudoユーザーが特定のrootコマンドを実行できないように制限できます。これにより、以下のように構成された権限を実行できます。
例:vi /etc/sudoersで必要な権限を付与したり、visudoと入力したりできます。
/etc/sudoers ファイルに次の種類の必須権限を追加します。
ユーザーA権限:
Cmnd_Alias PERMISSIONS = /usr/sbin/lsof, /usr/bin/ssh, /usr/bin/scp, /usr/bin/rsync, /usr/bin/telnet, /usr/bin/traceroute, /usr/bin/kill, /usr/bin/ps, /usr/bin/netstat, /usr/bin/grep, /usr/bin/crontab, /usr/sbin/tcpdump, /bin/ping, /usr/bin/crontab -u root -l, /usr/bin/crontab -u root -e, /etc/init.d/crond reload, /usr/bin/updatedb, /bin/df, /usr/bin/du, /usr/bin/locate, /usr/bin/find, /bin/su
その後、次の行を追加します。
%User_A_permissions ALL=PERMISSIONS