#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|

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS