ユーザーとグループ

カテゴリ: Linux Master / 公開日: 2011年1月23日(日曜)14:57 / 投稿者: Tom Goodsun

Linuxをインストールした直後の状態では、Linuxは「root(ルート)」と呼ばれるユーザーしか存在しません。これは別名「スーパーユーザー(super user)」とも呼ばれています。Linuxにおけるすべてを管理するためのユーザーでなんでもできます。WindowsでいうところのAdministratorにあたります。通常は複数のユーザーがLinuxを共有するためrootでの操作は限られた人にかできないようにして、各ユーザーが使える別のLinux上のユーザーを設定します。

ユーザーの設定はrootにしか行えません。具体的にどうするのかというと、useraddというコマンドを実行します。例えばLinuxのユーザー「takahashi」を新たに作成する場合、以下のコマンドを実行します。

$ useradd takahashi

このコマンドを実行するとLinux上に「takahashi」というユーザーアカウントが作成され、なおかつ/homeディレクトリにtakahashiというディレクトリが作成されます。ですが、これではパスワードが設定されていないため、セキュリティ上は余りよくありません。そこで、このtakahashiというユーザー(アカウント)に対してパスワードを設定します。

$ passwd takahashi
Changing password for user takahashi.
New UNIX password: 

ちなみにLinuxではパスワードを入力しても「*」などが表示されません。慎重に入力しましょう。

Linuxユーザーの作成

上記のやり方は、rootが行う場合で、引数には作成されているLinux上のユーザーアカウントを指定します。takahashiでログインしているときにpasswdを実行すると、自分自身のパスワードを変更することができます。実際にパスワードがちゃんとかかっているか確かめてみましょう。
再ログインするのもいいですが、Linuxはコマンドで、ユーザーを切り替えることができるので、それで確認します。現在の接続(この場合はrootでログインしていることを指します)から、違うユーザーにログインするときは「su」コマンドを使います。suコマンドは単独では、rootユーザーへのログインになりますが、引数にユーザーアカウント指定すると、そのユーザーへのログインになります。

$ su - takahashi

-(ハイフン)は現在のユーザーの設定を引き継がずにログインすることを意味します。これを省略しちゃうともともとログインしているユーザーの設定が引き継がれてしまい、困ることがあります。ここで、パスワードを求められればひとまずパスワードはかかっています。
LinuxのベースとなっているUNIXではパスワードをDESという不可逆暗号に変換しているので、どんなパスワードを設定したかは、ぶっちゃけわかりません。忘れないようにするか、rootから変更してもらうようにします。

さて先ほど、ユーザーを作ると/homeというディレクトリにユーザー名のディレクトリが作成されるとお話しました。ここはいわゆるホームディレクトリといって、そのユーザーが自由に使えるスペースです。先ほどtakahashiにログインしなおしたときもそのディレクトリに移ったはずです。気になる方は「pwd」というコマンドを打ってみてください。「/home/takahashi」と出るのがその証拠です。

 

このユーザーですが、通常運用している間は問題ないのですが、ユーザーにはそれぞれUIDと呼ばれる固有の番号が振られています。通常は我々人間が見てすぐわかる「takahashi」などのユーザー名でかまわないのですが、UIDとてもストリクトなサービスなんかを提供しようとすると、このUIDが足かせとなる場合もあります。ちなみにtakahashiのUIDを調べるには以下のコマンドを実行します。

$ id -u takahashi 

何か数字が出てきたら、それがそのユーザーのUIDです。

 

ところで、Linuxに登録されているユーザーを知るには一体どうすればよいのでしょう。実はユーザーの一覧はパスワードやUID、グループのID(GID)と共に/etc/passwdというファイルにテキスト形式で記述されています。これからユーザー名だけを吸い出してみます。それにはcutコマンドを使います。

$ cut -d: -f1 /etc/passwd 
Linuxのユーザー

どのコマンドでもそうですが、ハイフンの付いているものはオプションと呼ばれます。「-d」オプションはdelimiter、つまり区切り文字を意味します。この場合、一行分を「:(コロン)」で区切ります。続いて「-f1」はその区切られた1番目の要素を取得するということです(「tom:john:mike」ならtomを取り出す)。最後はこのコマンドの実行対象となるファイルです。図は私がある程度設定したLinuxのものですが、非常に多くのユーザーがありますね。作った覚えのないものや/home内にディレクトリがないものまで。そこで次の話になります。

Linuxのユーザー

実はLinuxにはデフォルトで多くのユーザーが作成されています。どういうことなのか? ここまでお話したユーザーの作成方法はどちらかというと、人がLinuxにログインして操作するためという意味合いが強いです。Linuxはソフトウェアの実行にもそのソフトウェア専用のユーザーを作成して実行することが可能です。わかりやすいので言えば「mail」ユーザー。これはメールサーバー用のユーザーといえます。よって新しいソフトウェアなどがインストールされるとそのソフトウェアの仕様によって、ユーザーが作られることがあるのです。また、ソフトウェアの仕様で、これらユーザーを管理者が作成したユーザーにすることも可能です。