Webとデザインのあれこれ

プログラミングとUIデザインの学習記録です。

LinuxOSについて#1

LinuxOSの概要

本記事の構成は以下となります。

  • LinuxOSの特徴
  • ログイン・ログアウトについて
  • ファイル・システム

OSの特徴

LinuxのOSには以下のような特徴があります。

  1. マルチユーザー機能
  2. マルチタスク機能

マルチユーザー機能とは、「複数のユーザーが同時に1台のコンピュータを利用できること」を指します。
マルチユーザー対応のシステムでは、各ユーザーがあたかも自分だけがシステムを使用している(システムを占有している)かのようにシステムを利用することが可能です。この機能を実現しているのがTSS(時分割処理)という技術です。

OSのマルチタスク機能については、Windowsなどでお馴染みかと思います。その名の通り、同時に複数のタスク実行が可能です。

ユーザーについて

マルチユーザーの利用が可能ということは、複数のユーザーが利用するため、システムを管理する側と一般の利用者を区別する必要があります。
以上を踏まえ、LinuxOSのユーザは以下の2種類に分かれます。

  1. システム管理者(別名、rootユーザー)
  2. 一般ユーザー

システム管理者は,「root」(ルート)という固定のユーザー名を持ちます。システム管理者は一般に,rootユーザーやroot権限者,スーパーユーザーなどと呼ばれます。また,rootユーザーになることを,「root権限を> 取得する」や「管理者権限を取得する」と言います。

rootユーザーは絶大な権限を持ち、rootユーザーにしか実行できないタスクが存在します。

システムをただ利用するだけのユーザーを「一般ユーザー」と呼びます。

例えば、1人だけでLinuxOSを利用する場合でもrootユーザーと一般ユーザーは区別するのが無難です。rootユーザーで作業をしている際に、誤ってディレクトリを削除してしまうような事態を避けるためです。

rootユーザーのログインは、以下の手順となります。

su - [Enter]
Password: #パスワード入力

ログインについて

ログイン方法については、GUI形式のグラフィカル・ログインとCUI形式のテキスト・ログインの2種類に分かれます。

私がインストールしたOSのDebian9はテキスト・ログイン形式でしたので、本記事ではコンソールによるログインを主に扱います

一般ユーザー名とパスワードを入力しますが、パスワードが表示されないことに注意が必要です。ログインすると、プロンプトが表示されます。

プロンプトは、ログインするユーザーによって以下のように分かれます。

$ 一般ユーザー
# rootユーザー

ちなみに、ログイン方法は変更が可能です。ログイン方法の設定は,/etc/inittabファイル内に記述されています。rootユーザーでログインし、そのファイルをViなどのテキスト・エディタで編集することで,変更できます(システムの再起動が必要です)。

id:5:initdefault: #GUIベースからCUIへ変更する場合、5から3へ(逆は3から5へ変更)

また、一時的にログイン方法を変更する方法もあります。この場合、ログアウトしたら、また元に戻ります。

