Linuxのtips
On this page
Linuxのディストリビューション
LinuxはOSの一つで様々な種類がある。 大まかに分けると3つに分かれる。
- Debian系
- Debian: debian系の大本、動作が安定していてサーバーで使われたりする。
- Ubuntu: 世の中でよく使われるOS。使ったことはないが使いやすいらしい。
- Linux mint: 比較的軽量OSで最近人気。デスクトップ環境で使いやすいらしい。
- Raspberry pi OS (旧Rasbian): Raspberry pi用のOS基本Debianで軽量なOS。
- Red hat enterprise Linux系
- Red hat enterprise linux(RHEL): 16台までなら無料のOS (少し前なら有料だった)。企業が開発しているため、安定動作が保証されている。
- CentOS Stream: 少し前まではRHELの無料の安定版クローンだったがStreamがついてから、 無料だがRHELの検証用OSとなった(アップデートがRHELより先に行われて検証するため)。
- Fedora: RHELの実験要素が多い。ここで良かったものがCentOS Streamに採用されて、 問題がなければ本家のRHELに採用されるイメージ。
- Alma linux: CentOSが安定版クローンでなくなったため誕生した後継OS。
- Rocky linux: CentOSが安定版クローンでなくなったため誕生した後継OS。CentOSの創設者が立ち上げたらしい。
- Slackware系
- Slackware: かなり歴史のあるLinuxでlinuxの素に近いらしい。
- Puppy linux: 軽量OSでUSB上でOSを動かすこともできるらしい。
- Plamo linux: 和製OSでカスタマイズが簡単とのこと。
- openSUSE: 元々はSlackwareがベースだったらしいが、 現在は違うとのこと。パッケージマネージャーでCERNのROOTとGeant4が入れられるらしい。
- その他
- Arch linux: 軽量でシンプルでカスタマイズ性の高いOS。Gentooほどではないがインストールの際に色々自分で設定する必要がある。
- Gentoo linux: カスタマイズ性が高いOS。 OSのインストールも自分で色々設定しながらインストール作業をすることになる。Gentooインストールバトルなるものがあるらしい。
どれを使うかは個人の好みによるので、まずは仮想マシンVMware等で試してみると良いだろう(macならvmware fusionなど)。
RHELで気をつけること
RHEL (Red Hat Enterprise Linux) は個人用途なら16台まで無料で利用できる。
私の環境では何故かboot isoではインストールできず、USBにfullサイズ入れたものでインストールできた。
更に以下のコマンドを実行すると、Desktopとパッケージ管理(dnf)が消し飛ぶので注意。
$ sudo dnf remove python3
Permissionについて
Linuxに限った話ではないが、それぞれのファイルやディレクトリには3種類の権限がある。
- read (r, 4) : ファイルの中身を見る権限
- write (w, 2) : ファイルを書き換える権限
- execute (x, 1) : ファイルを実行する権限
chmodというコマンドを使ってファイルの権限を変えられる。
このときに、上の()内の記号、数字で権限を付加・削除・設定できる。数字の場合は足し算で権限を複数与えられる (例えば、読み書き可能 : 4+2 = 6)。
更に権限を与える対象にも3種類あり、ファイルの持ち主 (オーナー)、ファイルの所属しているグループ、その他に対してそれぞれに設定できる。
$ chmod +x <ファイル名> #全ユーザーが実行可能
$ chmod -w <ファイル名> #全ユーザー書き込み権剥奪
$ chmod 761 <ファイル名> #オーナーは読み書き実行可能、グループユーザーは読み書きのみ、その他ユーザーは実行のみ
ファイル/ディレクトリ操作
Linuxで、コマンドだけで色々したい(sshで繋いだときとか)場合、これを知らないとコマンドでの操作ができない。
cd <ディレクトリのパス>: 現在自分のいる場所を指定したパスに移動(Windowsでいうところのフォルダダブルクリック)ls <ディレクトリのパス>: 指定したディレクトリの中身をリストで表示(指定しなければ現在の場所にあるものを表示)mkdir <ディレクトリのパス>: 現在の場所にディレクトリを作成(Windowsでいうところのフォルダ新規作成)rm <ファイル・ディレクトリのパス>: 指定したファイル/ディレクトリを削除cp <コピー元のファイルパス> <コピー先のパス>: ファイルのコピーmv <移動元のパス> <移動先のパス>: ファイル/ディレクトリの移動(Windowsでいうところの切り取り貼り付け)
これだけ見ると普段のGUI操作のほうが簡単に思うかもしれないが、これらのコマンドにはオプションがあったり、ワイルドカードでファイルを指定できたりするので慣れると実は便利。
ワイルドカードについて
様々なワイルドカードの指定ができる。
- * : 0文字以上なら何でもok (*.jpgでjpg拡張子のファイル全部)
- ? : 一文字分が任意でok
- [] : []内の文字ならok ([abc]: a,b,cのうちどれか, [0-9]: 0~9までの数字)
- {,} : {}内の文字列ならok
以下に例を示す。
$ 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で確認すると連番でのコピーができている。
オプション
それぞれのコマンドのオプションを説明する。
- ls
- -a : 隠しファイル/ディレクトリも表示
- -l : Permission、作成日時等、詳細情報を表示
- -t : 作成時間順に並べる
- -r : 順序を逆順にする
- mkdir
- -p : 子ディレクトリもまとめて作成
- rm
- -f : 削除するかどうかを聞かれないようにする
- -r : ディレクトリごと削除
- cp
- -r : ディレクトリごとコピー
ファイヤーウォールの設定
インストール方法
Debian, Rasbianの場合
$ sudo apt install -y ufw
RHELの場合
$ sudo dnf install -f firewalld
ファイアウォールの許可/拒否設定
Debian, Rasbianの場合
- allowで許可、denyで不許可
- default denyでまずは全てのポートを閉じてから、個々に許可するPortを設定する。
- Port番号の後ろには/tcp, /udpをつける
- サービス名には、SSH, VNC, http, https, mariadb等が使用可能
$ sudo ufw default deny
$ sudo ufw [allow or deny] [<Port番号>/[tcp or udp] or <サービス名>]
RHELの場合
- --add-portで許可ポート追加
- --remove-portで削除
- --add-serviceでサービス追加
- --remove-serviceで削除
- --permanentで恒久的許可
- --zoneでゾーン指定
$ 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ファイルの作成
- 実行したいコマンド、実行ファイルを用意
- <サービス名(任意)>.serviceというファイルを作成する
[Unit]
Description=<設定したサービス名>
[Service]
ExecStart=<実行コマンド or 実行ファイルのパス>
Restart=no #失敗した際に再起動するか
Type=simple
[Install]
WantedBy=default.target
- シンボリックリンクを/etc/systemd/systemに貼る
$ sudo ln -is <serviceファイルのパス> /etc/systemd/system
$ sudo systemctl daemon-reload
systemctlの有効化/無効化
- enableで有効化、disableで無効化
- 無効化するとシンボリックリンクが外されるので、再度有効化する場合はシンボリックリンクを再度貼り直す
$ sudo systemctl [enable or disable] <設定したサービス名>
systemctlの開始、停止、状態表示等
- startで開始、stopで停止
- statusで現在の状態、logを表示
- restartで現在起動しているサービスを再起動 (実行ファイル/コマンドを更新した場合)
$ sudo systemctl [start or stop or status or restart] <設定したサービス名>