Linuxのtips

LinuxはOSの名前で、windowsとは大きく違い主にターミナルと呼ばれる画面でコマンドを打つことで操作する。 ここでは基本的なコマンド操作を説明する。




Linuxのディストリビューション


LinuxはOSの一つで様々な種類がある。 大まかに分けると3つに分かれる。

どれを使うかは個人の好みによるので、まずは仮想マシンVMware等で試してみると良いだろう(macならvmware fusionなど)。

RHELで気をつけること


RHEL (Red Hat Enterprise Linux) は個人用途なら16台まで無料で利用できる。 私の環境では何故かboot isoではインストールできず、USBにfullサイズ入れたものでインストールできた。
更に以下のコマンドを実行すると、Desktopとパッケージ管理(dnf)が消し飛ぶので注意。

$ sudo dnf remove python3

Permissionについて


Linuxに限った話ではないが、それぞれのファイルやディレクトリには3種類の権限がある。

Linuxではchmodというコマンドを使ってファイルの権限を変えられる。 このときに、上の()内の記号、数字で権限を付加・削除・設定できる。数字の場合は足し算で権限を複数与えられる (例えば、読み書き可能 : 4+2 = 6)。 更に権限を与える対象にも3種類あり、ファイルの持ち主 (オーナー)、ファイルの所属しているグループ、その他に対してそれぞれに設定できる。
$ chmod +x <ファイル名> #全ユーザーが実行可能
$ chmod -w <ファイル名> #全ユーザー書き込み権剥奪
$ chmod 761 <ファイル名> #オーナーは読み書き実行可能、グループユーザーは読み書きのみ、その他ユーザーは実行のみ

ファイル/ディレクトリ操作


Linuxで、コマンドだけで色々したい(sshで繋いだときとか)場合、これを知らないとコマンドでの操作ができない。

これだけ見ると普段のGUI操作のほうが簡単に思うかもしれないが、これらのコマンドにはオプションがあったり、ワイルドカードでファイルを指定できたりするので慣れると実は便利。

ワイルドカードについて

様々なワイルドカードの指定ができる。

以下に例を示す。

$ ls
test.txt test_01.txt test_02.txt test_03.txt test_a.txt test_b.txt

こういうファイルが今の場所に存在するとして操作を行ってみる。 cpを使って操作しているが実際はどのコマンドでも使える。cpのコピー先のディレクトリを用意する。

$ mkdir test_num test_txt test_ab
$ ls
test.txt test_01.txt test_02.txt test_03.txt test_a.txt test_ab test_b.txt test_num test_txt

ディレクトリができていることを確認後、まずは.txtの拡張子がついたファイルをtest_txtにコピー

$ cp *.txt test_txt
$ ls test_txt
test.txt test_01.txt test_02.txt test_03.txt test_a.txt test_b.txt

用意したファイルは全て.txtファイルなのでlsで確認すると全てコピーされている。 次にtest_?.txtのコピーをしてみる。

$ cp test_?.txt test_ab
$ ls test_ab
test_a.txt test_b.txt

lsで確認するとtest_a.txtとtest_b.txtがコピーされている。 更にtest_0[1-3].txtのコピーをしてみる。

$ cp test_0[1-3].txt test_num
$ ls test_num
test_01.txt test_02.txt test_03.txt

lsで確認すると連番でのコピーができている。

オプション

それぞれのコマンドのオプションを説明する。

ファイヤーウォールの設定


インストール方法

Debian, Rasbianの場合

$ sudo apt install -y ufw

RHELの場合

$ sudo dnf install -f firewalld

ファイアウォールの許可/拒否設定

Debian, Rasbianの場合

$ sudo ufw default deny
$ sudo ufw [allow or deny] [<Port番号>/[tcp or udp] or <サービス名>]

RHELの場合

$ sudo firewall-cmd [--add-port or --remove-port or --add-service or --remove-service]=[<Port番号>/[tcp or udp] or <サービス名>] (--permanent) (--zone=[public or private etc])

ファイアウォールの有効化

Debian, Rasbianの場合

$ sudo ufw enable

RHELの場合(有効化)

$ sudo systemctl enable firewalld

RHELの場合(起動)

$ sudo systemctl start firewalld

systemctlの使い方


systemctlはlinuxが起動/再起動した際にバックグラウンドで実行させたいコマンド等(daemon)を管理するコマンドである。

systemctlへの登録

serviceファイルの作成

[Unit]
Description=<設定したサービス名>

[Service]
ExecStart=<実行コマンド or 実行ファイルのパス>
Restart=no #失敗した際に再起動するか
Type=simple

[Install]
WantedBy=default.target
$ sudo ln -is <serviceファイルのパス> /etc/systemd/system
$ sudo systemctl daemon-reload

systemctlの有効化/無効化

$ sudo systemctl [enable or disable] <設定したサービス名>

systemctlの開始、停止、状態表示等

$ sudo systemctl [start or stop or status or restart] <設定したサービス名>