- POSIXレイヤー、ACL、およびSELinuxなどのセキュリティモジュールを検証することにより、アクセスエラーを正確に診断します。
- 脆弱性を回避するために、chmod、chown、visudoユーティリティなどの権限管理ツールを適切に使用してください。
- スーパーユーザー権限が失われた場合に、ライブCDまたはブートスクリプトを使用してシステムを復旧する方法。

きっとあなたも経験したことがあるでしょう。コマンドを実行しようとしたり、ファイルを開こうとしたり、フォルダに移動しようとしたりすると、ターミナルに有名なメッセージが表示されます。 "許可が拒否されました"特にシステムを完全に制御できると思っている時に、このような状況に陥ると、非常にイライラします。Linuxはセキュリティに関して非常に厳格で、そのルールを厳密に守らなければ先に進めないからです。
手放したいという誘惑 chmod 777 これは大きな一時しのぎだが、正直言って、 最悪のアイデアそれはまるで、街の真ん中で玄関のドアを全開にしておくようなものです。アクセスの問題は解決しますが、システムがあらゆる脆弱性に対して完全に無防備な状態になってしまいます。理想的には、何が問題なのかを理解し、適切な修正を行うべきです。
Linuxのパーミッションシステムを理解する
何も知らないまま始めることを避けるために、Linux がアクセスを 3 つの異なるレベルで管理していることを知っておくことが重要です。まず、 従来のPOSIXパーミッションこれらは、所有者、グループ、およびその他全員に対して読み取り (r)、書き込み (w)、実行 (x) の権限を持つ典型的な 3 つの権限を持つものです。次に、特定のユーザーに対してより細かいルールを設定できる拡張 ACL があり、最後に、次のような必須のセキュリティ モジュールがあります。 RHEL上のSELinux または、UbuntuとDebianのAppArmor。
ディレクトリについて話すとき、多くの人が混乱する点が1つあります。それは実行権限です。フォルダ内で実行権限があるということは、プログラムを起動できるという意味ではなく、むしろ… ディレクトリを参照するそのビットが設定されていない場合、内部ファイルに対する読み取り権限があっても、パスがブロックされているためアクセスできません。
権限管理は2つの方法で行うことができます。シンボリックメソッドは、実行権限の追加など、迅速な変更に非常に便利です。 chmod u+x。 一方、 8進数形式 これは、すべてを一度に構成する最も正確な方法です。たとえば、644 はテキストファイルの標準ですが、755 はディレクトリや公開スクリプトで一般的です。 誰でも閲覧できます しかし、書くのは所有者だけです。
よくあるブロックシナリオとその対処法
最もよくあるエラーの1つは、SSHキーに関するものです。秘密鍵の権限設定が緩すぎると、サーバーはパラメータが原因で接続を拒否します。 厳密モードここでの解決策は、アクセスを可能な限り制限することです。通常は、 chmod 600 所有者だけが鍵を読み取れるようにするため。
もう1つのよくあるシナリオは、次のようなシステムパスに書き込もうとする場合です。 /etc o /var/wwwもしそれが一度限りのことなら、 sudoを使用する その通りです。しかし、常に書き込みが必要なアプリケーションの場合は、フォルダの所有権を変更するのが最もクリーンな方法です。 chown これにより、サービス利用者が法的所有者となり、 Linuxにおけるrootユーザーの誤った使用.
場合によっては、root 権限であっても、権限がないと言われることがあります。これは通常、ファイルシステムがマウントされている場合に発生します。 読み取り専用モード (ro) または、ファイルに不変属性がある場合。後者の場合は、コマンドを使用できます。 lsattr それを診断し、 sudo chattr -i その特別な保護を解除するため。
汗のエラーによる頭痛
sudoは、使えなくなるまでは素晴らしいツールです。 /etc/sudoers 非常にデリケートです。カンマの位置の間違いやスペースの位置の間違いといった単純な構文エラーでも、 sudoが動作しなくなりました 完全に、あなた自身の行政から排除する。
これを避けるため、このファイルを通常のテキストエディタで編集してはいけません。 visudo それが鍵です。 構文を検証します 変更を保存する前に、必ず確認してください。編集を強制的に実行してファイルを破損させてしまうと、行き詰まってしまいます。ファイルを修復するにはsudoが必要ですが、ファイルが破損しているためsudoを使用できないからです。
構文エラーに加えて、所有権エラーもあります。ファイルが /etc/sudoers 権限が過度に開放されている(誰でも書き込み可能など)か、 所有者はrootではありませんそのような場合、システムはファイルが 世界書き込み可能 または、UIDが間違っている可能性があります。
他の方法がすべて失敗した場合に、アクセスを回復する方法
賢くなりすぎてsudoersファイルを破損させてしまった場合でも、すべてが失われたわけではありません。最も効果的な方法の1つは、システムを UbuntuライブCDそこから、ハードドライブをマウントして、ディレクトリに移動します。 /etc 実際のインストールからアクセスし、権限を手動で修正します。 chmod 440 y chown root:root.
Google Cloudのようなクラウド環境では、 起動スクリプト仮想マシンの起動時にコマンドを実行するメタデータを構成できます。このコマンドは、破損した sudoers ファイルの名前を変更し、パスワードなしで一時的にログインできる新しい基本ファイルを作成します。 災害を修復する visudo を使用。
問題がファイルにある場合 .lock ユーザーまたはグループの編集をブロック /etc/passwdシステムが再び管理上の変更を行えるようにするには、リカバリ環境から一時ファイルをクリーンアップする必要があるかもしれません。
アクセスの問題を解決するには、論理的な順序に従うのが最も賢明です。まず、 ls -l e id 誰が誰なのかを確認するには、ビットを調整してください。 chmodプロパティを修正します chown そして、これらがどれも効果がない場合は、次のようなより深い層を確認してください。 SELinuxまたはAppArmor バックグラウンドで動作をブロックしている可能性があり、すでに知っていることを利用して Linuxの秘密とコマンド.
バイトの世界とテクノロジー全般についての情熱的なライター。私は執筆を通じて自分の知識を共有するのが大好きです。このブログでは、ガジェット、ソフトウェア、ハードウェア、技術トレンドなどについて最も興味深いことをすべて紹介します。私の目標は、シンプルで楽しい方法でデジタル世界をナビゲートできるよう支援することです。
