Linux リテラシ - 第3回 システムの基本
スーパーユーザーと一般ユーザー
Section titled “スーパーユーザーと一般ユーザー”Linuxではスーパーユーザーアカウントと一般ユーザーアカウントという2種類のユーザーアカウントが存在します。
スーパーユーザー
Section titled “スーパーユーザー”システムの管理者です。通常rootと呼ばれます。一切制限を受けずにシステム内で操作を行うことができます。
一般ユーザー
Section titled “一般ユーザー”システム管理以外の通常の作業を行うユーザーです。操作に制限があります。通常、スーパーユーザーアカウントを持っている人も一般ユーザーアカウントを持っています。スーパーユーザーの操作には制限が全くないので、もしスーパーユーザーアカウントで間違った操作を行うと、最悪、システムを破壊してしまいます。ソレに対して、一般ユーザーで操作を誤ってもシステムが壊れることはありません。なので、スーパーユーザーアカウントをもっていても権限が必要のないときには一般ユーザーアカウントで作業を行うのが普通です。
一般ユーザーの追加
Section titled “一般ユーザーの追加”一般ユーザーを追加するにはuseraddコマンドを使います。
useradd hoge上のようなコマンドを打つと、hogeというユーザーが追加されます。追加されたユーザーにはパスワードが設定されていません。パスワードを設定するにはpasswdコマンド使います。
passwd hogeなお、passwdコマンドはパスワードを変更するときにも使います。
passwdとすれば、コマンドを実行したユーザーのパスワードを変更します。また、rootはすべての一般ユーザーのパスワードを変更することが可能です。
ユーザーの変更
Section titled “ユーザーの変更”ユーザーを変更するコマンドはsuです。Switch Userの略ともSelect Userの略とも言われています(Super Userの略という話も聞いたことがある)。基本的な使い方は下のようになっています。
su [オプション] ユーザー名rootに変更する場合はユーザー名を省略することが可能です。一般ユーザーが使う場合は変更したいユーザーのパスワードを求められます。suで良く使うオプションに次のようなものがあります(hogeはユーザー名)。
su - hoge ・・・hogeに変更後の環境がhogeでログインした場合と同じ環境になる。su -c コマンド hoge ・・・hogeの権限でコマンドを実行する。/etc/passwd
Section titled “/etc/passwd”ユーザーアカウント情報が格納されているファイルです。各項目はコロンで区切られ次のようになっています。
hoge:x:500:500::/home/hoge:/bin/bashそれぞれの項目の意味はmanコマンドで調べてください。
/etc/shadow
Section titled “/etc/shadow”暗号化されたパスワードが格納されているファイルです。/etc/passwdのパスワードの欄がxの場合、ユーザーのパスワードは/etc/shadowに保存されています。/etc/passwdとは違い、一般ユーザーが読めるようにはなっていません。
ユーザーは1つ以上のグループに所属しています。通常、ユーザー名と同じ名前のグループに所属しています。Linuxではユーザー単位の他にグループ単位でファイルのアクセス権を指定することが可能です。
/etc/group
Section titled “/etc/group”グループに関する情報が格納されているファイルです。詳細はmanで調べてください。
ディレクトリ構成
Section titled “ディレクトリ構成”ルートディレクトリ下の各ディレクトリには下のような感じでファイルが格納されています。
/|--bin 基本コマンド|--boot 起動時に必要なファイル|--dev デバイスファイル|--etc 設定ファイル|--home ユーザーのホームディレクトリ|--lib 共有ライブラリ|--media リムーバルメディアのマウントポイント|--mnt 一時的なマウントポイント|--opt 追加アプリケーション|--proc プロセス情報など|--root rootのホームディレクトリ|--sbin 基本システムコマンド|--srv システムサービスからのデータ|--tmp 一時ファイル|--usr 二次階層|--var 変更されるデータ/usr|--bin ユーザーコマンド|--games ゲーム|--include C言語のヘッダファイル|--lib ライブラリ|--local 自分でインストールしたソフトウェアを格納する階層|--sbin /sbinと比べて重要でないシステムコマンド|--share アーキテクチャに依存しないデータ多くのLinuxディストリビューションはFilesystem Hierarchy Standard (FHS)という標準に従ったディレクトリ構成をしています。FHSの最新バージョンは2004年1月に発表された2.3です。そのため、それ以前のディストリビューションではディレクトリ構成が少し異なるかもしれません。より詳しく知りたい場合はhttp://www.pathname.com/fhs/を参照してください。
ソースインストール
Section titled “ソースインストール”ソフトウェアをソースからインストールしてみます。ソースからインストールする場合はソースアーカイブ内にあるREADME、INSTALLといったドキュメントファイルを絶対に読みましょう。今回は例としてslをとりあげます。http://www.tkl.iis.u-tokyo.ac.jp/~toyoda/sl/sl.tarをダウンロードし、展開します。作成されたディレクトリに移動すると、そこにREADMEがあるので読みます。文字化けしてしまい読めない場合は次のコマンドを実行してください。
iconv -f ISO2022JP READMEREADMEを読むと「make すればできあがります」と書いてありますので、makeを実行します。
makeするとカレントディレクトリにslという実行可能なファイルが作成されます。
このままでは、slと打っただけでコマンドが実行されないのでPATHの通ったディレクトリにslを移動します。自分でインストールしたソフトウェアは/usr/local以下に置くのが普通なので、slを/usr/local/binに移動します。なお、/usr/local/binはrootだけでしか書き込みはできません。これでslを普通のコマンドと同じように実行できます。(slをこの通りやってインストールした場合、ファイルの所有権の項を絶対に読んでください)
ファイルの所有権
Section titled “ファイルの所有権”ファイルの所有権はユーザーとグループにより指定されます。ls -lを実行するとファイルを所有しているユーザーとグループの名前を見ることができます。ファイルの所有権を変更するにはchownコマンドを使用します。chownは次のように使います。
chown [オプション] user[:group] ファイルさっきインストールしたslの所有者とグループを見てみます。
-rwxrwxr-x 1 hoge hoge 10829 5月 28 16:28 /usr/local/bin/sl所有者が一般ユーザーです。また、グループは一般ユーザー(hoge)が所属するグループです。これはセキュリティー上大変危険ですので、所有権をrootに変更します。
chown root:root slまた、slをグループが書き込む必要性はないのでグループの書き込み権限を取り除きましょう。
パッケージインストール
Section titled “パッケージインストール”ソフトウェアのインストールにはディストリビューターが提供しているパッケージをインストールする方法もあります。CentOS、Fedora CoreといったRed Hat系のLinuxではRPMというパッケージ管理システムを使い、パッケージのインストールを行うことができます。RPMでパッケージをインストールするには次のようにします。
rpm -ivh パッケージ名また、RPMはパッケージのアンインストールも行えます。パッケージをアンインストールするには次のようにします。
rpm -e パッケージ名インストールされているパッケージを調べることもできます。
rpm -q パッケージ名実際にrpmをつかってみます。今回はtreeというプログラムをインストールします。まず、treeがすでにインストールされていないことをチェックします。
rpm -q treeここで、tree-といったものが出力されなければ、インストールされていません。インストールされていないことを確認したら、http://storage.cis.k.hosei.ac.jp/pub/Fedora/3/i386/Fedora/RPMS/tree-1.5.0-1.i386.rpm (学内のみ)をダウンロードします。インストールはrootで行います。
rpm -ivh tree-1.5.0-1.i386.rpm試しにtreeを実行してみましょう。
停止・再起動
Section titled “停止・再起動”通常、システムの停止・再起動はrootのみが行えます。しかし、デスクトップ用途でLinuxを使う場合は一般ユーザーでも停止・再起動をできるようになっている場合が多いです。
システムを停止するにはshutdownコマンドを使います。
shutdown -h nowまた、haltコマンドでも可能です。
haltshutdownコマンドで再起動もできます。
shutdown -r nowrebootコマンドでも再起動します。
reboot今回、教育的な理由によりあのような方法でslをインストールしました。実際にインストールする際は、slを/usr/local/binに移動する前に所有権、パーミッションを変更するべきです。
suchown root:root slchmod 755 slmv sl /usr/local/binというか、slを/usr/local/binに置くのにmvでなくcpを使えば問題ありません。pオプションを使わなければ、複製されたファイルはcpを実行したユーザーが所有者になるからです。ただし、パーミッションは変更しなくてはなりません。
chmod 755 slsucp sl /usr/local/binここまで色々書いてきましたが、実はinstallというインストールする際に大変役に立つコマンドがあります。インストールはファイルをコピーするコマンドです。cpとは違い、コピーのパーミッションと所有権を設定することができます。今回なら次のように実行します。
install -m 0755 -o root -g root sl /usr/local/binちなみに、installはデフォルトで、アクセス権が0755、所有者はroot、所有グループは実行したユーザのグループなので、オプション無しでも平気だったりします。