web-dev-qa-db-ja.com

debian wheezyでsudoersファイルを適切に設定する方法は?

私はそれを行うには十分であると言う多くのブログ投稿を見てきました

aptitude install Sudo
su root
adduser USERNAME Sudo

ただし、これはaptitudeのみを保護します。つまり、

  • aptitude install sendmailはパスワードを要求します。Sudoを実行するにはaptitudeである必要があります

  • apt-get install sendmailはパスワードを要求しません。Sudo権限は必要ありません

  • etc内のファイルなど、保護されたファイルを編集する場合、パスワードの入力は求められず、Sudo特権は必要ありません

  • Apacheのようなサービスを実行および停止できます。パスワードを要求することはなく、Sudo特権は必要ありません

これを修正するには?これは私のsudoersファイルです:

 This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:$

# Host alias specification

# User alias specification

# Cmnd alias specification

これはSudo -lの出力です。

Matching Defaults entries for root on this Host:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User root may run the following commands on this Host:
    (ALL : ALL) ALL
    (ALL : ALL) ALL
10
Lynob

Sudoルールを追加していないため、Sudoを何にも使用できません。

コマンドadduser USERNAME Sudoは、指定されたユーザーをSudoというグループに追加します。その名前のグループが存在している必要があります。ない場合はaddgroup Sudoで作成します。ユーザーをグループに追加した後、グループメンバーシップを有効にするには、ユーザーはログアウトして再度ログインする必要があります。

Sudoは特別なグループ名ではありません。これは、SudoというグループのユーザーがSudoユーティリティを介してrootとしてコマンドを実行できるようにするための規約です。これには、sudoersファイルに次の行が必要です。

%Sudo ALL = (ALL) ALL

visudoを実行してsudoersファイルを編集します。直接編集しないでください。

「適性を守るだけだ」とあなたが信じる理由がわかりません。適性について特別なことは何もありません。 rootとしてコマンドを実行する権限をユーザーに付与すると、そのユーザーはSudo aptitude …またはSudo apt-get …またはSudo service …、またはsudoeditを実行して、root権限を必要とするファイルを編集できます編集。 sudoersファイルに入っていても、ユーザーの特権は直接変更されません。これにより、Sudoを実行してrootとしてコマンドを実行できるようになります。コマンドは、Sudoを介して実行した場合にのみルートとして実行されます。一部のプログラム、特にユーザーインターフェイスが特別な権限なしで実行され、バックエンドのみがrootとして実行されるGUIプログラムがそれを自動的に行う場合がありますが、rootとして実行されるコマンドは常にSudoによって実行されます。

mayが起こったことは:Sudoがパスワードをキャッシュしています。そのため、システムでのSudoの実装を正しく完了した後、firstコマンドのパスワードを入力する必要があり、その後しばらくの間キャッシュされます。それが起こり、シーケンスを実行した場合

Sudo aptitude install sendmail
Sudo apt-get install sendmail

次に、最初のコマンドでパスワードを提供する必要がありますが、2番目のコマンドでは提供しないでください(少なくともタイムアウト内にいる間は)。これはfeelのように、最初のコマンドのみを保護し、2番目のコマンドは保護しないようにします。詳細な情報(完全なシェルのトランスクリプト)なしでは、伝える方法はありません...

4
Josef

上記の答えに従うと、正しい方向に進んでいます。少なくとも私のDebian Jessieでは、パス/ sbinにあるコマンドの/ usr/binへのソフトリンクを作成しました。例:/ sbin/ifup、/ usr/binへのソフトリンク(ln -s)を配置して使用できます。

もう1つの重要なことは、NOPASSWDを次のように置くことです。

User_Alias NET = goviedo
Cmnd_Alias ETH = /sbin/ifup
NET ALL = NOPASSWD:ETH
0
Gonzalo Oviedo