Ubuntu Weekly Recipe

第410回 あなたの人生を少しだけ豊かにするsudoの使い方

この記事を読むのに必要な時間:およそ 6 分

実行権限を管理する

/etc/sudersには以下のようなエントリが存在します。

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

これは「sudoグループ(%はグループ名を指します)に所属するユーザー」「任意のホスト上(最初のALL)⁠で,⁠任意のコマンド(最後のALL)⁠を,⁠任意のユーザーID,グループID(丸括弧の中のALL)⁠で実行できることを意味します。つまり「sudoグループに所属すればなんでもできる」というわけです。

ここで特定のユーザー(maho)にユーザーを追加するadduserコマンドの実行権限だけを与えるようにしてみましょう。これは以下のような設定になります。

maho    ALL=(ALL:ALL) /usr/sbin/adduser

sudoグループに所属する場合,パスワードなしで「sudo apt-get update」を実行できるようにしたい場合は,次のように記述します。

%sudo   ALL=(ALL:ALL) NOPASSWD: /usr/bin/apt-get update

ここで「 update」を省いてしまうと,apt-getコマンドを常にパスワードなしで実行できてしまいます。

その他,sudoersにはかなり複雑なことを記述でいます。実際の例については「/usr/share/doc/sudo/examples/sudoers.gz」を参照してください。

タイムアウト時間を変更する

sudoで設定できるタイムアウト時間は2種類存在します。パスワードの入力待ちのタイムアウト(passwd_timeout)とパスワード入力なしでsudoを実行できる期間(timestamp_timeout)です。いずれも0を設定することで無効化できます。

Defaults        passwd_timeout=0
Defaults        timestamp_timeout=0

パスワードの表示方法を変更する

前述のとおり,sudoを実行するとき入力するパスワードに対するリアクションは何も表示されません。もしログイン時のパスワード入力のようにタイピングに合わせて「*」を表示させたい場合は,pwfeedbackオプションを設定します。

Defaults:maho    pwfeedback

Defaultsの後ろに「:maho」をつけることで,mahoユーザーのみこの設定が反映されます。

sshコマンド経由でsudoを実行できるようにする

sshコマンドの最後にコマンド文字列を渡すと,sshでログインした先でそのコマンドを実行してくれます。このとき,sudoコマンドを渡すと次のようなエラーが表示されます。

$ ssh maho.example.com sudo ls
sudo: no tty present and no askpass program specified

これはsudoの設定で,安全性を高めるためにパスワードのエコーバックを無効化できない状況では,sudoの実行を行わないという設定が入っているためです。もし自動化などのために,sshコマンド越しにsudoを実行したい場合は,sshサーバー側で以下の設定を行いましょう。

Defaults:maho    visiblepw

コラム:オープンソースカンファレンス2016 Tokyo/Spring

Ubuntu Weekly Topicsでも改めて告知する予定ですが,今週末の26日(金)⁠27日(土)に,オープンソースカンファレンス2016 Tokyo/Springが地図上は東京都にある明星大学の日野キャンパスで開催されます。

Ubuntu Japanese Teamも両日参加予定で,いつものようにUbuntu PhoneやAquarisのほうではない)Ubuntu Tablet,Snappyデバイス,XubuntuをインストールしたRaspberry Pi2などの実機を展示します。また,土曜日の15時15分からは『コンテナ型ハイパーバイザー「LXD」入門』と題したセミナーも開催しますので,皆様お誘い合わせの上,お越しください。

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member株式会社 創夢所属。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。

コメント

コメントの記入