Tutoriel Linux

LinuxにおけるVisudo:root権限を失わずにsudoersを変更する

Débutant2 min de lecture
À retenirLinux n'est pas réservé aux experts. Le bon point de départ : une distribution accessible, une sauvegarde propre et quelques commandes comprises.

/etc/sudoers SSHセッションがまだ実行されている間に、最後の管理者アクセスを削除できます。リスクは多くの場合、ルールの記述が不適切、コマンドパスが間違っている、またはファイルがすぐに追加されすぎていることに起因します。 /etc/sudoers.d

私はsudoersファイルを編集する際、ファイル上で直接エディタを起動することは決してありません。 ヴィスド 編集中は設定をロックし、保存する前に構文を確認してください。リモートサーバーでは、最終テストまで別のrootセッションを開いたままにしておいてください。この安全対策は、コマンド自体と同じくらい重要です。

Tuxは、バックアップ管理者アクセスを維持しながらsudoers構成を検証します。
Visudoはsudoersの構文をチェックしてから保存しますが、リモートサーバー上では2つ目のrootセッションが依然として不可欠です。

ルールを変更する前にsudoアクセス権限を確認してください

まず、アカウントにsudo権限がまだ付与されていることを確認し、どのコマンドの使用が許可されているかを確認してください。

sudo -v
sudo -l
ID
グループ

sudo -v 機密性の高いコマンドを実行せずに認証情報を検証します。 sudo -l アカウントに実際に適用されているルールを表示します。この手順が失敗した場合は、このセッションからsudoersファイルを操作しないでください。

次に、2つ目のターミナルを開き、そこでrootセッションを維持します。

sudo -i
誰が
w

編集中はセッションを閉じないでください。リモートマシンでは、コンソール、KVM、またはレスキューパネルへのアクセスも確認してください。ガイドは Linux アカウントとグループ 権限を付与する前に、対象アカウントを確認するのに役立ちます。

編集する前に、メインファイルをルート用に予約されたフォルダにコピーします。 -もっている 特に、所有者、グループ、およびモードを保持する。

sudo cp -a /etc/sudoers "/root/sudoers.backup-$(date +%F-%H%M)"
sudo stat -c '%A %a %U:%G %n' /etc/sudoers /etc/sudoers.d

/etc/sudoers に属します ルート:ルート モード付き 四百四十お使いのディストリビューションで異なるポリシーが使用されている場合は、権限を無作為に修正しないでください。まず、現在の状態を記録し、バックアップへの正確なパスを保存してください。

visudoでメインファイルを編集する

メイン設定を開くには、以下のコマンドを実行してください。

sudo visudo

ヴィスド このツールは、2つの同時編集を防ぐためにロックを作成します。終了時に構文解析を行い、通常は無効な設定のインストールを拒否します。ツールがエラーを報告した場合は、エディタに戻って修正してください。理解できないファイルを強制的に保存しないでください。

sudoersルールは通常、ユーザーまたはグループ、関係するホスト、実行ID、そして許可されたコマンドというロジックに従います。アカウントを承認するには アリス Nginxのみを再起動してチェックするには、まずバイナリパスを確認してください。

コマンド -v systemctl

コマンドが返された場合 /usr/bin/systemctlルールは次のような形式をとることができます。

alice ALL=(root) /usr/bin/systemctl is-active nginx, /usr/bin/systemctl restart nginx

使用しないでください 習慣的にそうしてしまうと、自動化においては、アカウント、コマンド、引数を1つずつに制限する必要があります。シェル、エディタ、または他のプログラムを起動できるコマンドへのアクセスを許可するような広範なルールは、多くの場合、完全なルートアクセス権限を与えることと同義になります。

部署やチーム固有のルールについては、大きなメインファイルとは別にフラグメントを作成することをお勧めします。オプションを指定して開いてください。 -f

sudo visudo -f /etc/sudoers.d/administration

スペース、ピリオド、または文字を含まないシンプルな名前を選択してください。例: 指令によれば @includeir 配布元で使用されるため、一部の名前は無視される場合があります。登録後、所有者とモードを確認してください。

sudo chown root:root /etc/sudoers.d/administration
sudo chmod 0440 /etc/sudoers.d/administration
sudo stat -c '%A %a %U:%G %n' /etc/sudoers.d/administration

一般的なチュートリアルは、 Linux の sudo ユーザー、グループ、エイリアスによる委任の詳細を説明します。ここでは、目的はより限定的で、以前のバージョンに戻す機能を失うことなく、検証可能なルールをインストールすることです。

テストを行う前に、設定全体を確認してください。

編集が完了したら、フルチェックを実行します。このコマンドは、メインファイルとそれが参照するインクルードファイルを検証します。

sudo visudo -c

結果は、分析されたファイルが構文的に正しいことを示しているはずです。断片が報告された場合は、そのファイルを再度開いてください。 visudo -fチェックが失敗している間は、マシンを再起動したり、rootセッションを閉じたりしないでください。

保持されたルートセッションから、対象アカウントの権限を表示します。

sudo -l -U アリス

この読み取りによって、読み込まれていないルール、間違ったユーザー名、または想定よりもはるかに広範な権限を特定できます。

ルートを閉じる前に新しいセッションでテストしてください

問題のアカウントで3回目のログインを開いてください。既にsudoチケットがキャッシュされているセッションをそのまま使用しないでください。このキャッシュを無効化し、権限リストを要求してから、許可されたコマンドのみを実行してください。

sudo -k
sudo -v
sudo -l
sudo systemctl status nginx

また、予期しないコマンドが引き続き拒否されることを確認してください。ユーザーが必要以上の権限を取得することなく、期待されるアクセス権限を維持できる場合、ルールは正しいと言えます。このテストが完了した後でのみ、バックアップルートセッションを閉じてください。

検証またはアクセスが失敗した場合は、sudoersを復元します。

もし visudo -c 失敗した場合は、まだ開いているルートセッションから問題のあるフラグメントを修正してください。メインの保存済みファイルに戻すには、パスを実際のバックアップに置き換えてください。

cp -a /root/sudoers.backup-YYYY-MM-DD-HHMM /etc/sudoers
visudo -c

管理者セッションがすべて閉じられている場合は、ベンダーコンソール、リカバリモード、またはライブ環境を使用してシステムをマウントし、構成を修復してください。権限のないアカウントからsudoersを編集しても機能しません。

認証が成功した後に拒否された場合、その理由を理解するには、現在の起動時のsudoイベントを確認し、ディストリビューションが認証ログを使用している場合は、そのログを確認してください。

sudo journalctl -t sudo -b --no-pager
sudo tail -n 100 /var/log/auth.log

そこには Visudoのマニュアルページ ロック、制御、オプションに関する文書 -f。ドキュメント sudoers(5) これは構文、インクルード、およびコマンドルールについて説明します。何よりもまず、バックアップアクセス、保存、編集の順序を維持してください。 ヴィスド

sudo apt update && sudo apt upgrade