GNU/Linux >> Linux の 問題 >  >> Linux

実際のシステム管理者はsudoを実行しません

数ヶ月前、私はLinuxの機能についてもっと知りたいと思っているいくつかの良い情報を含む非常に興味深い記事を読みました。記事の名前、内容、またはそれを読んだWebサイトについては説明しませんが、記事は私を震え上がらせました。

この記事が非常に価値があると思った理由は、すべてのコマンドの前にsudoが付いているためです。 指図。私がこれに関して抱えている問題は、この記事がシステム管理者向けであり、実際のシステム管理者がsudoを使用していないことです。 彼らが発行するすべてのコマンドの前に。そうすることは、sudoのひどい誤用です 指図。この種の誤用については、私の著書「The LinuxPhilosophyforSysAdmins」に書いています。以下はその本の第19章からの抜粋です。

この記事では、sudoの理由と方法について説明します。 ツールが誤用されており、sudoを使用するように強制する構成をバイパスする方法 ルートとして直接作業する代わりに。

sudoまたはnotsudo

システム管理者であり、お気に入りのツールを使用することの一部は、私たちが持っているツールを正しく使用し、制限なしにそれらを利用できるようにすることです。この場合、sudo コマンドは、意図されていなかった方法で使用されます。 sudoのやり方が特に嫌いです ファシリティは、特にシステム管理の作業を行う人々が職務を遂行するために必要なツールへのアクセスを制限および制限するために使用されているため、一部のディストリビューションで使用されています。

「[SysAdmins]はsudoを使用しないでください。」
– Paul Venezia

Veneziaは、InfoWorldの記事で、sudo システム管理者の松葉杖として使用されます。彼はこの立場を擁護したり説明したりすることに多くの時間を費やしていません。彼はこれを事実として述べているだけです。そして、私は彼に同意します–システム管理者にとって。仕事をするのに補助輪は必要ありません。実際、彼らは邪魔になります。

Ubuntuなどの一部のディストリビューションでは、sudoを使用します 昇格された(ルート)特権を必要とするコマンドの使用を少し難しくすることを目的とした方法でコマンドを実行します。これらのディストリビューションでは、rootユーザーとして直接ログインすることはできないため、sudo コマンドは、root以外のユーザーにroot権限への一時的なアクセスを許可するために使用されます。これにより、ユーザーは、ユーザーの追加と削除、ユーザーに属していないファイルの削除、新しいソフトウェアのインストール、および一般的に管理に必要なすべてのタスクなど、昇格された特権を必要とするコマンドの発行にもう少し注意を払うことになります。最新のLinuxホスト。システム管理者にsudoの使用を強制する 他のコマンドの序文としてのコマンドは、Linuxでの作業をより安全にすることになっています。

sudoを使用する 私の意見では、これらのディストリビューションによる方法は、初心者のシステム管理者に誤った安心感を与えるための恐ろしくて効果のない試みです。あらゆるレベルの保護を提供するには、まったく効果がありません。 sudoを使用して、同じように正しくない、または損傷を与えるコマンドを発行できます。 使わないときはできる限り。 sudoを使用するディストリビューション 間違ったコマンドを発行する可能性があるという恐怖感を麻酔するために、システム管理者は大きな不利益を被っています。 sudoで使用する可能性のあるコマンドに、これらのディストリビューションによって課せられる制限や制限はありません。 施設。システムをユーザーから実際に保護することによってもたらされる可能性のある損害を実際に制限する試みはなく、ユーザーが何か有害なことをする可能性もありません。

したがって、これについて明確にしましょう。これらのディストリビューションでは、ユーザーがシステム管理のすべてのタスクを実行することを期待しています。彼らは、実際にはシステム管理者であるユーザーを、コマンドを実行するために自分のパスワードを入力するためにこの制限的な追加の手順を実行する必要があるため、何か悪いことをした場合の影響から何らかの形で保護されていると思い込ませます。

sudoをバイパスする

このように機能するディストリビューションは通常、rootユーザーのパスワードをロックします(Ubuntuはこれらのディストリビューションの1つです)。このように、誰もrootとしてログインして、邪魔されずに作業を開始することはできません。これがどのように機能するか、そしてそれをバイパスする方法を見てみましょう。

必要に応じて再現できるように、ここで設定を規定しておきます。例として、VirtualBoxを使用してUbuntu16.04LTS1をVMにインストールしました。インストール中に、この実験用の簡単なパスワードを使用して、root以外のユーザーであるstudentを作成しました。

ユーザー学生としてログインし、ターミナルセッションを開きます。 /etc/shadowのrootのエントリを見てみましょう 暗号化されたパスワードが保存されるファイル。

student@machine1:~$ cat /etc/shadow
cat: /etc/shadow: Permission denied

許可が拒否されたため、/etc/shadow fileを確認できません 。これはすべてのディストリビューションに共通であるため、非特権ユーザーは暗号化されたパスワードを表示してアクセスすることはできません。このアクセスにより、一般的なハッキングツールを使用してこれらのパスワードを解読できるようになるため、それを許可するのは安全ではありません。

