Linux サーバー構築のコマンド一覧(LinuC レベル2 の範囲)
LinuC レベル 2 のコースで新しく覚えるコマンドの一覧です。Linux レベル1で覚えたコマンドは最初から使えます。
firewall-cmdファイアウォール(firewalld)の設定Lv1 で覚える
firewall-cmd --state / --get-active-zones / --get-default-zone firewall-cmd [--zone=ゾーン] --list-all firewall-cmd --add-service=http|--remove-service=… [--permanent] firewall-cmd --add-port=8080/tcp [--permanent] firewall-cmd --zone=trusted --add-source=10.0.0.0/24 firewall-cmd --add-rich-rule='rule family=ipv4 source address=… service name=ssh accept' firewall-cmd --reload / --runtime-to-permanent
--permanent は設定ファイルにだけ書き、--reload で反映します。--permanent なしは今だけ(--runtime-to-permanent で保存)。送信元(source)を結び付けたゾーンは、その送信元の通信に優先して使われます。
$ sudo firewall-cmd --add-service=http --permanent $ sudo firewall-cmd --reload
getenforce / setenforce / sestatusSELinux のモードLv3 で覚える
getenforce sudo setenforce 0|1 sestatus
Enforcing は拒否する、Permissive は記録だけ。setenforce は今だけで、恒久的な設定は /etc/selinux/config。
setenforceSELinux のモードを今だけ変えるLv4 で覚える
sudo setenforce 0(Permissive) sudo setenforce 1(Enforcing)
再起動すると /etc/selinux/config の値に戻ります。問題の切り分けに一時的に使い、原因を直したら 1 に戻します。
sestatusSELinux の詳しい状態Lv5 で覚える
sestatus
SELinux が有効か、今のモード(Current mode)と設定ファイルのモード(Mode from config file)、ポリシーの名前を表示します。
restorecon / chconSELinux のラベルを直すLv6 で覚える
sudo restorecon -Rv パス sudo chcon -t タイプ パス
restorecon は場所に応じた正しいラベルに戻します。mv で持ってきたファイルによく使います。
$ sudo restorecon -Rv /var/www/html
chconSELinux のラベルを直接変えるLv7 で覚える
sudo chcon -t タイプ パス sudo chcon -R -t タイプ ディレクトリ
今のラベルだけを書き換えます。restorecon や再ラベルで元に戻るので一時的。ずっと使う場所は semanage fcontext で規則を足して restorecon します。
semanageSELinux のポリシー設定Lv8 で覚える
sudo semanage port -a -t http_port_t -p tcp 番号 sudo semanage fcontext -a -t タイプ 'パス(/.*)?' semanage port -l
Web サーバーに標準以外のポートを使わせるときや、独自の場所にラベルの規則を足すときに使います。
ausearch監査ログを検索Lv9 で覚える
sudo ausearch -m AVC [-ts recent|today|時刻] [-c コマンド名]
/var/log/audit/audit.log から種類(-m)や時刻(-ts)で記録を探します。AVC は SELinux の拒否。scontext(誰が)・tcontext(何を)・tclass(種類)から原因を読み取ります。
$ sudo ausearch -m AVC -ts recent
getseboolSELinux のスイッチを見るLv10 で覚える
getsebool 名前 getsebool -a | grep httpd
on / off を表示します。変えるのは setsebool。
getsebool / setseboolSELinux のスイッチ(ブール値)Lv11 で覚える
getsebool -a sudo setsebool -P 名前 on
httpd_can_network_connect など。-P で再起動後も残します。
lsblkディスクとパーティションを木の形で見るLv12 で覚える
lsblk [-f] [-p] [デバイス] lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS
ディスク(disk)・パーティション(part)・LVM(lvm)・RAID(raid1 など)の親子と大きさ・マウント先を出します。-f でファイルシステムの種類・ラベル・UUID、-p でフルパス。
$ lsblk $ lsblk -f
blkidUUID・ラベル・種類を調べるLv13 で覚える
blkid [デバイス] blkid -s UUID -o value デバイス(値だけ) blkid -L ラベル / -U UUID(デバイスを探す)
ファイルシステムの UUID・LABEL・TYPE(xfs・ext4・swap・LVM2_member など)を出します。fstab に書く UUID はここで調べます。
$ sudo blkid /dev/sdb1 $ blkid -s UUID -o value /dev/sdb1
fdiskパーティションを作る(対話)Lv14 で覚える
sudo fdisk -l [ディスク](見るだけ) sudo fdisk ディスク(対話)
対話では 1 文字のコマンドを打ちます:g は新しい GPT、o は新しい DOS(MBR)、n は作る、d は消す、t は種類(linux・swap・lvm・raid)、p は表示、w は書いて終わる、q は書かずに終わる。w するまでディスクは変わりません。
$ sudo fdisk -l /dev/sdb $ sudo fdisk /dev/sdb
parted / partprobeパーティションを作る(1 行で)Lv15 で覚える
sudo parted -s ディスク mklabel gpt sudo parted -s ディスク mkpart 名前 [種類] 始まり 終わり sudo parted ディスク print sudo parted -s ディスク rm 番号 sudo parted -s ディスク set 番号 lvm on
-s を付けると聞き返さずに実行します。位置は 1MiB・2GiB・100% のように書きます(単位を書かないと MB)。mkpart の種類(xfs など)は目印で、ファイルシステムは作りません。fdisk と違い、打ったその場でディスクに書きます。
$ sudo parted -s /dev/sdc mklabel gpt mkpart data xfs 1MiB 100% $ sudo parted /dev/sdc print
mkfs / mkfs.xfs / mkfs.ext4ファイルシステムを作るLv16 で覚える
sudo mkfs.xfs [-f] [-L ラベル] デバイス sudo mkfs.ext4 [-L ラベル] [-m 予約%] デバイス sudo mkfs -t 種類 デバイス
デバイスに床(ファイルシステム)を張ります。前の中身は消えます。古いファイルシステムがあると mkfs.xfs は -f が要り、mkfs.ext4 は Proceed anyway? と聞きます。マウント中のものには作れません。
$ sudo mkfs.xfs -L data /dev/sdb1 $ sudo mkfs.ext4 -L backup /dev/sdb2
mountファイルシステムをつなぐLv17 で覚える
sudo mount デバイス マウントポイント sudo mount -t 種類 -o オプション デバイス マウントポイント sudo mount UUID=… / LABEL=… マウントポイント sudo mount マウントポイント(fstab から) sudo mount -a(fstab のものを全部) sudo mount -o remount,rw マウントポイント mount -t xfs(一覧)
マウントポイント(空のディレクトリ)にファイルシステムをつなぎます。つないでいる間、元のディレクトリの中身は隠れます。fstab を書き換えたら systemctl daemon-reload を。XFS のスナップショットは -o nouuid が要ります。
$ sudo mount /dev/sdb1 /data $ sudo mount -a
umountファイルシステムを外すLv18 で覚える
sudo umount マウントポイント|デバイス
使っている人(そこにいるシェル・開いているプロセス)がいると target is busy で外せません。fuser -vm で探します。
$ sudo umount /data
findmntマウントの一覧・fstab の点検Lv19 で覚える
findmnt [マウントポイント|デバイス] findmnt -t xfs findmnt -s(fstab の中身) sudo findmnt --verify(fstab の誤りを探す)
マウントを木の形で出します。--verify は fstab の書き間違い(無いデバイス・種類の違い・無いマウントポイント)を [E]・[W] で教えてくれます。再起動の前に必ず。
$ findmnt /data $ sudo findmnt --verify
fuser使っているプロセスを探すLv20 で覚える
fuser -vm マウントポイント sudo fuser -km マウントポイント(止める)
-m はそのファイルシステムを使っているもの全部、-v は詳しく。ACCESS の c はそこにいる(カレントディレクトリ)、F はファイルを開いている。
$ sudo fuser -vm /data
mkswapスワップ領域を作るLv22 で覚える
sudo mkswap [-L ラベル] デバイス|ファイル
パーティションかファイルをスワップにします。ファイルは先に dd で作り、chmod 600 にします。
$ sudo mkswap /dev/sdb2 $ sudo mkswap /swapfile
swapon / swapoffスワップを使う・やめるLv23 で覚える
swapon --show(一覧) sudo swapon デバイス|ファイル sudo swapon -a(fstab のものを全部) sudo swapoff デバイス|ファイル
fstab には「UUID=… none swap defaults 0 0」と書きます。free -h の Swap: の行でも確かめられます。
$ sudo swapon /swapfile $ swapon --show
dd / wipefs決まった大きさのファイルを作る・中身を写すLv24 で覚える
dd if=/dev/zero of=ファイル bs=1M count=回数
if(読む元)から bs の大きさで count 回読んで of(書く先)へ書きます。/dev/zero から読むと 0 で埋まったファイルになり、スワップファイル作りに使います。of にディスクを書くと中身が消えるので注意。印(ファイルシステム・PV・区切り表など)だけを消すなら wipefs -a デバイス(-a なしなら印を見るだけ)。
$ sudo dd if=/dev/zero of=/swapfile bs=1M count=512 $ sudo wipefs /dev/sdb1
fsck / e2fsckファイルシステムを調べて直す(ext 系)Lv25 で覚える
sudo fsck [-y] デバイス sudo e2fsck -n デバイス(調べるだけ) sudo e2fsck -f デバイス(きれいでも調べる)
必ずアンマウントしてから使います。-y はすべて直す、-n は何も変えない。xfs には効かない(xfs_repair を使う)。
$ sudo umount /backup && sudo fsck -y /dev/sdb1
xfs_repairXFS を調べて直すLv26 で覚える
sudo xfs_repair デバイス sudo xfs_repair -n デバイス(調べるだけ)
XFS は fsck ではなくこちらで直します。マウント中は使えません。mount が Structure needs cleaning で失敗したときに使います。
$ sudo xfs_repair /dev/sdb1
tune2fs / e2labelext 系の設定を見る・変えるLv27 で覚える
sudo tune2fs -l デバイス(一覧) sudo tune2fs -L ラベル デバイス sudo tune2fs -m 予約% デバイス sudo tune2fs -c 回数 デバイス(最大マウント回数) sudo e2label デバイス [ラベル]
予約ブロック(root のための取り置き。既定 5%)を減らすと、大きなデータ用のディスクで空きが増えます。マウント中でも変えられます。
$ sudo tune2fs -l /dev/sdb1 $ sudo tune2fs -m 1 /dev/sdb1
dumpe2fsext 系の中身を詳しく出すLv28 で覚える
sudo dumpe2fs -h デバイス(見出しだけ)
-h でスーパーブロックの情報(Inode count・Block count など)。-h なしではブロックグループごとの細かい情報も出ます。
$ sudo dumpe2fs -h /dev/sdb1 | grep -i 'inode count'
xfs_infoXFS の作りを見るLv29 で覚える
xfs_info マウントポイント|デバイス
ブロックの大きさ(bsize)・数(blocks)・ログの大きさなど、mkfs.xfs のときと同じ形で出します。
$ xfs_info /data
xfs_adminXFS のラベル・UUID を変えるLv30 で覚える
sudo xfs_admin -l デバイス(ラベルを見る) sudo xfs_admin -L ラベル デバイス sudo xfs_admin -U generate デバイス(新しい UUID)
ラベル(-L)はマウントしたままでも変えられます(中で xfs_io を使う)。UUID(-U)を変えるときはアンマウントが要ります。
$ sudo xfs_admin -L data /dev/sdc1
pvcreate / pvremovePV(LVM の材料)を作るLv32 で覚える
sudo pvcreate デバイス... sudo pvremove デバイス
ディスクやパーティションを LVM で使えるようにします。古いファイルシステムがあると Wipe it? と聞きます(-y で聞かずに消す)。
$ sudo pvcreate /dev/sdb /dev/sdc1
pvsPV の一覧Lv33 で覚える
sudo pvs
PV・入っている VG・大きさ(PSize)・空き(PFree)を 1 行ずつ出します。< は「少し小さい」の印です。
$ sudo pvs
pvdisplayPV の詳しい情報Lv34 で覚える
sudo pvdisplay [PV]
PE Size(エクステントの大きさ)・Total PE・Free PE などを出します。
$ sudo pvdisplay /dev/sdb
vgcreate / vgremoveVG を作るLv35 で覚える
sudo vgcreate [-s エクステントの大きさ] VG名 PV... sudo vgremove VG名
PV を束ねて 1 つの大きな土台(VG)にします。PV でないデバイスを書くと、pvcreate もしてくれます。エクステントの既定は 4 MiB。
$ sudo vgcreate vgdata /dev/sdb /dev/sdc
vgextend / vgreduceVG に PV を足す・外すLv36 で覚える
sudo vgextend VG名 PV... sudo vgreduce VG名 PV
空きが足りなくなったら、新しいディスクを足して VG を大きくします。使っている PV は外せません。
$ sudo vgextend vgdata /dev/sdd
vgsVG の一覧Lv37 で覚える
sudo vgs
#PV(PV の数)・#LV・#SN(スナップショット)・VSize・VFree(空き)を出します。
$ sudo vgs
vgdisplayVG の詳しい情報Lv38 で覚える
sudo vgdisplay [VG名]
PE Size・Total PE・Alloc PE / Size(使っている)・Free PE / Size(空き)を出します。
$ sudo vgdisplay vgdata
lvcreateLV を作る・スナップショットを撮るLv39 で覚える
sudo lvcreate -L 大きさ -n LV名 VG名 sudo lvcreate -l 100%FREE -n LV名 VG名 sudo lvcreate -s -L 大きさ -n 名前 VG名/LV名(スナップショット)
VG から部屋(LV)を切り出します。-L は 2G・500M のような大きさ、-l はエクステントの数か %FREE・%VG。できた LV は /dev/VG名/LV名(/dev/mapper/VG名-LV名)。
$ sudo lvcreate -L 1G -n lvweb vgdata
lvsLV の一覧Lv40 で覚える
sudo lvs
Attr の 5 文字目 a は使える、6 文字目 o はマウントなどで使用中。1 文字目 s はスナップショット、o はスナップショットの元。Origin・Data%(スナップショットの使用率)も出ます。
$ sudo lvs
lvdisplayLV の詳しい情報Lv41 で覚える
sudo lvdisplay [VG名/LV名]
LV Path・LV Size・Current LE(エクステントの数)・# open(使用中の数)を出します。
$ sudo lvdisplay vgdata/lvweb
lvextendLV を広げるLv42 で覚える
sudo lvextend -L +大きさ [-r] LV sudo lvextend -l +100%FREE [-r] LV
-r(--resizefs)を付けると、中のファイルシステム(xfs・ext4)も一緒に広げます。付け忘れたら xfs_growfs か resize2fs。VG に空きが無ければ先に vgextend。
$ sudo lvextend -r -L +1G /dev/vgdata/lvdata
xfs_growfsXFS を広げるLv43 で覚える
sudo xfs_growfs マウントポイント
LV などを広げた後、ファイルシステムをデバイスいっぱいまで広げます。マウントしたまま使います。XFS は縮められません。
$ sudo xfs_growfs /data
resize2fsext 系を広げる・縮めるLv44 で覚える
sudo resize2fs デバイス [大きさ]
大きさを書かないとデバイスいっぱいまで広げます。広げるのはマウントしたままでよく、縮めるのはアンマウントして e2fsck -f をしてから。
$ sudo resize2fs /dev/vgdata/lvbackup
lvreduceLV を縮める(ext4 だけ)Lv45 で覚える
sudo lvreduce -r -L 大きさ LV
-r でファイルシステムを先に縮めます(いったんアンマウントし、e2fsck・resize2fs をしてから戻します)。XFS は縮められません。-r なしで縮めるとデータが壊れます。
$ sudo lvreduce -r -L 1G /dev/vgdata/lvarchive
lvremoveLV を消すLv46 で覚える
sudo lvremove [-y] LV
中身ごと消えます。マウント中は消せません。消してよいか聞かれるので y と答えるか -y を付けます。
$ sudo lvremove -y /dev/vgdata/snap
lvconvert / lvchangeスナップショットを元に戻すLv47 で覚える
sudo lvconvert --merge VG名/スナップショット sudo lvchange -an / -ay LV(止める・使えるようにする)
--merge で元の LV をスナップショットを撮った時点に戻します(スナップショットは消えます)。元の LV をアンマウントしてからにすると、その場で戻ります。
$ sudo umount /data && sudo lvconvert --merge vgdata/snap
mdadmソフトウェア RAID を作る・直すLv48 で覚える
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 デバイス... sudo mdadm --detail /dev/md0 sudo mdadm --detail --scan(mdadm.conf の行) sudo mdadm /dev/md0 --fail デバイス / --remove デバイス / --add デバイス sudo mdadm --stop /dev/md0 sudo mdadm --assemble /dev/md0 デバイス... / --assemble --scan sudo mdadm --examine デバイス
RAID 0 は速いが 1 台壊れると全部失う、RAID 1 は 2 台に同じものを書く、RAID 5 は 3 台以上でパリティを持つ。状態は cat /proc/mdstat([UU] は全部元気、[U_] は 1 台欠け)。起動のときは /etc/mdadm.conf に書いた名前で組み立て、書いていなければ md127 になります。mdadm パッケージが要ります。
$ sudo mdadm --detail /dev/md0 $ cat /proc/mdstat
tracepath宛先までの通り道(root 不要)Lv52 で覚える
tracepath 宛先
traceroute と同じく、通るルーターを順に出します。reached で宛先に届いたこと、no reply はその先から返事が無いことを表します。
$ tracepath 10.0.3.20
traceroute宛先までの通り道を表示Lv52 で覚える
traceroute ホスト
パケットが通るルーターを順に表示します。* * * はその先から返事がないことを表します。traceroute パッケージに入っています。
$ traceroute 10.0.2.10
arping同じ線の相手に ARP で問いかけるLv58 で覚える
arping -c 回数 -I 装置 IP アドレス arping -D -I 装置 IP アドレス(重複の確かめ)
返事の [ ] の中が相手の MAC アドレス。-D は「この番地を使っている人がいないか」を確かめ、返事があれば重複しています。
$ arping -c 2 -I ens5 10.0.2.1 $ arping -D -I ens5 10.0.2.60
tcpdump流れているパケットを見るLv59 で覚える
sudo tcpdump -i 装置 -nn [-c 数] [条件] sudo tcpdump -i ens5 -w ファイル tcpdump -r ファイル
条件は host・port・src・dst・net・icmp・tcp・udp・arp と and・or・not。-n は IP を、-nn はポートも数字のまま出します。Flags [S] は接続の始まり(SYN)、[S.] はその返事、[R.] は断り(RST)。動き出してから流れたパケットだけが見えます。止めるまで待ち続けるので、-c で数を決めるか Ctrl+C で止めます。後ろで動かすなら & を付け、kill %1 で止めます。
$ sudo tcpdump -i ens5 -nn -c 4 icmp $ sudo tcpdump -i ens5 -nn -w /tmp/x.pcap port 80 &
nc(ncat)ポートにつないで確かめるLv60 で覚える
nc -zv ホスト ポート(開いているか) nc -l ポート(待ち受ける) echo 文字 | nc ホスト ポート(話しかける)
Connected なら開いている、Connection refused は待ち受けていない、TIMEOUT は途中で止められている(ファイアウォール)ことが多い。nc -l はつないでくる相手を待ち続け、届いた文字を出して終わります(-k なら続ける。Ctrl+C で止める)。nmap-ncat パッケージに入っています。
$ nc -zv 10.0.3.20 80 $ nc -l 9000 > /tmp/got.txt &
namedDNS サーバー(BIND)Lv62 で覚える
sudo dnf install -y bind bind-utils sudo systemctl enable --now named named -v(版)
設定は /etc/named.conf、ゾーンファイルは /var/named。起動のときに named-checkconf -z で確かめ、誤りがあると起動しません。書き換えたら rndc reload か systemctl reload named で読み込みます。外から問い合わせるには firewalld で dns を許可します。
$ sudo systemctl enable --now named $ dig @127.0.0.1 example.com
named-checkconfnamed.conf の書き方を確かめるLv66 で覚える
sudo named-checkconf sudo named-checkconf -z(ゾーンも読む)
何も出なければ OK。「missing ';' before …」はその前の行の ; 忘れ、「unknown option」は綴りの誤りです。-z を付けるとゾーンファイルも読んで loaded serial を出します。
$ sudo named-checkconf -z
named-checkzoneゾーンファイルを確かめるLv67 で覚える
named-checkzone ゾーン名 ファイル
OK と loaded serial が出れば読めます。bad dotted quad は A の番地の誤り、has no address records は NS や MX の名前の誤り(最後のドット忘れ)、CNAME and other data は CNAME と同じ名前にほかのレコードがあることを表します。
$ sudo named-checkzone guild.lan /var/named/guild.lan.zone
rndc動いている named を操るLv68 で覚える
sudo rndc status sudo rndc reload [ゾーン] sudo rndc zonestatus ゾーン sudo rndc notify ゾーン sudo rndc retransfer ゾーン(セカンダリ) sudo rndc flush sudo rndc flushname 名前
reload は設定とゾーンを読み直します(reload ゾーン名 は named.conf を読まず、そのゾーンだけ)。flush・flushname はキャッシュを捨てます。ゾーンを書き換えたら SOA のシリアルを増やしてから reload。シリアルが増えないと、セカンダリは写しを取り直しません。
$ sudo rndc reload $ sudo rndc zonestatus guild.lan
htpasswdBasic 認証のパスワードのファイルを作るLv72 で覚える
htpasswd -c ファイル 利用者(作る・上書き) htpasswd ファイル 利用者(足す・変える) htpasswd -b ファイル 利用者 パスワード htpasswd -D ファイル 利用者(消す) htpasswd -v ファイル 利用者(確かめる)
Apache の AuthUserFile に書くファイルを作ります。-c は新しく作るので、2 人目からは付けません(付けると 1 人目が消えます)。-B で bcrypt。httpd-tools パッケージに入っています。
$ sudo htpasswd -c /etc/httpd/.htpasswd alice $ sudo htpasswd /etc/httpd/.htpasswd bob
openssl暗号・鍵・証明書の道具Lv73 で覚える
openssl rand -base64|-hex バイト数 openssl enc -aes-256-cbc -pbkdf2 -salt -in 元 -out 暗号文 [-pass file:パスワードのファイル] openssl enc -d -aes-256-cbc -pbkdf2 -in 暗号文 -out 元 openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out 鍵 openssl pkey -in 鍵 -pubout -out 公開鍵 openssl req -new -key 鍵 -out CSR -subj '/CN=名前' openssl req -x509 -newkey rsa:2048 -nodes -keyout 鍵 -out 証明書 -days 日数 -subj … openssl x509 -in 証明書 -noout -subject -issuer -dates -fingerprint -checkend 秒 openssl s_client -connect ホスト:443 -servername ホスト openssl dgst -sha256 ファイル
-pass pass:… はパスワードがコマンドの履歴や ps に残るので、file: や env: を使います。-pbkdf2 を付けないと古い鍵の作り方の警告が出ます。秘密鍵は 600 で作られます。echo | openssl s_client … 2>/dev/null | openssl x509 -noout -enddate で相手の証明書の期限を調べられます。
$ openssl rand -base64 32 $ openssl x509 -in server.crt -noout -enddate $ echo | openssl s_client -connect www.example.com:443 2>/dev/null | openssl x509 -noout -subject -dates
nginx -tnginx の設定を確認Lv74 で覚える
nginx -t
設定ファイルの文法をチェックします。
testparmsmb.conf を確かめるLv75 で覚える
testparm [-s] [ファイル]
/etc/samba/smb.conf の書き方を確かめ、整えた中身を出します。知らないパラメーター(つづりの誤り)は Unknown parameter と出ます。-s は Enter を待たずに出します。
$ testparm -s
smbclientSamba の共有に入るLv76 で覚える
smbclient -L //ホスト -U 利用者%パスワード(共有の一覧) smbclient //ホスト/共有 -U 利用者%パスワード -c 'ls' smbclient //ホスト/共有 -U 利用者 -c 'put ファイル'
Windows のファイル共有(SMB)につなぐ道具です。-c に ls・put・get・mkdir を ; で並べます。-N はパスワードなし(ゲスト)。samba-client パッケージに入っています。
$ smbclient -L //localhost -U alice%Secret1 $ smbclient //localhost/guild -U alice%Secret1 -c 'ls'
smbpasswdSamba の利用者を登録するLv77 で覚える
sudo smbpasswd -a 利用者(足す) sudo smbpasswd -x 利用者(消す) sudo smbpasswd -d / -e 利用者(止める・戻す)
Samba は Linux とは別のパスワードを持ちます。同じ名前の Linux のユーザーがいないと足せません。
$ sudo smbpasswd -a alice
pdbeditSamba の利用者の一覧Lv78 で覚える
sudo pdbedit -L [-v] sudo pdbedit -x 利用者
smbpasswd で登録した利用者(passdb.tdb)を一覧します。-v で詳しく。
$ sudo pdbedit -L
exportfsNFS の公開を反映するLv79 で覚える
sudo exportfs -arv(/etc/exports を読み直す) sudo exportfs -v(今の公開と設定) sudo exportfs -u 相手:パス(外す)
/etc/exports の「パス 相手(設定)」を公開します。相手と ( の間に空白を入れると別の意味(誰にでも公開)になるので注意。設定は rw・ro・sync・root_squash(root を nobody 扱い)など。nfs-utils パッケージ。
$ sudo exportfs -arv $ sudo exportfs -v
showmountNFS サーバーの公開を見るLv80 で覚える
showmount -e [サーバー]
サーバーが公開しているディレクトリと、許している相手を出します。
$ showmount -e fileserver
dhcpdDHCP サーバーLv83 で覚える
dhcpd -t -cf /etc/dhcp/dhcpd.conf(書き方の確認) sudo systemctl start dhcpd
/etc/dhcp/dhcpd.conf の subnet { range・option routers・option domain-name-servers } で配る番地を決め、host { hardware ethernet・fixed-address } で決まった機器に決まった番地を配ります。貸した記録は /var/lib/dhcpd/dhcpd.leases。設定を変えたら restart します。
$ dhcpd -t -cf /etc/dhcp/dhcpd.conf $ cat /var/lib/dhcpd/dhcpd.leases
mail / sendmailメールを送るLv84 で覚える
echo 本文 | mail -s 件名 宛先 sendmail 宛先 < 手紙のファイル mail(自分の受信箱の一覧)
mail は s-nail パッケージ。送った手紙は Postfix のキューに入り、宛先に配られます。記録は /var/log/maillog。
$ echo 'hello' | mail -s 'test' alice $ sudo tail /var/log/maillog
postconf / postfixPostfix の設定を見る・変えるLv85 で覚える
postconf -n(書いた設定) postconf 名前(今の値) sudo postconf -e '名前 = 値'(変える) sudo postfix reload / check
設定は /etc/postfix/main.cf。myhostname・mydomain・inet_interfaces・mydestination・relayhost・home_mailbox などがあります。変えたら postfix reload(inet_interfaces は restart)。
$ postconf -n $ sudo postconf -e 'inet_interfaces = all' $ sudo postfix reload
mailqメールのキューを見るLv86 で覚える
mailq postqueue -p
届けられずに待っている手紙(deferred)と、その理由を出します。* は配っている最中、! は止めたもの。
$ mailq
postqueueキューの手紙を送り直すLv86 で覚える
postqueue -f(全部) postqueue -i ID(1 通) postqueue -p(一覧)
設定を直したあと、待っている手紙を今すぐ送り直します。
$ sudo postqueue -f
postsuperキューの手紙を消す・止めるLv87 で覚える
sudo postsuper -d ID sudo postsuper -d ALL [deferred] mailq の ID を | で渡すときは -d - sudo postsuper -h ID / -H ID(止める・戻す)
要らない手紙をキューから消します。ALL は全部なので、消してよいか mailq で確かめてから。
$ sudo postsuper -d 4F2A81C0B2 $ sudo postsuper -d ALL deferred
newaliasesメールの別名を反映するLv88 で覚える
sudo newaliases
/etc/aliases(別名: 宛先, 宛先)を書き換えたら、newaliases で /etc/aliases.db を作り直すまで効きません。
$ echo 'support: alice, bob' | sudo tee -a /etc/aliases $ sudo newaliases
doveconfDovecot の設定を見るLv89 で覚える
doveconf -n(既定と違う設定) doveconf 名前(値)
設定は /etc/dovecot/dovecot.conf と conf.d/*.conf。protocols(imap・pop3)・mail_location(maildir:~/Maildir など)・ssl。変えたら systemctl restart dovecot。
$ doveconf -n $ doveconf mail_location
faillockログインの失敗によるロックLv90 で覚える
sudo faillock --user ユーザー sudo faillock --user ユーザー --reset
pam_faillock の記録を表示・解除します。fail_interval 秒の間に deny 回失敗するとロックされ、unlock_time 秒たつか --reset で解除されます。設定は /etc/security/faillock.conf。
$ sudo faillock --user alice $ sudo faillock --user alice --reset
ldapsearchLDAP の名簿を引くLv91 で覚える
ldapsearch -x -H ldap://ホスト -b ベースDN '(uid=名前)' [属性...] ldapsearch -x -LLL …(コメントなし) ldapsearch -x -D 管理者DN -W …
-x はパスワードで入る単純な認証(付けないと Kerberos を試して失敗します)。-b はどこから下を探すか、フィルターは (属性=値)、(&(…)(…)) で「かつ」。/etc/openldap/ldap.conf の BASE と URI に書けば -H と -b を省けます。
$ ldapsearch -x -H ldap://ldap.guild.example -b dc=guild,dc=example '(uid=alice)' $ ldapsearch -x -LLL '(objectClass=posixGroup)' cn memberUid
ldapadd / ldapmodifyLDAP に項目を足す・変えるLv92 で覚える
ldapadd -x -D 管理者DN -W -f ファイル.ldif ldapmodify -x -D 管理者DN -W -f ファイル.ldif
LDIF(dn: から始まり、属性: 値 を並べたもの)で項目を足します。変更は changetype: modify と add:・replace:・delete:。管理者で入らないと Strong(er) authentication required になります。
$ ldapadd -x -D cn=admin,dc=guild,dc=example -W -f carol.ldif
authselectログインの名簿と認証の組み合わせを選ぶLv93 で覚える
authselect current sudo authselect select sssd [with-mkhomedir] --force sudo authselect enable-feature with-faillock
/etc/nsswitch.conf と /etc/pam.d/system-auth・password-auth をまとめて書き換えます。sssd を選ぶと LDAP の利用者も getent・id・ログインで使えます。with-mkhomedir は初めてのログインでホームを作ります(oddjobd が要る)。
$ authselect current $ sudo authselect select sssd with-mkhomedir --force
sss_cachesssd が覚えている利用者を消すLv94 で覚える
sudo sss_cache -E(すべて) sudo sss_cache -u 利用者
sssd は LDAP から引いた利用者・グループをしばらく(entry_cache_timeout、既定 5400 秒)覚えています。LDAP を書き換えたのに getent・id が古いままなら、sss_cache -E で覚えている値を捨てます。
$ sudo sss_cache -E $ getent passwd alice
sshd -t / -Tsshd の設定を確認Lv98 で覚える
sudo sshd -t sudo sshd -T sudo sshd -T -C user=ユーザー,addr=アドレス
-t は /etc/ssh/sshd_config と sshd_config.d/*.conf の書き方を確かめ、何も出なければ OK。-T は実際に使われる値を小文字のキーで全部表示します。同じキーは最初に書かれたものが有効なので、先頭で Include される sshd_config.d の値が優先されます。設定は systemctl reload sshd で反映されます。
$ sudo sshd -t && sudo systemctl reload sshd $ sudo sshd -T | grep -i passwordauthentication