Ubuntu Weekly Recipe

第638回 Ubuntuに「普通に」ログインするいろいろな方法

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

異なるユーザーでログインする

Linuxはマルチユーザーに対応したシステムなので,当然のことながら他のユーザーとしてログインすることも可能です。たとえあなたが比類なきぼっちだったとしても,Ubuntuには最初からメインユーザー以外のアカウントがいくつか登録されています。

アカウントの追加方法

もちろんシステム設定から新規にユーザーアカウントを登録することも可能です。GUIなら設定(GNOMEコントロールセンター)「ユーザー」を開きます。画面右上の「ロックを解除」ボタンで,ユーザー変更の権限を取得したら「ユーザーを追加」ボタンを押して,アカウント名・フルネーム・パスワードを入力してください。ちなみにパスワードに関しては「次回ログイン時に決める」といった設定も可能です。

図2 ユーザーの追加ダイアログ

画像

CLIの場合はadduserもしくはuseraddコマンドを使います。

adduser
Debian系なら標準でインストールされているアカウント追加コマンド。必須のオプションが未指定の場合は対話的に問い合わせる。
useradd
Linuxシステムなら大抵インストールされているアカウント追加コマンド。オプション未指定の場合は既定の値が自動設定される。

たとえばuseraddはオプションを指定せずに実行すると,ホームディレクトリすら作ってくれません。それに対してadduserは,オプションをほぼ指定していなくても必要最低限の環境は構築されます。Debian系のマシンにおいて手作業でアカウントを作るのであればadduserを,より汎用的な手順にしたり自動化したいならuseraddを検討すると良いでしょう。

adduserでアカウントを追加するには次のように実行します。

$ sudo adduser shibata
Adding user `shibata' ...
Adding new group `shibata' (1001) ...
Adding new user `shibata' (1001) with group `shibata' ...
Creating home directory `/home/shibata' ...
Copying files from `/etc/skel' ...
New password: (パスワードを入力)
Retype new password: (上と同じパスワードを入力)
passwd: password updated successfully
Changing the user information for shibata
Enter the new value, or press ENTER for the default
        Full Name []: Mitsuya Shibata
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n]

最低限必要な引数はユーザー名です。上記だと「shibata」がそれに該当します。あとはパスワードと「Full Name」を入力しましょう。他はあまり使うことがないため,未設定でも問題ありません。

adduserはホームディレクトリや基本的な設定ファイルを一通り作ってくれるため,すぐにでもログイン可能な状態でアカウントが作られます。

$ ls -la /home/shibata/
total 16
drwxr-xr-x 1 shibata shibata   80 Oct 17 09:16 .
drwxr-xr-x 1 root    root      26 Oct 17 09:14 ..
-rw------- 1 shibata shibata   12 Oct 17 09:16 .bash_history
-rw-r--r-- 1 shibata shibata  220 Oct 17 09:14 .bash_logout
-rw-r--r-- 1 shibata shibata 3771 Oct 17 09:14 .bashrc
-rw-r--r-- 1 shibata shibata  807 Oct 17 09:14 .profile

ちなみに「あるユーザーを特定のグループに追加で所属させる」場合にもadduserコマンドが使えます。たとえばユーザー「shibata」をlxdグループに所属させるには次のように実行します。

lxdグループには未所属
$ id shibata
uid=1001(shibata) gid=1001(shibata) groups=1001(shibata)

「ユーザー名 グループ名」の順で指定する
$ sudo adduser shibata lxd
Adding user `shibata' to group `lxd' ...
Adding user shibata to group lxd
Done.

ユーザー「shibata」のサブグループとしてlxdが追加された
$ id shibata
uid=1001(shibata) gid=1001(shibata) groups=1001(shibata),118(lxd)

同じことを実現できるusermodと比べてオプションを思い出す必要のない点が便利です。

他のユーザーへ切り替わる方法

ログイン画面からは通常のユーザー登録したアカウントでしかログインできませんが,実は端末ソフトウェアからならログインしたユーザーとは別のユーザーに「切り替わる」ことが可能です。

$ sudo -i -u ユーザー名

-iオプションで指定したユーザーのログインシェルを実行します。この「ログインシェル」とは/etc/passwdファイルの7番目のフィールドに記述されているコマンドを意味します。-u ユーザー名「指定したユーザー」として実行することを意味します。まとめると「指定したユーザーの権限で指定したユーザー本人のログインシェルを実行する」「指定したユーザーとしてログインする」ですね※4⁠。

※4
サービス用にアカウントを作成したものの,ログインの必要がないユーザーについては/usr/sbin/nologin/bin/falseなど必ず失敗するコマンドがログインシェルとして設定されています。さらにログインシェルとして特定のスクリプトを指定することで,⁠ログインすると定形作業を行うアカウント」の作成も可能になります。
$ whoami
ubuntu

$ sudo -i -u shibata
$ whoami
shibata

sudoコマンドは-uオプションを省略すると暗黙的にrootとして実行します。また-iオプションの代わりに任意のコマンドを書けばログインシェルではなくそのコマンドを実行します。よってsudoは管理者権限で実行するために必要なコマンドとして認識されていることが一般的です。

-iコマンドを付けるとログインシェルを実行します。これはつまり~/.profileのようなユーザー固有のログインスクリプトも読み込まれるということです。そのため「ほぼ」そのユーザーがログインした環境になります。ただし環境変数などは/etc/sudoersの設定によって引き継がれるかどうか変わるため,完全に同じになるかどうかは設定に依存します。

環境変数はそのままにユーザーだけ切り替えたい場合は-iの代わりに-sオプションを使います。

管理者権限で実行するシェルを起動する
$ sudo -i
#

特定のユーザー権限で特定のコマンドを実行する
$ sudo -i -u ユーザー名 コマンド名

sudoコマンド経由で実行したコマンドは/var/log/auth.logに誰が・いつ・どこで・何を実行したかの情報が記録されます。意図せずシステムの状態を壊してしまったときに有力な情報源となりますので,なるべくなら管理者権限が必要なコマンドはsudo経由で実行しましょう。

著者プロフィール

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

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