Linuxでは、「ユーザー(Users)」「グループ(Groups)」「それ以外(Others)」でファイルのパーミッション(許可属性)が設定されています。今回は、この「ユーザー」と「グループ」を説明します。また、rootユーザーの役割を確認して「su/sudo」コマンドを試します。
Linuxは1台のコンピュータを複数のユーザーで使用できるように設計されています。従って、コンピュータを使用する際、最初に行う操作は「ログイン」になります。
Linuxのシステムを管理する上では、「どのユーザーの権限で何ができるか」がとても大切であり、ユーザーごとに使用できるディレクトリなどが決められています。そして、ユーザーの権限などを効率よく管理するために「グループ」が使用されます。
ユーザーの情報は「/etc/passwd」ファイルに保存されています。「/etc/passed」の書式は以下のようになっています(画面1)。
ユーザー名:パスワード:ユーザーID:グループID:その他の情報:ホームディレクトリ:シェル
【※】「head」はテキストファイルの冒頭部分を表示するコマンド
なお、パスワードは暗号化されて「/etc/shadow」ファイルに保存されており、「/etc/passwd」上では「x」で表示されます。
グループの情報は「/etc/group」ファイルに保存されています。「/etc/group」の書式は以下のようになっています(画面2)。
グループ名:パスワード:グループID:ユーザーリスト
「/etc/passwd」や「/etc/group」は、テキストエディタなどで直接編集することもできますが、通常は専用のコマンドを使用して編集します。
それぞれのファイルの詳細は、マニュアルを参照するコマンド「man」を使って「man 5 passwd」「man 5 group」を実行することで調べることができます。「5」はマニュアルの章番号です。
なお、実際の運用では、伝統的な「/etc/passwd」と「/etc/group」以外に、ネットワーク単位でユーザーを管理する「Active Directory」なども併用されていることがあります。これらの情報をまとめて取得したい場合は「getent」コマンドが便利です。
ユーザーは複数のグループに所属することができます。この中で、ログイン時のグループ(「/etc/passwd」にグループIDが書かれているグループ)を「プライマリーグループ」、それ以外のグループを「セカンダリーグループ」と呼びます。
例えば、「staff」というユーザーがファイルを作成した場合、ファイルの所有者はstaff、所有グループはstaffのプライマリーグループとなります。
なお、ファイルやディレクトリの属性として保存されるのは、「ユーザーID」と「グループID」です。「ls -l」コマンドなどで所有者を確認する際には、「/etc/passwd」と「/etc/group」の情報が参照されます。
CentOSやUbuntuでは、ユーザーのプライマリーグループとして、ユーザー名と同じ名前のグループが設定されています。この管理方式を「ユーザープライベートグループ(UPG)」と呼びます。
UPGの場合、新規ファイルのデフォルトのパーミッションは「rw-rw-r--」、新規ディレクトリのパーミッションは「rwxrwxr-x」となるように設定されています(画面3)(※)。
【※】デフォルトのパーミッションは「umask」コマンドで設定します
Linuxでは、あらゆる権限が与えられているユーザーを「root」あるいは「rootユーザー」「スーパーユーザー」と呼びます。rootというユーザー名でログインすると、あらゆるコマンドの実行やファイル操作ができるようになります。
また、Linuxでは「AさんのファイルはAさんだけが閲覧、編集可能」というのが基本ですが、rootユーザーは全てのユーザーの全てのファイルを操作することができます。有名な「rm -rf /」というコマンドは、システム上の全てのファイルを強制的に削除するという意味ですが、これもrootユーザーなら可能です(※)。
【※】CentOSのように、特別なオプションを追加しないと削除できないように設定されているシステムもあります。ただし、システムファイルは保護されていても、ユーザーのデータファイルは問答無用で削除できるため、削除コマンドの使用には十分注意してください。
rootユーザーは“何でもできる”ため、ちょっとした操作ミスでシステムに大きな損害を与えてしまう可能性があります。そこで、root権限が必要な場合は、rootユーザーでログインするのではなく「一時的にrootユーザーになる」という形で操作するのが一般的です。このとき使うのが「su」コマンドと、後述する「sudo」コマンドです。
suコマンドを実行すると、パスワードを求められます。rootユーザーのパスワードを入力すると、それ以降はrootユーザーとしてコマンドを実行できるようになります。アプリケーションのインストールなど、root権限が必要な操作が終わったら「exit」コマンドで元のユーザーに戻ります(画面4)。
【※】「id」は現在のユーザーIDとグループIDを表示するコマンド
【※】「su」コマンドが実行できるように設定されていない環境もあります
なお、Ubuntuのデフォルトではrootユーザーが無効になっており、sudoコマンドを使用するように推奨されています(詳細は後述)。
ちなみに、「su」は「substitute user」の略で、root以外のユーザーになることも可能です。ただし、そのためにはroot権限が必要なので、suコマンドでいったんrootユーザーになり、「su ユーザー名」で他のユーザーになる、という手順が必要です。ログインしたのと同じように設定ファイルなどを読み込みたい場合は、「su -」「su - ユーザー名」のように「-」を付けて実行します。
suコマンドの詳細については、連載「Linux基本コマンドTips」の第67回で取り上げていますので、そちらも参照してください。
suコマンドはrootユーザーのパスワードが必要であったり、exitコマンドで元のユーザーに戻る/ログアウトするまではrootユーザーのままでいたりするなど、安全面に問題があります。そこで使われるのが「sudo」コマンドです。
sudoコマンドは「sudo コマンド名 オプション……」のように、“rootユーザーとして実行したいコマンド”の前に「sudo」を付けることで、そのコマンドをroot権限で実行できるようにします。
「sudo コマンド名 オプション……」を実行すると、パスワードの入力が求められるので“自分のパスワード”を入力すると指定したコマンドが実行されます。このように、特定のコマンドを一般ユーザーのパスワードで実行できるのがsudoの特徴です。
また、sudoコマンドは、どのユーザーがどんなコマンドを使用できるかを設定することもできます。sudoコマンドとsudoの設定ファイル(/etc/sudoers)については、連載「Linux基本コマンドTips」の第68回を参照してください。
CentOS(バージョン7)では「wheelグループ」に全てのコマンドの実行が許可、つまりrootユーザー相当の権限が与えられています。
例えば、「ユーザーstudyは全てのコマンドを実行できるようにする」のであれば、「gpasswd -a study wheel」で、ユーザーstudyをwheelグループのメンバーに追加します(画面5)。この設定は、ユーザーstudyが次回ログインしたときから有効になります。
なお、Ubuntu(バージョン15)では、「adm」グループまたは「sudo」グループに属しているユーザーはデフォルトでsudoコマンドの実行が許可されており、OSをインストールしたときのユーザーは、自動でsudoグループにも所属するようになっています。
西村 めぐみ(にしむら めぐみ)
PC-9801NからのDOSユーザー。PC-486DX時代にDOS版UNIX-like toolsを経てLinuxへ。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。
Copyright © ITmedia, Inc. All Rights Reserved.
Linux �ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス OSS 鬯ッ�ッ�ス�ッ�ス�ス�ス�ョ�ス�ス�ス�ス�ス�ス�ス�ォ�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ェ鬯ッ�ョ�ス�ッ髯具スケ�ス�コ�ス�ス�ス�サ驛「�ァ隰�∞�ス�ス�ス�ス�ス�ス�ス�ソ�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�コ鬯ッ�ョ�ス�」髯具スケ�ス�ス�ス�ス�ス�ス�ス�ス�ス�オ鬯ョ�ォ�ス�エ驕カ謫セ�ス�オ�ス�ス�ス�コ�ス�ス�ス�キ�ス�ス�ス�ス�ス�ス�ス�ク�ス�ス�ス�ス�ス�ス�ス�キ�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ケ鬯ョ�ォ�ス�エ鬮ョ諛カ�ス�」�ス�ス�ス�ス�ス�ス�ス�「�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ウ鬯ッ�ッ�ス�ゥ髯晢スキ�ス�「�ス�ス�ス�ス�ス�ス�ス�「�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ァ�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ュ鬯ッ�ッ�ス�ゥ髯晢スキ�ス�「�ス�ス�ス�ス�ス�ス�ス�「鬯ョ�ォ�ス�エ鬮ョ諛カ�ス�」�ス�ス�ス�ス�ス�ス�ス�「�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ウ鬯ッ�ッ�ス�ゥ髯晢スキ�ス�「�ス�ス�ス�ス�ス�ス�ス�「�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ァ�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ー