まず、rootユーザーでログイン、プロンプト(#)の後に、GUIにする場合はtelinit 5CUIにする場合はtelinit 3を入力します。

私の場合、 /etc/inittabがありませんでした。インストールするLinuxディストリビューションによって異なるようです

ユーザーの登録について

一般ユーザーを登録する場合と削除する場合のコマンドを整理します。いずれの場合もrootユーザーでログインする必要があります。

useradd 一般ユーザー名 #ユーザーの登録
password パスワード #ユーザーの登録後、パスワードも登録
passwd  #パスワードの変更(passwd実行後、変更画面に変わります)

また、ユーザーを削除する場合は、

userdel -r 一般ユーザー名 #一般ユーザー名とそのホームディレクトリの削除
groupdel グループ名 #グループの削除

rオプションを使うことで一般ユーザー名だけでなくホームディレクトリも削除できます。

ログアウト

exit  #ログアウト

また、シャットダウンについては、rootユーザーで以下を実行します。

shutdown -h now #シャットダウン実行

さくらVPSの場合、サーバー管理画面にシャットダウンのボタンがあります。

f:id:b_leiu:20190211174411p:plain:w400

ファイルについて

ファイルという用語は聞き慣れた言葉ですが、一般的な意味と少し異なります。ファイルとは「一定のルール下で記録したデータの集合体」を指します。
記録の形式の観点から、例えば「テキスト・ファイル」や「画像ファイル」、「PDFファイル」などに分類されます。また、実行可能なデータのことを「プログラム・ファイル」と呼びます。

ファイルはコンピュータのHDDやSSDなどストレージ・デバイスに格納されており、コンピュータは処理を行う際に,開いたり、削除したりしてファイルを活用します。 ファイルの管理はOSの重要な機能の一つです。

ストレージデバイスなどの2次記憶装置でファイルを管理する方式のことを「ファイル・システム」と呼びます。Linuxで使用可能なファイル・システムには,ext2fs,ext3fs,JFS,XFS,ReiserFSなどがあります。

ext3fsはext2fsの機能拡張版で,データの整合性を保証するためにファイルの操作履歴を記録するジャーナリング機能を備えています。

フォーマット(初期化)というのは、「ファイル・システムの形式に則り、2次記憶装置を整備してデータが書き込める状態にすること」です。

フォーマットされたパーティション(論理的に分割されたドライブの記憶領域)をLinuxOSで使用するには、「マウント」という作業が必須となります。マウントとは、ファイル・システムのツリー構造に記憶媒体を取り込むことを指します。

ファイルの保護機能

LinuxOSはマルチユーザーを前提としており、各ファイルの保護機能が組み込まれています。パーミッションといって、アクセス権がファイルごとに定められています。

ファイルとディレクト

Linuxのファイル・システムは、ディレクトリを中心とする階層化されたツリー構造によって構成されています。以前の記事Linuxのコマンドについて触れているのですが、追加で触れてみたいと思います。

ディレクトリの削除

rmdir text #空のディレクトリを削除する
rm -r text #空ではないディレクトリも削除、-rオプションはrecursive(再帰)オプション
rm -rf text #空でないディレクトリも削除、-rfのfはforce

中身が空でないディレクトリをrmdirコマンドで削除しようとすると、「ディレクトリは空ではありません」というメッセージが表示されます。 -rオプションは空ではないディレクトリをそっくりそのまま削除するイメージですね。

リンクの作成

ln -s file file2 #シンボリック・リンクの実行
ls -F #リストコマンドを-Fオプションで実行
ls -s file2

リンクはコピーとは異なり、ファイルを複製せずに名前を2つ作るイメージです。シンボリック・リンクの場合-sオプションを使います。

lsコマンドに-Fオプションを指定すると,シンボリック・リンクされたファイル名の後ろには特殊文字「@(アットマーク)」が付加されるので、file2@ fileが実行結果となります。

最後に、lsコマンドに-sオプションを指定すると、先頭の文字にlがつき、file2の実体がfileであることがわかります。

その他

file #ファイルの種類を表示
touch #アクセス日時の修正
find . -name ファイル名 #ファイルの格納先ディレクトリを表示(.はカレントディレクトリ)
find / -name ファイル名 #/(ルートディレクトリ)を指定すると、全範囲を検索

Linuxの扱うファイルの種類

Linuxで扱うファイルは以下の3種類に分かれます。

  1. 「通常ファイル」
  2. ディレクトリ・ファイル」
  3. 「特殊ファイル(スペシャル・ファイル,あるいはデバイス・ファイル)」

「通常ファイル」とは、プログラムやデータを格納するファイルのこと。ファイルというと、通常ファイルのことを指すことが多いかと思われます。

ディレクトリ・ファイル」は、通常ファイルや特殊ファイルを管理するためのファイルで,一般には短くディレクトリと呼ばれます。ディレクトリも広い意味では、ファイルとして管理されているのですね

「特殊ファイル」とは、周辺装置(入出力装置や外部記憶装置)を仮想的なファイルとして扱えるようにしたものです。

リムーバブル・ストレージの扱いについて

外部記憶媒体といえば、USBメモリやCDROMですね。
USBメモリを始めとした外部記憶媒体をPCに接続するとWindowsOSの場合は「Dドライブ」や「Eドライブ」として認識されます。 これらを「ドライブレター」といいます。しかし、Unix/Linux にはドライブレターが存在しないのです(!)

比較的新しいLinuxディストリビューション上ではこれらの媒体は挿入時に自動認識され、マウントされます。「マウント」というのは、Linux上のディレクトリの階層構造に記憶媒体を認識して、一部に取り込むことを指します。

ファイル・システムがディレクトリの階層構造であるUnix/Linuxならでは、という感じがします。

最後に

少し長くなりました!明日はシェルに入ります。