Linux リテラシ - 第3回 演習問題 解答

吉橋
問題(1)
ユーザーをsu -でrootに変更し、rootのホームディレクトリを確認せよ。
[hoge@localhost ~]$ su -
Password:
[root@localhost ~]# pwd
/root

su -でユーザーを変更した場合、変更後のカレントディレクトリは変更後のユーザーのホームディレクトリになります。そこでpwdとやればrootのホームディレクトリを確認できます。rootのホームディレクトリは/home以下のディレクトリではなく、/rootであることに注意しましょう。

問題(2)
rootでファイルを削除しようとすると、「rm: remove 通常ファイル `ファイル名'?」といった感じに削除の確認が問われる。適当なファイルをrootのホームディレクトリに作成し、それを削除してみる。問い合わせにyまたはYで始まる文字列で答えるとファイルを削除し、それ以外の場合はファイルを削除しないことを確かめよ。
[root@localhost ~]# echo foo > hoge.txt
[root@localhost ~]# rm hoge.txt
rm: remove 通常ファイル `hoge.txt'?

ファイルを作成するのにechoと出力のリダイレクトを用いました。ファイルが削除されたかどうかは自分で確認すればわかるでしょう。

問題(3)
一般ユーザーではオプション無しでrmを実行した場合、rootの時のように削除の確認は問われなかった。どのようにして、削除の確認を問い合わせるようにしているのか調べよ。

rmコマンドには削除する時に警告メッセージを表示させる-iオプションがあります。これを知っていれば、rootの環境では'rm -i'にrmというエイリアスが張られていることを予想できます。

[root@localhost ~]# alias
alias cp='cp -i'
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'
alias mv='mv -i'
alias rm='rm -i'
alias vi='vim'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

CentOS 4.0では上のようなエイリアスが定義されています。ここに、rm='rm -i"があります。これがrootでrmを実行すると削除の確認を問い合わせるようしています。

問題(4)
/etc/passwdの各項目の意味についてmanで調べよ。ヒント:設定ファイルはセクション 5。
[hoge@localhost ~]$ man 5 passwd

マニュアルにはセクションがあります。manは引数としてセクション番号を指定することにより、そのセクションの中からマニュアルを探します。/etc/passwdのマニュアルはセクション 5なので、上記のようにやると/etc/passwdのマニュアルを見ることができます。

[hoge@localhost ~]$ man passwd

ちなみに、上のように5を入れずに実行すると、パスワードの変更を行うpasswdコマンドのマニュアルを開いてしまいます。

問題(5)
slで蒸気機関車が走らないようにしたい。一般ユーザー権限しか持っていない場合でそのようにするにはどうしたらよいか。

slにエイリアスを貼ればよい。

[hoge@localhost ~]$ alias sl='ls -r'

その他の方法として、slの置いてある/usr/local/binをPATHから外すことが考えられますが、これだと/usr/local/binにあるすべての実行ファイルの実行に影響を与えてしまいます。

問題(6)
Linuxにはlvという多言語化ファイルビューアーが存在する。これをrpmを使ってインストールしてみよ。lvを使えばslのREADMEを普通に読めることを確認せよ。RPMパッケージは下記の場所からダウンロードできる(学内のみ)。
[root@localhost ~]# rpm -ivh lv-4.51-3.1.i386.rpm
[hoge@localhost sl]$ lv README

gnome-terminal上ではcatでREADMEを普通に読めますが、lessでは読むことができません。このREADMEは非常に短いファイルなのでlvのありがたみはほとんどありません。

問題(7)
一般ユーザーでログインし、オプション無しでsuを使いrootになった。この状態で、shutdownコマンドを打つと「bash: shutdown: command not found」と返ってくる。このときの環境変数PATHにはshutdownが置いてある/sbinがないことを確認せよ。
[hoge@localhost ~]$ su
Password:
[root@localhost hoge]# shutdown 
bash: shutdown: command not found
[root@localhost hoge]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/hoge/bin
問題(8)
su -でrootになった場合はどうか。
[hoge@localhost ~]$ su -
Password:
[root@localhost ~]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin

この場合、/sbinはPATHに入っています。

問題(9)
システムを停止させよ。
[root@localhost ~]# shutdown -h now

または、

[root@localhost ~]# halt
問題(10)
適当なソフトウェアを見つけ、ソースからインストールしてみよ。下記のサイトはソフトウェアを探すのに役立つかもしれない。

この問題はオプションです。当然ですが、選んだソフトウェアによりインストールの仕方は異なります。