それでは、su –を試してみましょう。 ルートに。

student@machine1:~$ su -
Password:
su: Authentication failure

このsuの使用の試み rootアカウントにパスワードがなく、ロックアウトされているため、ユーザーをroot権限に昇格させるコマンドは失敗します。 sudoを使用しましょう /etc/shadowを確認するには ファイル。

student@machine1:~$ sudo cat /etc/shadow
[sudo] password for student: <enter the user password>
root:!:17595:0:99999:7:::
<snip>
student:$6$tUB/y2dt$A5ML1UEdcL4tsGMiq3KOwfMkbtk3WecMroKN/:17597:0:99999:7:::
<snip>

ルートユーザーと学生ユーザーのエントリのみを表示するように結果を切り捨てました。また、暗号化されたパスワードを短くして、エントリが1行に収まるようにしました。フィールドはコロンで区切られます(: )、2番目のフィールドはパスワードです。 rootのパスワードフィールドは「感嘆符」(!)として世界中で知られている「bang」であることに注意してください。 )。これは、アカウントがロックされており、使用できないことを示しています。

これで、適切なシステム管理者としてrootアカウントを使用するために必要なのは、rootアカウントのパスワードを設定することだけです。

student@machine1:~$ sudo su -
[sudo] password for student: <Enter password for student>
root@machine1:~# passwd root
Enter new UNIX password: <Enter new root password>
Retype new UNIX password: <Re-enter new root password>
passwd: password updated successfully
root@machine1:~#

これで、rootまたはsu –としてコンソールに直接ログインできます。 sudoを使用する代わりに、rootに直接 コマンドごとに。もちろん、sudo su –を使用することもできます rootとしてログインするたびに、なぜわざわざするのですか?

私を誤解しないでください。 Ubuntuやその上流と下流の親戚のようなディストリビューションは完全に問題なく、私は何年にもわたってそれらのいくつかを使用してきました。 Ubuntuおよび関連するディストリビューションを使用する場合、最初に行うことの1つは、rootとして直接ログインできるようにrootパスワードを設定することです。

sudoの有効な使用法

sudo 施設には用途があります。 sudoの本当の意図 rootユーザーが1つまたは2つの非rootユーザーに委任し、定期的に必要な1つまたは2つの特定の特権コマンドにアクセスできるようにすることです。この背後にある理由は、怠惰なシステム管理者の理由です。昇格された特権を必要とし、1日に何度も頻繁に使用するコマンドにユーザーがアクセスできるようにすることで、SysAdminはユーザーからの多くの要求を節約し、ユーザーが経験する待ち時間をなくします。ただし、ほとんどの非rootユーザーは、必要ないくつかのコマンドに対してのみ、完全なrootアクセス権を持つべきではありません。

root権限を必要とするプログラムを実行するには、root以外のユーザーが必要になることがあります。このような場合、私は1人または2人の非ルートユーザーを設定し、その単一のコマンドを実行することを許可します。 sudo ファシリティは、それを使用する各ユーザーのユーザーIDのログも保持します。これにより、誰がエラーを犯したかを追跡できる可能性があります。それがすべてです。魔法のプロテクターではありません。

sudo ファシリティは、システム管理者によって発行されたコマンドのゲートウェイとして使用されることを意図したものではありませんでした。コマンドの有効性は確認できません。ユーザーが愚かなことをしているかどうかはチェックしません。ゲートウェイを介して「お願いします」と言わせても、システム上のすべてのコマンドにアクセスできるユーザーからシステムを安全にすることはできません。これは意図された目的ではありませんでした。

「Unixは決してお願いしません。」
– Rob Pike

Unixについてのこの引用は、Unixについても同様にLinuxについても当てはまります。 rootとして作業する必要がある場合は、sysadminsがrootとしてログインし、完了したらrootセッションからログアウトします。一日中rootとしてログインしたままになる日もありますが、必要なときは常にrootとして機能します。 sudoは使用しません これは、ジョブを実行するために必要なコマンドを実行するために、必要以上に入力する必要があるためです。 UnixもLinuxも、私たちが本当に何かをしたいのかどうかを尋ねません。つまり、「これをしたいことを確認してください」とは言いません。

はい、一部のディストリビューションがsudoを使用する方法が嫌いです 指図。次回は、sudoのいくつかの有効なユースケースを検討します そして、これらの場合にそれを構成する方法。

[システム管理者のスキルをテストしますか?今日、スキル評価を受けてください。 ]


Linux
  1. 更新-代替コマンドが見つかりませんか?

  2. ネットワーキングを有効にするためのコマンド?

  3. 須藤:コマンドが見つかりませんか?

  1. Yumコマンドチートシート

  2. Linux での sudo コマンドの例

  3. visudo:コマンドが見つかりません

  1. sudoedit:コマンドが見つかりません

  2. sudo:コマンドが見つかりません

  3. sudo:npm:コマンドが見つかりません