を呼び出すと、sudo
パスワードの入力を求められ、設定ファイルを確認して、/etc/sudoers
ユーザーにコマンドを実行するためのアクセスが許可されていることを確認します。特定のユーザーまたはグループが特定のコマンドを実行できるようにする構成ファイル/etc/sudoers
。sudo
たとえば、以下では、ユーザーがjohn
端末で power off コマンドを実行できるようにします。
john ALL= /sbin/poweroff
明らかにrootユーザーは何でもできます:
root ALL=(ALL) ALL
sudo
ルートは何でもできるので、私たちはしばしばこのプログラムを使っていくつかのシステムレベルのコマンドを実行するためにroot(パスワードプロンプトを使う)として権限を高めたいと思います。正しいユーザーパスワードを入力すると、コマンドを実行できます。ただし、まずこのユーザーをrootに昇格させる方法が必要です。したがって、目的は/etc/group
。
sudo:x:27:myuser
/etc/group
ユーザーが属するグループを定義するテキストファイルです。ファイルシステム権限は、ユーザー、グループ、その他に分けられます。グループを使用すると、ディスク、プリンタ、その他の周辺機器へのアクセスなどの追加機能を体系的に委任できます。
すべて読んだときこの記事デーモンの使い方に関して、gammu-smsd
次の行を見つけました。
SMSを送信するたびに管理者パスワードを入力したくないので、最初にすべきことはダイヤルアウトグループに自分自身を追加することです。このグループのすべてのメンバーは、Ubuntuシステムでモデムに似たデバイスを使用する権限を持っています。
ダイヤルアウトグループにこれらの権限を付与するのはどこで定義されていますか?私の/etc/sudoers
ファイルを見ると、ダイヤルアウトへの言及はありません。
$ sudo cat /etc/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
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL) ALL
グループに関して重要な要素が欠けているようです。
答え1
グループにさまざまなアクセス権を与えるUnixアプローチは非常に原始的です。これは、主に問題のデバイスに書き込み(および読み取り可能)タイプの権限のみを付与することです。たとえば、ダイヤルアウトの場合:
faheem@orwell:/dev$ ls -lah | grep dialout
crw-rw---T 1 root dialout 4, 64 Jul 22 22:45 ttyS0
crw-rw---T 1 root dialout 4, 65 Jul 22 22:45 ttyS1
crw-rw---T 1 root dialout 4, 66 Jul 22 22:45 ttyS2
crw-rw---T 1 root dialout 4, 67 Jul 22 22:45 ttyS3
したがって、ダイヤルアウトグループには、問題のデバイス(この場合はシリアルポート)に対する書き込みおよび読み取り権限があります。
答え2
現在、ユーザーが特定のグループに属していることを確認するプログラムを作成してみてください。その場合はアプリケーションを実行し、そうでない場合は管理者パスワードの入力を求められます。
これは、sudoersファイルとは何の関係もありませんが、ソフトウェアコードレベルで実行されるチェックです。