#author("2022-02-18T19:40:48+09:00","","") #author("2022-06-15T15:50:34+09:00","","") * Linux のコマンドのメモ 2021年12月22日 [#m19cbb58] #contents --------------- ネットでいちいち調べ直すのも面倒になってきたので、 また、紙のメモでは探し出すのも難しいくらい多くなったので、 ここにメモしておきます。 主に Linux サーバ(今は CentOS Stream release 8)の管理関係 ** サーバ管理 [#hd328ba5] *** OS再起動 [#waa82478] $ sudo reboot *** Apache サービス起動/再起動/停止 [#c0617b12] $ sudo systemctl start httpd.service $ sudo systemctl restart httpd.service $ sudo systemctl stop httpd.service firewalld、postgresql.service、sshd なども同じ *** サービスの自動起動の確認 [#la9addf4] $ systemctl list-unit-files --type=service *** サービスの自動起動の登録/登録解除 [#x88a122f] $ sudo systemctl enable httpd.service $ sudo systemctl disable httpd.service *** 設定ファイルの再読み込み [#lfdef1ec] $ sudo systemctl daemon-reload *** ユーザの作成 [#g0688842] $ sudo useradd -b ユーザのホームディレクトリ -m ユーザ名 $ sudo useradd -b BASE_DIR -m -G GROUP -p PASSWORD USERNAME ← こういうものらしい オプション -m:ユーザのホームディレクトリを作成する *** ユーザの削除 [#z90e832b] $ sudo userdel -r ユーザ名 *** パスワードの設定 [#t4c9f680] $ sudo passwd ユーザ名 $ passwd ← 自分のパスワードを変更するとき ** インストール関係 [#j65e00e2] CentOS Stream release 8 では、パッケージの管理には dnf を使う *** インストールされているものの確認 [#t1a65065] $ dnf list installed *** レポジトリの確認 [#ze3a88b2] $ dnf repolist *** インストールされている perl の module の確認 18 February 2022 [#ee4eb2e2] $ perl -MExtUtils::Installed -e 'print "$_\n" for ExtUtils::Installed->new->modules' *** レポジトリのインストール [#gba44b3f] $ sudo dnf install epel-release *** パッケージのインストール [#i174acb5] $ sudo dnf install httpd *** パッケージの削除 [#o0a045cf] $ sudo dnf remove httpd *** パッケージのアップデートの有無の確認 15 June 2022 [#d9018d7b] $ dnf check-update *** 特定のパッケージのアップデート 15 June 2022 [#fa59b3ee] $ sudo dnf upgrade httpd* (Apache の場合) *** 全てのパッケージのアップデート 15 June 2022 [#ba01033a] $ sudo dnf upgrade *** perl のモジュールのインストール [#mb53b089] $ sudo dnf install perl-App-cpanminus $ sudo cpanm --sudo -v モジュール名 cpan minus をインストールして、perl のモジュールは cpan minus で管理する *** cron の設定 [#a0145d94] $ crontab -e 34 12 * * 5 /home/hogeuser/hogehoge.sh # 分 時 日 月 曜日 コマンド 金曜(5 が金曜) 12:34 に動く~ 5 の代わりに * にしておくと毎日(0-7 で 0 と 7 が日曜)~ 時刻と曜日の間は、日月~ ** sshd の設定 [#kf1f4b98] ***ログイン制限を設定する [#oe4be979] /etc/ssh/sshd-config を編集 AllowUsers hogeuser@"***.***.***.***, ***.***.***.***, ***.***.***.***, ***.***.***.***" AllowUsers hoheuser@"***.***.***.***, ***.***.***.***, ***.***.***.***, ***.***.***.***" AllowUsers gogeuser@"***.***.***.***, ***.***.***.***, ***.***.***.***, ***.***.***.***" ** SSL(Secure Socket Layer) [#z59908bd] 今は、TLS(Transport Layer Security)だけれど、SSL の名前は引きずっている。 *** mod_ssl のインストール [#yaed8399] 素の Apache にはインストールされていない $ sudo dnf install mod_ssl 適切なディレクトリや設定ファイルもできる~ ssl.conf のコンテキストを設定する:httpd_config_t になっていないと Apache が起動しない *** SSL通信のチェック [#y5fe3a49] $ openssl s_client -connect hogehoge.hohehohe.ac.jp:443 *** サーバ証明書の内容確認 [#wdc3a29c] $ openssl x509 -text -noout -in 証明書 $ openssl rsa -text -noout -in 秘密鍵 $ openssl s_client -connect hogehoge.hohehohe.ac.jp:443 -showcerts *** オレオレ証明書作成 [#a2fb9d23] テストサーバでサーバ証明書が必要なとき $ openssl genrsa 2048 > server.key $ openssl req -new -key server.key > server.csr ← ここで common name(URL)を入力する $ openssl x509 -days 3650 -req -signkey server.key < server.csr > server.crt /etc/httpd/conf.d/ssl.conf SSLCertificateChaneFile server.crt SSLCertificateChaneKeyFile server.key とする ** SELinux (Security-Enhanced Linux) [#mbef0729] *** SELinux の実行か否かの確認 [#odf733ff] $ getenforce Enforcing ← SELinux 有効=実行中 Disable ← SELinux 無効 Permissive ← SELinux 無効、ログ残る $ sestatus SELinux status: enabled (以下略:getenforce より詳しいものが表示される) *** OS起動時に SELinux を有効にする [#q81a170e] /etc/selinux/config SELINUX=enforcing にする OSの再起動をする前に(permissive mode でいろいろやってOKだったら) $ sudo fixfiles -F onboot permissive mode では、オプション -F がいると redhat.com にあった *** コンテキスト確認 [#ib271d0a] $ ls -lZ オプション Z でコンテキストが見える *** コンテキスト変更 [#lb63ad63] $ sudo chcon -R -u system_u -t :httpd_sys_content_t ディレクトリ名 ディレクトリ名の最後には「/」を付けない オプション -R:ディレクトリ以下全て ↓ でもいいらしい $ sudo chcon -R system_u:object_r:httpd_sys_content_t ディレクトリ名 *** SELinux の bool値の確認 [#oed3467c] $ getsebool -a *** SELinux の bool値の変更 [#q58fe0d0] $ sudo setsebool -P httpd_enable_homedirs ON ← public_html を公開する ** firewalld [#x0d09a11] *** firewalld の確認 [#idb7beb4] $ sudo firewall-cmd --list-all $ sudo firewall-cmd --list-all --permanent ← permanentであるもののみ表示 $ sudo firewall-cmd --state running *** firewalld への登録 [#bf4ced61] $ sudo firewoll-cmd --add-service https ← 今通す $ sudo firewoll-cmd --permanet --add-service https ← 登録 ** postfix [#t3089161] 今は、プログラムとしては sendmail ではなく、postfix を使う *** インストール [#c3e234bb] $ sudo dnf install postfix /etc/postfix/main.cf を編集 *** IPv6関連のエラーが出た場合 [#j031c4ca] たぶん、IPv6でサーバが動いていないので、~ /etc/hosts を編集し、IPv6関連をコメントアウトする #::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 「::1」は IPv6 なのだそう ** 調べもの [#s60ea0cc] *** OSのバージョン確認 [#o196f288] $ cat /etc/centos-release $ cat /etc/redhat-release # /etc/centos-release のシンボリックリンク $ cat /etc/system-release # /etc/centos-release のシンボリックリンク $ cat /etc/os-release # 上のより詳しいものも表示される *** いろいろなもののバージョン確認:オプション -v を試すとよい [#z21e29d5] $ httpd -v *** IPアドレスの確認 [#a21f62e3] $ curl inet-ip.info ↑ は、Windows10 でも、Windows11 でも使える $ ip a *** ディレクトリの使用容量 [#s7f33c61] $ du -sh [hoge_dir] # directory usage いちいち読んでいるようなので、ディレクトリの数が多いと時間がかかる~ オプション -sh を付けないと、各ディレクトリの容量のリストも表示される *** ユーザの確認 [#y13e74e3] $ less /etc/passwd 今は passwd ファイルにはパスワードは格納されていない~ home directory もわかる *** グループの確認 [#v4f31bd2] $ less /etc/group あまり使い途はないかも? *** VirtualHost の確認 21 January 2022 [#f134de7c] $ sudo httpd -t -D DUMP_VHOSTS [[ApacheでVirtualHostの一覧確認>https://www.suzu6.net/posts/192-apache-dump-vhosts/]] に従う ** ディレクトリ、ファイル操作 [#g5dc5206] *** サーバ間のセキュアコピー [#v96cae6b] $ scp -r user@***.***.***.***:/home/user/元ディレクトリ 先ディレクトリ $ scp -r 元ディレクトリ user@***.***.***.***:/home/user/先ディレクトリ オプション -r: recursive *** ディレクトリツリーリスト表示 [#ua99bfc6] $ find . -type d | sed -e "s/[^-][^\/]*\// |/g" -e "s/|\([^ ]\)/|-\1/" 参照(というよりはそのままです):[[treeを使わずにfindでディレクトリツリーリスト表示>https://scribble.washo3.com/linux/tree%E3%82%92%E4%BD%BF%E3%82%8F%E3%81%9A%E3%81%ABfind%E3%81%A7%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%83%84%E3%83%AA%E3%83%BC%E3%83%AA%E3%82%B9%E3%83%88%E8%A1%A8%E7%A4%BA.html]] *** シンボリックリンク作成 [#t4f15b04] $ sudo ln -s 元ディレクトリ(またはファイル) シンボリックリンク *** そのままコピー [#z659d325] $ cp -a 元ディレクトリ(またはファイル)先ディレクトリ(またはファイル) オプション -a は archive = -dR -- preserve=all と同じ ** TeX Live [#z19ea97f] レポジトリからのインストールが上手くいかなかったので…… *** CTAN からのインストール [#ya51ed64] $ wget http://ftp.jaist.ca.jp/pub/CTAN/systems/texlive/tlnet/install-tl-unx.tar.gz $ tar xvzf install-tl-unx.tar.gz $ cd install-tl-日付 $ sudo ./install-tl (いろいろ表示されて) <I> start installation to hard disk …… Enter command: I ← 「I」と入力し、エンターキーを押す 1時間以上インストールしていた ** PATH などの設定 [#r28e1a17] $ echo $PATH texlive に path が通っていないものが表示される $ sudo vi /etc/profile.d/texlive.sh ← 新規作成 /etc/profile.d/texlive.sh PATH=/usr/local/texlive/2021/bin/x86_64-linux/:$PATH; export PATH MANPATH=/usr/local/texlive/2021/texmf-dist/doc/man:$MANPATH; export MANPATH INFOPATH=/usr/local/texlive/2021/texmf-dist/doc/info:$INFOPATH; export INFOPATH とする 新たにログインすると使えるようになっている~ path も通っている ** mariaDB [#n44154a7] *** バックアップ用のダンプ [#tf173201] $ mysql --defaults-extra-file=/home/hogehoge/mysqldump.cnf --add-drop-table --databases hogehogedb cron などでも使える mysqldump.cnf にデータベースのアクセス情報を入れておく~ オプション --add-drop-table を付けておくと、ダンプした sql を実行したとき、新しい(または戻す)データベースの中に既に何かあったら削ってくれる mysqldump.cnf の中身 [client] user=mysqlusernamehoge password='hogepasswd' ← クォーテーションで囲むと、ややこしい文字もおっけいになる host=localhost *** phpMyAdmin のインストール [#j40a10e7] $ sudo dnf install https://rpm.remirepo.net/enterprize/remi-release8.rpm ← 事前に EPEL のインストールが必要 $ sudo dnf install phpmyadmin --enablerepo=remi ローカルマシン以外から phpMyAdmin が使えるように~ /etc/phpMyAdmin/config.inc.php を変更 $cfg['Servers'][$i]['host'] = '127.0.0.1'; ← 'localhost' から変更 IPアドレスによる制限も~ /etc/httpd/conf.d/phpMyAdmin.conf #Require local Require ip ***.***.***.*** *** ユーザ作成・データベース作成・ルート権限付与 [#y16c9683] $ mysql -u root -p > create user 'hogeuser' identified by 'hogepassword'; > create database hogedb; > grant all privileges on hogedb.* to hogeuser identified by 'hogepassword'; > \q |Today:&counter(today); |Yesterday:&counter(yesterday); |Total:&counter(); since 22 December 2021|