LinuxはOSの名前で、windowsとは大きく違い主にターミナルと呼ばれる画面でコマンドを打つことで操作する。 ここでは基本的なコマンド操作を説明する。
LinuxはOSの一つで様々な種類がある。 大まかに分けると3つに分かれる。
どれを使うかは個人の好みによるので、まずは仮想マシンVMware等で試してみると良いだろう(macならvmware fusionなど)。
RHEL (Red Hat Enterprise Linux) は個人用途なら16台まで無料で利用できる。
私の環境では何故かboot isoではインストールできず、USBにfullサイズ入れたものでインストールできた。
更に以下のコマンドを実行すると、Desktopとパッケージ管理(dnf)が消し飛ぶので注意。
$ sudo dnf remove python3
Linuxに限った話ではないが、それぞれのファイルやディレクトリには3種類の権限がある。
chmod
というコマンドを使ってファイルの権限を変えられる。
このときに、上の()内の記号、数字で権限を付加・削除・設定できる。数字の場合は足し算で権限を複数与えられる (例えば、読み書き可能 : 4+2 = 6)。
更に権限を与える対象にも3種類あり、ファイルの持ち主 (オーナー)、ファイルの所属しているグループ、その他に対してそれぞれに設定できる。
$ chmod +x <ファイル名> #全ユーザーが実行可能
$ chmod -w <ファイル名> #全ユーザー書き込み権剥奪
$ chmod 761 <ファイル名> #オーナーは読み書き実行可能、グループユーザーは読み書きのみ、その他ユーザーは実行のみ
Linuxで、コマンドだけで色々したい(sshで繋いだときとか)場合、これを知らないとコマンドでの操作ができない。
cd <ディレクトリのパス>
: 現在自分のいる場所を指定したパスに移動(Windowsでいうところのフォルダダブルクリック)ls <ディレクトリのパス>
: 指定したディレクトリの中身をリストで表示(指定しなければ現在の場所にあるものを表示)mkdir <ディレクトリのパス>
: 現在の場所にディレクトリを作成(Windowsでいうところのフォルダ新規作成)rm <ファイル・ディレクトリのパス>
: 指定したファイル/ディレクトリを削除cp <コピー元のファイルパス> <コピー先のパス>
: ファイルのコピーmv <移動元のパス> <移動先のパス>
: ファイル/ディレクトリの移動(Windowsでいうところの切り取り貼り付け)これだけ見ると普段の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はlinuxが起動/再起動した際にバックグラウンドで実行させたいコマンド等(daemon)を管理するコマンドである。
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
$ sudo systemctl [enable or disable] <設定したサービス名>
$ sudo systemctl [start or stop or status or restart] <設定したサービス名>