私がくれたものを見つけました。sudo権限を使用して、sudo以外のユーザーが特定のコマンドにアクセスできるようにする。しかし、私の計画はそれらにシステムを実行させるのはapt-get dist-upgrade
安全ではありませんルートとしてシェルにアクセスできるからです。それから私は見つけました。私はできます。手動無人アップグレードの呼び出しを実行してsudo unattended-upgrade -d
。
質問
ルート以外のユーザーにコールアクセスを許可するのは安全ですかunattended-upgrade
(たとえば、ルートシェルに入ることはできません)。セキュリティ更新プログラム(たとえば、半分だけインストールされているパッケージなど)をインストールする以外に他の結果はありますか?
答え1
解決策
- 新しいグループの作成:
groupadd -r updaters
この-r
オプションはシステムグループ(例:0 - 100)を予約します。 - 上記のグループにユーザーを追加します。
useradd -G updaters john
、、useradd -G updaters sally
。 これを達成するために、ユーザーエイリアスセクションを使用することもできます。。バラよりSudoerファイルの例完全な機能を持つユーザーエイリアスセクションの場合。私がやった方法では、グループが実際にシステムに存在するため、セキュリティが強化されているようです。 - アップデートプログラムのコマンドリストを作成します。注:Apt-getはパラメータ渡しを使用します。質問セクションをご覧ください。
Cmnd_Alias UPDATE_CMDS = /usr/bin/aptitude, /usr/bin/dpkg, /usr/bin/apt-get up*, /usr/bin/apt-get install
- これは
dpkg
必須ですapt-get
。バラよりAskUbuntu:sudoersファイルにapt-getを追加する。 apt-get update
と両方が必須apt-get upgrade
です。これらの目的はすべてglobモードを使用して達成できます。- 上記の動作が望ましくない場合に
aptitude
置き換えることができます。グループのユーザーがマウスクリックでオフラインでインストールしたくない場合...apt-get
dpkg
updaters
- これは
これで、sudoersファイルにアップデートを追加する必要があります。質問:visudo
と:
Ubuntuのデフォルトのsudoersファイル(上記に追加):
# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
# Uncomment to allow members of group sudo to not need a password
# %sudo ALL=NOPASSWD: ALL
# Host alias specification
# User alias specification
# Cmnd alias specification
Cmnd_Alias UPDATE_CMDS = /usr/bin/aptitude, /usr/bin/dpkg, /usr/bin/apt-get up*, /usr/bin/apt-get install
# User privilege specification
root ALL=(ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Members of the upgraders group may perform certain upgrade commands.
# If No Password is desired, comment the line below, and see the next option.
%upgraders ALL=UPDATE_CMDS
# Members of the upgraders group may perform certain upgrade commands,
# WITHOUT A PASSWORD DANGEROUS (uncomment if desired):
#%upgraders ALL=NOPASSWD:UPDATE_CMDS
を追加することにした場合は、unattended-upgrade
お読みください。Debian ドキュメント。which unattended-upgrade
に追加するパスを決定するために使用されますUPDATE_CMDS
。バラより質問部分。
修正する
さらに調査を行った後、ブログ投稿を見つけました。構成ファイルについて知っておくべきこと: dpkg で管理される構成ファイル。問題は適切なバリエーションにあるのではなく、基本dpkg
実装にあります。引用:
構成プロンプトの防止
dpkgによって変更された新しい構成ファイルをインストールする必要があるたびに(dpkgの観点から削除されたファイルは、変更されたファイルの特別なケースにすぎません)、アップグレードを停止して応答を待ちます。これは、特に大規模なアップグレードの場合、迷惑です。これが複数の --force-conf* オプションを使用して事前定義された回答を dpkg に提供できる理由です。
- --強制マージ処置: 現在の構成ファイルを変更しないでください。新しいバージョンは.dpkg-distサフィックスを使用してインストールされます。このオプションのみを使用してください。変更されていない構成ファイルも影響を受けません。 dpkgが変更されていない構成ファイルを上書きするには、--force-confdefでそれを使用する必要があります。
- --新しい構成を強制する:常に新しいバージョンの構成ファイルをインストールします。現在のバージョンは、.dpkg-old サフィックスが付いたファイルに保存されます。
- --force-confdef:可能であればdpkgに独立して決定するように要求し、そうでない場合はプロンプトを表示します。これはdpkgのデフォルト動作であり、このオプションは主に--force-confoldで使用されます。
- --必須認識:設定ファイルが現在欠落している場合(誤って削除した場合など)、dpkgにインストールを依頼してください。
これを知り、ブログで指摘したように、以下を作成して/etc/apt/apt.conf.d/local
追加できます(はい)。
Dpkg::Options {
"--force-confdef";
"--force-confold";
}
これにより、Z
オプションはすべて無視されます。
質問
無人アップグレードは一般的に悪い考えです。これは、オペレーティングシステムが新しいカーネルや正常に動作するドライバを破損する更新されたドライバなどの予期しないエントリをインストールして、ユーザーにオプションを提供するという考えをさらに高める可能性があるためです。ここで別の問題は、apt-get
実行するオプションを決定するために引数渡しが使用されるため、生成されたコマンドエイリアスのすべての必須オプションを渡す必要があることです。各パラメータを個別に追加すると、そのパラメータは使用できなくなりますdist-upgrade
。あなたのように私もsudoersファイルから引数を渡すことができないと思い、研究中にいくつかの新しい事実を学びました。
引用する
nixCraft - Howto:Linuxグループにユーザーを追加する
適性 - Ubuntuドキュメント
Ubuntuフォーラム - トピック:HowTO:Sudoersの設定
Ubuntu Documentation - ソフトウェアのインストール
AskUbuntu - apt-getアップデートとアップグレードの違いは何ですか?