sudoの設定ファイルsudoersについて

概要

Linuxでは例えばユーザーの追加や削除やプロセスの管理など、管理者以外が操作するとシステム運用にリスクを伴う。そのため、Linuxシステムにとって重要なコマンドは、rootのような管理者だけが実行できるようにするのが一般的だ。一般ユーザでrootユーザしかできないような各種作業を使いたいときはsudoを使う。

sudoersとはsudoに関する設定の定義ファイルである。suコマンドでユーザ切り替えを実施せずsudoコマンドを使用する環境を構築すれば、危険な操作のみ確認を求めたり、初級エンジニアに一部権限のみを譲渡したりする事ができる。

sudoersの編集

sudoに関する設定は/etc/sudoersに記録される。この設定ファイルは直接編集する事は非推奨とされており、設定ファイルを編集する時はvisudoというコマンドを使用する事が推奨されている。

# 推奨されない
$ sudo vi /etc/sudoers

# 推奨される
$ sudo visudo

sudoersファイルは、2 つのタイプのエントリから構成される。 (基本的には変数である) エイリアスと (誰が何を実行できるかを指定する) ユーザ 指定である。 sudoers の文法は、 Extended Backus-Naur Form (EBNF) (拡張バッカス・ナウア記法) を用いて記述する。

alias

Linuxなどでよく利用するシェル(bash)上では,長いコマンド名を短い名前に置き換えたり、常に指定するオプションをあらかじめ設定したりできる。これを実現するのが,エイリアス(alias=別名)である。

バッカス・ナウア記法

バッカス・ナウア記法(Backus-Naur form)とは、文脈自由文法を定義するのに用いられるメタ言語のことで、一般にBNFやBN記法と略される。現在はこのBNFを拡張したEBNF (拡張バッカス・ナウア記法) が一般的に使われている。EBNFでは正規表現を用いてより簡単に記述でき、プロトコル規定言語であるASN.1や、XMLの構文定義にも利用されている。

ASN.1

Abstract Syntax Notation One(ASN.1)とは、電気通信やコンピュータネットワークでのデータ構造の表現・エンコード・転送・デコードを記述する標準的かつ柔軟な記法である。

バイト列の形式が定義されているため、マシン固有の技法などに依存せず、曖昧さのない記述を可能とする形式規則を提供できる。形式を明確に定義できるため処理の自動化やコードの共用化なども行いやすい。ASN.1で記述されたデータ構造は、プレゼンテーション層においてBERなどにより転送オクテット列に変換されネットワーク上で転送される。


参考
sudoersの設定方法