web-dev-qa-db-ja.com

ユーザーがsudoでapt-get updateコマンドのみを実行できるようにするにはどうすればよいですか?

ユーザー(この場合はtest)がsudoersファイルを使用してapt-get updateコマンドのみを実行できるようにする方法がわかりません。ユーザーを追加してテストしようとすると、ユーザーはコマンドを実行できません。

誰かが私を助けてくれますか?私はこれを一日中研究してきましたが、まだ理解できません。私はおそらく間違った何かを入力しています。

Ubuntu 14.04を使用しています。

7
Alex Lowe

Andre Herman Bezerraの答えを見て、これに関する唯一の問題は、このしないでくださいコメントで指摘されていますユーザーを更新のみに制限します(パッケージをインストール/削除できます)。

ユーザーが更新のみできるように制限したい場合は、次の方法をお勧めします。

グループを作成するか、%staffグループを使用します。

この例では、staffユーザーグループを使用することを選択しています。

sudoersドキュメントを更新します。

export editor="vi" && Sudo visudo

bash スクリプトを定義するCmnd_Aliasを作成します。

Cmnd_Alias UPDATER_ONLY = /usr/local/bin/updater.sh

このコマンドを許可する方法を定義する必要があります。

# Require staff to enter password when updating.
%staff ALL= UPDATER_ONLY

# Or, password is not required, just run the updater.
%staff ALL= NOPASSWD: UPDATER_ONLY

最後に、シェルを作成する必要があります。

ファイルの編集を禁止するには、これはルートおよび読み取り専用が所有するか、実行中に作成する必要がありますSudo

$ Sudo echo '#!/bin/bash' >> /usr/local/bin/updater.sh
$ Sudo echo 'Sudo apt-get update && Sudo apt-get upgrade -y' >> /usr/local/bin/updater.sh
$ Sudo chmod 0755 /usr/local/bin/updater.sh

これは次のようになります。

$ ls -la /usr/local/bin/updater.sh
-rwxr-xr-x 1 root root 60 Jan 22 08:50 /usr/local/bin/updater.sh*

ほぼ完了です!

ユーザーをスタッフグループに追加して、この特権を許可することを忘れないでください。

Sudo usermod -aG staff the-user

誰かが何かをインストールしようとすると、これは彼らが受け取るものです:

test-me@comp0:~$ Sudo apt-get install test
[Sudo] password for test-me: 
Sorry, user test-me is not allowed to execute '/usr/bin/apt-get install test' as root on comp0.
2
ash

まず、/etc/sudoersvisudoのみで編集します

次の行を追加するだけで、ユーザーjoe for apt-getコマンドにアクセス許可を設定できます。

%joe your_hostname=(root):/usr/bin/apt-get

joeとしてログインすると、権限を確認できます。

Sudo -l

編集:ユーザーは、apt-getの更新、アップグレード、インストールなどを使用できます。これらはapt-getコマンドの単なるフラグであるためです。