20210729のLinuxに関する記事は7件です。

Google Colablatoryでフォルダ移動が突然できなくなってしまった話

はじめに 書籍などを勉強するときはなるべく写経をするようにしており、環境を用意するのが面倒なのでGoogle Colabratoryを普段から利用しています。 ライブラリなどが簡単にインストールできる&入っているのでストレスなく書籍が勉強できます。 いつも通りに書籍の勉強をしようとしていて、カレントディレクトリをdrive/MyDrive/Colab Notebooks/にしようとした際に問題は起きました。 問題 いつも通りにカレントディレクトリをdrive/MyDrive/Colab\ Notebooksに移動しようとしました。 !cd ./drive/MyDrive/Colab\ Notebooks しかし、パスがあっているのにもかかわらずディレクトリが移動しませんでした。 !ls # 結果 /drive sample 解決方法 無意識に使っていた!cdがColabでは利用できませんでした。!lsは利用できます。 いつもJupyterでは利用していたため無意識で使っていましたが、考えてみるといままではcdで移動していたことに気づきます。 ここで、cdコマンドについてまとめておきます。 コマンド 利用可否 cd 〇 %cd 〇 !cd × おわりに このレベルの記事を出すかは迷いましたが、気づくのに5分以上かかってしまったのでまとめることにしました。 ここでは、%と!についての違いは載せていませんが、調べるとでてきますので気になった方は調べてみるとよいでしょう
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

windows 11 ubuntu との dualboot , そして UEFIなしなのにcloverでwin10起動

ubuntu との dualboot は 最後から2番目に かいてます そして更に {番外編 clover} をその後に書いてます、 BIOSで secure boot してないのに win11立ち上がります、 cloverの鬼力でしょうか にて 選べます F9キーを 押さなければ自動的にwin11が立ち上がってきます、次の動画をご覧ください 瞑想を誤解してました、 瞑想とは全集中で 頭を無にすることではないようです、 イチローもプログラマーも野球とコードに集中してます。 下から学びました。 水の呼吸、全集中( https://www.youtube.com/watch?v=86a6kVd3-1M&t=71s ) www.youtube.com/watch?v=6IS5c4HE6kw&list=PLmwYOQLkF8YhF7Q3jKLadl3iaGImG8wxH&index=11 まずこのノートにwin11です win11インスト前に予めBIOSで UEFI と セキュアブート  を設定 TPMを設定 は確認してあります おー、噂通りのwindows 11の起動画面が来ましたね こんなふうに insider program を準備し いつもの windows update を以下のようにするだけです 確かに と windows 11になってます でも結構時間がかかりました, 2〜3時間 https://pc.watch.impress.co.jp/docs/column/ubiq/1334310-2.html では Ryzen 3 の 2200U はないですが、ユーザーのクレームにより 適応範囲が拡大されたのでしょうね、きっと つかみどころがなくて正体のはっきりしないヌエ的なubuntu(このせいでかlinuxの産みの親Linus Torvaldsさんは嫌ってます)では linux secure ブートを乗り越えれますが arch系だと おっソロシクこんなんです。 毛布持って指くわえるライナス ubuntu との dual boot win11は nvmeにはいってます それで ubuntuを SSDに入れます ubuntuインストール時に 汚い画像ですが というふうに secure boot のところが下の方にでてきます パスワードを8文字でいれました そしてインストを完了させます F9キーを押すことで というふうに win11 か ubuntu を選べます ubuntu を選んだら無事ubuntu起動しました {番外編 clover} というデスクトップでやりました A) まずBIOSの ところで secure boot を切ってます! 驚きと思います! B) F)キーを押して 16GBのSSD (ここに cloverが入ってます)を選んで起動 このPCは PCI-expressスロットに 2枚の nvmeをいれてます 1枚はWINDOWS もう一枚にはmanjaro をいれてます この2つは cloverの支配下です STナンタラは 3.5インチの機械式のハードディスクで ここには OpenBSD が入ってます 複雑です C) いつもの GRUB がきます D) これにて ですね https://www.youtube.com/watch?v=sNXJu78wjfM な感じです clover についての概要は このパソコンは PCI Express スロットにつけた変換アダプターで nvmeを利用しています しかし残念ながらこのパソコンはこの nvme から OSの起動は起動はできません このために クローバーをつかって起動していました ーーー なお  clover について詳しいのは以下 https://qiita.com/tyokai/items/c2e7a0897d5c6c78c7e6 なおこのデスクトップマシンでのnvmeの速度は 一流メーカー品ではないので以下でした
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

windows 11 ubuntu との dualboot を ryzen3 で

ubuntu との dualboot は一番最後にかいてます にて 選べます F9キーを 押さなければ自動的にwin11が立ち上がってきます、次の動画をご覧ください 瞑想を誤解してました、 瞑想とは全集中で 頭を無にすることではないようです、 イチローもプログラマーも野球とコードに集中してます。 下から学びました。 水の呼吸、全集中( https://www.youtube.com/watch?v=86a6kVd3-1M&t=71s ) www.youtube.com/watch?v=6IS5c4HE6kw&list=PLmwYOQLkF8YhF7Q3jKLadl3iaGImG8wxH&index=11 win11インスト前に予めBIOSで UEFI と セキュアブート  を設定 TPMを設定 は確認してあります おー、噂通りのwindows 11の起動画面が来ましたね こんなふうに insider program を準備し いつもの windows update を以下のようにするだけです 確かに と windows 11になってます でも結構時間がかかりました, 2〜3時間 https://pc.watch.impress.co.jp/docs/column/ubiq/1334310-2.html では Ryzen 3 の 2200U はないですが、ユーザーのクレームにより 適応範囲が拡大されたのでしょうね、きっと つかみどころがなくて正体のはっきりしないヌエ的なubuntu(このせいでかlinuxの産みの親Linus Torvaldsさんは嫌ってます)では linux secure ブートを乗り越えれますが arch系だと おっソロシクこんなんです。 毛布持って指くわえるライナス ubuntu との dual boot win11は nvmeにはいってます それで ubuntuを SSDに入れます ubuntuインストール時に 汚い画像ですが というふうに secure boot のところが下の方にでてきます パスワードを8文字でいれました そしてインストを完了させます F9キーを押すことで というふうに win11 か ubuntu を選べます ubuntu を選んだら無事ubuntu起動しました
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

windows 11 ubuntu との dualboot そして めまいを起こしそうなclover

ubuntu との dualboot は最後から2番目ににかいてます そして更に {番外編 clover} をその後に書いてます、 BIOSで secure boot してないのに win11立ち上がります、 cloverの鬼の力でしょうか にて 選べます F9キーを 押さなければ自動的にwin11が立ち上がってきます、次の動画をご覧ください 瞑想を誤解してました、 瞑想とは全集中で 頭を無にすることではないようです、 イチローもプログラマーも野球とコードに集中してます。 下から学びました。 水の呼吸、全集中( https://www.youtube.com/watch?v=86a6kVd3-1M&t=71s ) www.youtube.com/watch?v=6IS5c4HE6kw&list=PLmwYOQLkF8YhF7Q3jKLadl3iaGImG8wxH&index=11 win11インスト前に予めBIOSで UEFI と セキュアブート  を設定 TPMを設定 は確認してあります おー、噂通りのwindows 11の起動画面が来ましたね こんなふうに insider program を準備し いつもの windows update を以下のようにするだけです 確かに と windows 11になってます でも結構時間がかかりました, 2〜3時間 https://pc.watch.impress.co.jp/docs/column/ubiq/1334310-2.html では Ryzen 3 の 2200U はないですが、ユーザーのクレームにより 適応範囲が拡大されたのでしょうね、きっと つかみどころがなくて正体のはっきりしないヌエ的なubuntu(このせいでかlinuxの産みの親Linus Torvaldsさんは嫌ってます)では linux secure ブートを乗り越えれますが arch系だと おっソロシクこんなんです。 毛布持って指くわえるライナス ubuntu との dual boot win11は nvmeにはいってます それで ubuntuを SSDに入れます ubuntuインストール時に 汚い画像ですが というふうに secure boot のところが下の方にでてきます パスワードを8文字でいれました そしてインストを完了させます F9キーを押すことで というふうに win11 か ubuntu を選べます ubuntu を選んだら無事ubuntu起動しました {番外編 clover} A) まずBIOSの ところで secure boot を切ってます! 驚きと思います! B) F)キーを押して 16GBのSSD (ここに cloverが入ってます)を選んで起動しまう C) いつもの GRUB がきます D) これにて ですね なお clover について説明します このパソコンは PCI Express スロットにつけた変換アダプターで nvmeを利用しています しかし残念ながらこのパソコンはこの nvme から OSの起動は起動はできません このために クローバーをつかって起動していました
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

windows 11 ubuntu との dualboot , そして めまいを起こしそうなclover

ubuntu との dualboot は 最後から2番目に かいてます そして更に {番外編 clover} をその後に書いてます、 BIOSで secure boot してないのに win11立ち上がります、 cloverの鬼力でしょうか にて 選べます F9キーを 押さなければ自動的にwin11が立ち上がってきます、次の動画をご覧ください 瞑想を誤解してました、 瞑想とは全集中で 頭を無にすることではないようです、 イチローもプログラマーも野球とコードに集中してます。 下から学びました。 水の呼吸、全集中( https://www.youtube.com/watch?v=86a6kVd3-1M&t=71s ) www.youtube.com/watch?v=6IS5c4HE6kw&list=PLmwYOQLkF8YhF7Q3jKLadl3iaGImG8wxH&index=11 まずこのノートにwin11です win11インスト前に予めBIOSで UEFI と セキュアブート  を設定 TPMを設定 は確認してあります おー、噂通りのwindows 11の起動画面が来ましたね こんなふうに insider program を準備し いつもの windows update を以下のようにするだけです 確かに と windows 11になってます でも結構時間がかかりました, 2〜3時間 https://pc.watch.impress.co.jp/docs/column/ubiq/1334310-2.html では Ryzen 3 の 2200U はないですが、ユーザーのクレームにより 適応範囲が拡大されたのでしょうね、きっと つかみどころがなくて正体のはっきりしないヌエ的なubuntu(このせいでかlinuxの産みの親Linus Torvaldsさんは嫌ってます)では linux secure ブートを乗り越えれますが arch系だと おっソロシクこんなんです。 毛布持って指くわえるライナス ubuntu との dual boot win11は nvmeにはいってます それで ubuntuを SSDに入れます ubuntuインストール時に 汚い画像ですが というふうに secure boot のところが下の方にでてきます パスワードを8文字でいれました そしてインストを完了させます F9キーを押すことで というふうに win11 か ubuntu を選べます ubuntu を選んだら無事ubuntu起動しました {番外編 clover} というデスクトップでやりました A) まずBIOSの ところで secure boot を切ってます! 驚きと思います! B) F)キーを押して 16GBのSSD (ここに cloverが入ってます)を選んで起動 このPCは PCI-expressスロットに 2枚の nvmeをいれてます 1枚はWINDOWS もう一枚にはmanjaro をいれてます この2つは cloverの支配下です STナンタラは 3.5インチの機械式のハードディスクで ここには OpenBSD が入ってます 複雑です C) いつもの GRUB がきます D) これにて ですね https://www.youtube.com/watch?v=sNXJu78wjfM な感じです clover についての概要は このパソコンは PCI Express スロットにつけた変換アダプターで nvmeを利用しています しかし残念ながらこのパソコンはこの nvme から OSの起動は起動はできません このために クローバーをつかって起動していました ーーー なお  clover について詳しいのは以下 https://qiita.com/tyokai/items/c2e7a0897d5c6c78c7e6 なおこのデスクトップマシンでのnvmeの速度は 一流メーカー品ではないので以下でした
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Debianセットアップ 覚書(2/2 セッティング編 ボーナス部分除く)

某所の課題についての覚書です。※2021/7/29現在、レビュー前 ご指摘がありましたら、コメント、編集リクエストを頂けますとありがたいです。 目標 Virtual Boxを使用して、Debianを指定された条件でセットアップする。 環境 Windows 10 Home / Core i7-3770 / 16.0GB / バージョン 2004 / OSビルド 19041.985 VirtualBox バージョン 6.1.22 r144080 (Qt5.6.2) 某所指定Extension Packインストール済み セッティング VirtualBoxのネットワーク設定 早速設定を進めたいところだが、デフォルトのVirtualBoxのネットワーク設定ではNATアダプター(VM内から外部への接続)しか設定されていないため、まずはネットワークの設定を追加する必要がある。 様々な方法があるが、今回はVirtualBox上のゲストOSにSSHで接続する - クロの思考ノートを参考にさせて頂き、NATアダプターのポートフォワーディングを利用する。 (その他の方法について、ネットワークにホストオンリーアダプターを追加/設定する方法が主であった。) 作成した仮想マシンの設定タブを開き、左の選択肢よりネットワークを選択する。 アダプター1が表示されているので、非表示にされている選択肢を[高度]を押下して表示させる。 ポートフォワーディングを選択し、適切な名前、ホストポート(1024~65535で、netstat等で確認した未使用の所)とゲストポート4242(後述)を指定し、OKを押下する。 後ほどLANG設定後、再起動を行う。なお、当ネットワークを端末設定時に設定する、文字設定の変更後に設定再読込をするなどで、再起動をしなくて済むので、好きな方法で進めましょう。 日本語(UTF)の文字化け OSインストール編で日本語を選択した場合、LANGがja_JP.UTF-8となっており、デフォルトのコンソールでは文字化けする。 言語設定はlocale/localectl等で確認できる。 今回は、FbTermと自環境との相性が悪くフリーズが頻発するため、LANGをCに変更して設定を進める。 ネットワークの設定の反映も兼ねて、念の為、再起動しておく。 localectl set-locale LANG=C reboot SSHサーバ設定 こちら(Debian 10 (buster) - SSH サーバ構築!)と公式マニュアルを参考にしました。 (SSHのイメージキャラクタ、初めて見ました…なんというか、こう、尖ってますね…) サーバ設定ファイル(/etc/ssh/sshd_config)を編集する。 必要に応じて、sshサービスの再起動を行う。 /etc/ssh/sshd_config #Port 22 Port 4242 <- Port 4242を使用 #PermissionRootLogin prohibit-password PermissionRootLogin no <- rootのログインを禁止 2. ホストOSから、通常ユーザでログインできて、rootではログインできないことを確認する。 ssh (ユーザ名)@localhost -p 2222 UFW設定 ファイアウォールの設定だが、UFWを使用して、4242(SSH)と80(lighttpd用)のみを開ける。 今回の初期設定ではUFWをインストールできていない(dpkg -lで確認)ので、apt-getでインストールする。 ufwコマンドを使用してSSHのみアクセスできるファイアウォールの設定を行う - Armadilloブログを参考にさせていただきました。 apt-get update <- aptが持つパッケージ情報を更新 apt-get install ufw <- ufwをアップデート 2. ポート4242と80のみ開く設定を行う。 ufw default deny ufw allow 4242 ufw allow 80 ufw enable パスワードポリシー(PAM) DebianではPAMが利用可能であるが、標準ではcracklibがインストールされていないため、cracklibに後方互換を持つlibpam-pwqualityをインストールして使用する。 また、日数に関する設定や再設定を行う命令については、chageを使用する。 網羅的な情報を探し出せず苦労したが、最終的にlibpam-pwqualityのMANのほか、Server World Debian 10 Busterを参考にさせて頂いた。 前述の通り、libpam-pwqualityをインストールする。 apt-get install libpam-pwquality PAMのパスワード関連設定ファイルである/etc/pam.d/common-passwordからの紐付けは自動的に行われるようだが、rootへの設定適用を追加しておく(enforce_for_root部分)。 なお、根拠となるマニュアル等は見つけられなかったが、後述の以前のパスワードとの相似性の要件(difok)のrootへの非適用に対しては、特段の設定なく、enforce_for_rootがあってもdifokのみrootへは適用されないことを確認している。 /etc/pam.d/common-password password required pam_pwquality.so retry=3 enforce_for_root 2. libpam-pwqualityの設定ファイル /etc/security/pwquality.confの内容を指定された要件に変更する。 /etc/security/pwquality.conf difok = 7 <- 7文字以上、以前のパスワードを含まない minlen = 10 <- 最短10文字 dcredit = -1 <- 数字の必ず含む ucredit = -1 <- 大文字を必ず含む maxrepeat = 3 <- 3文字より多く、同じ文字を連続させない usercheck = 1 <- ユーザ名を含まない 3. /etc/login.defs/chageによる日付関連の変更 既出のページのほか、【 chage 】コマンド――パスワードの有効期限を設定する/確認するを参考にさせて頂いた。 当該ファイルを以下のとおりに変更するほか、既存のユーザに対する当該設定の変更については、bashよりchageコマンドで変更する。 /etc/login.defs PASS_MAX_DAYS 30 PASS_MIN_DAYS 2 PASS_WARN_AGE 7 chage -M 30 ユーザ名 <- 有効期限30日 chage -m 2 ユーザ名 <- 変更可能間隔最短2日 chage -W 7 ユーザ名 <- 期限切れ7日前より警告 chage -d 0 ユーザ名 <- 最終更新日を大昔とすることで期限切れ状態とし、次回のログイン時にパスワード更新を要求する ユーザグループの設定 user42グループを作成し、一般ユーザ及びレビュー中に新規に作成するユーザを所属させる。 ここではgroupaddとを使用した。 groupaddでuser42グループを作成する。 groupadd user42 gpasswdで作成してある一般ユーザをuser42グループに加入させる。 usermodを使うこともできるが、所属するサブグループ全体を指定しなければならないため、追加したつもりが別のグループから除籍してしまうなど意図しない挙動を引き起こしそうで避けておきたい。 gpasswd -a user user42 sudo設定 sudoers を利用して、sudoグループ(Debianデフォルトのsudo用グループ)に対して、以下の設定を行います。 sudoをインストールします。 apt-get install sudo 各種設定を行います。 なお、sudoersを編集する際には、visudoを使用することが推薦されている。 また、テストを行う際には、初期の一般ユーザはsudoグループに入っていないので、追加してからテストをしよう。 /etc/sudoers # (コメント行は不要) # パスワードの試行可能回数は3回とすること(なお、デフォルトで3回となっている) Defaults passwd_tries=3 # パスワードが誤った場合、カスタムメッセージを表示すること Defaults badpass_message="任意のカスタムメッセージ" OK # sudo コマンドの入力と出力双方を、/var/log/sudo/ ディレクトリに出力すること Defaults log_input Defaults log_output Defaults iolog_dir="/var/log/sudo/" # TTYモードが有効になっていること Defaults requiretty # sudo コマンドによりアクセスできるPATHを制限すること secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin" tty modeの設定について、先人がStackOverflowに質問をあげて、回答を得られている。 自分の理解としては、実際にターミナルを開かないと許さない、コマンドのみの実行など、外部からの攻撃を一定程度防げるという理解。 monitoring.sh モニタリング用のシェルを作成し、cronを用いて10分毎に全ユーザのターミナルに表示させる。 10分毎の実行はデフォルトのフォルダがないので、crontab(設定ファイル)を用いて設定する。 crontab -e rootのcrontabファイル SHELL=/bin/bash */10 * * * * $HOME/monitoring.sh シェル本体は、上記の設定ファイルのとおり、rootのホームディレクトリに作成する。 全ユーザへ表示させるために、wallを使用する。 OS関連はuname、CPU関連はlscpu、RAM関連はdf、メモリ関連はfree、使用率はtop、最終起動時間はuptime(uptime -s)、LVMはvgs、接続数はss、ログイン数はwho、IPv4/MACアドレスはip(ip-link,ip-address)、sudoの回数はsudoのログにあるseqファイルを読むことで取得する。 また、エラーが発生した場合には、wallが実行される前に止まるよう、スクリプトを記載する。 バナー=発信者情報の記載は自由のため、wallの-nオプションを使用して消しても問題ない。 monitoring.sh #!/bin/bash STR='#Architecture : '`uname -a`'\n' STR+='#CPU physical : '`lscpu | grep 'Socket(s):' | cut -f 2 --delim=':' | tr -d ' '`'\n' STR+='#vCPU : '`lscpu | grep "^CPU(s):" | cut -f 2 --delim=':' | tr -d ' '`'\n' STR+='#Memory Usage : '`free -m | grep 'Mem:' | awk '{printf "%d/%dMB(%4.2f%%)", $3, $2, $3/$2*100}'`'\n' STR+='#Disk Usage : '`df -m --total | grep total | awk '{printf "%d/%dMB(%s)", $3, $2, $5}'`'\n' STR+='#CPU load : '`top -b -n 1 | grep '%Cpu(s)' | awk -F ',' '{printf "%s", $4}' | awk '{printf "%4.1f%%", 100-$1}'`'\n' STR+='#Last boot : '`uptime -s`'\n' STR+='#LVM use : ' # cron内では環境変数が一部引き継がれないので、フルパスで記載 LVM=`/usr/sbin/vgs | wc -l | awk '{print $1 - 1}'` if [ $LVM -ge 1 ] then STR+='yes' else STR+='no' fi STR+='\n' STR+='#Connetions TCP : '`ss -t state established | wc -l | awk '{print $1 - 1}'`'\n' STR+='#User log : '`who | wc -l`'\n' STR+='#Network : IP '`ip a | grep inet | grep global | awk '{print $2}' | awk -F '/' '{print $1}'`' ('`ip link show | grep ether | head -n 1 | awk '{print $2}'`')\n' NUM=`cat /var/log/sudo/seq` STR+='#Sudo : '`echo $((36#$NUM))`' cmd\n' echo -e $STR | wall 作成後、当該シェルスクリプトに実行権を設定する。 chmod 755 monitoring.sh シェルファイルを修正せずに、メッセージを止める。 crontabより、上記設定を削除すれば止まる。 ボーナス編(lighttpdとMariaDB、PHPを使用してWordPressでWebサイトをサーブする) すみません、余力があれば追記します。 確認できたDebian Wordpress Wikiのみ、リンクを記載しました。 ほか、Twitterにて非常に有意義な助言を頂いておりますので、興味のある方はTwitterにてご覧ください。 他、任意な機能(NGINX / Apache2 は禁止)をセットアップする 利便性のために、tmuxを導入した。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Debianセットアップ 覚書(2/2 セッティング編)

某所の課題についての覚書です。※2021/7/29現在、レビュー前 ご指摘がありましたら、コメント、編集リクエストを頂けますとありがたいです。 目標 Virtual Boxを使用して、Debianを指定された条件でセットアップする。 環境 Windows 10 Home / Core i7-3770 / 16.0GB / バージョン 2004 / OSビルド 19041.985 VirtualBox バージョン 6.1.22 r144080 (Qt5.6.2) 某所指定Extension Packインストール済み セッティング VirtualBoxのネットワーク設定 早速設定を進めたいところだが、デフォルトのVirtualBoxのネットワーク設定ではNATアダプター(VM内から外部への接続)しか設定されていないため、まずはネットワークの設定を追加する必要がある。 様々な方法があるが、今回はVirtualBox上のゲストOSにSSHで接続する - クロの思考ノートを参考にさせて頂き、NATアダプターのポートフォワーディングを利用する。 (その他の方法について、ネットワークにホストオンリーアダプターを追加/設定する方法が主であった。) 作成した仮想マシンの設定タブを開き、左の選択肢よりネットワークを選択する。 アダプター1が表示されているので、非表示にされている選択肢を[高度]を押下して表示させる。 ポートフォワーディングを選択し、適切な名前、ホストポート(1024~65535で、netstat等で確認した未使用の所)とゲストポート4242(後述)を指定し、OKを押下する。 後ほどLANG設定後、再起動を行う。なお、当ネットワークを端末設定時に設定する、文字設定の変更後に設定再読込をするなどで、再起動をしなくて済むので、好きな方法で進めましょう。 日本語(UTF)の文字化け OSインストール編で日本語を選択した場合、LANGがja_JP.UTF-8となっており、デフォルトのコンソールでは文字化けする。 言語設定はlocale/localectl等で確認できる。 今回は、FbTermと自環境との相性が悪くフリーズが頻発するため、LANGをCに変更して設定を進める。 ネットワークの設定の反映も兼ねて、念の為、再起動しておく。 localectl set-locale LANG=C reboot SSHサーバ設定 こちら(Debian 10 (buster) - SSH サーバ構築!)と公式マニュアルを参考にしました。 (SSHのイメージキャラクタ、初めて見ました…なんというか、こう、尖ってますね…) サーバ設定ファイル(/etc/ssh/sshd_config)を編集する。 必要に応じて、sshサービスの再起動を行う。 /etc/ssh/sshd_config #Port 22 Port 4242 <- Port 4242を使用 #PermissionRootLogin prohibit-password PermissionRootLogin no <- rootのログインを禁止 2. ホストOSから、通常ユーザでログインできて、rootではログインできないことを確認する。 ssh (ユーザ名)@localhost -p 2222 UFW設定 ファイアウォールの設定だが、UFWを使用して、4242(SSH)と80(lighttpd用)のみを開ける。 今回の初期設定ではUFWをインストールできていない(dpkg -lで確認)ので、apt-getでインストールする。 ufwコマンドを使用してSSHのみアクセスできるファイアウォールの設定を行う - Armadilloブログを参考にさせていただきました。 apt-get update <- aptが持つパッケージ情報を更新 apt-get install ufw <- ufwをアップデート 2. ポート4242と80のみ開く設定を行う。 ufw default deny ufw allow 4242 ufw allow 80 ufw enable パスワードポリシー(PAM) DebianではPAMが利用可能であるが、標準ではcracklibがインストールされていないため、cracklibに後方互換を持つlibpam-pwqualityをインストールして使用する。 また、日数に関する設定や再設定を行う命令については、chageを使用する。 網羅的な情報を探し出せず苦労したが、最終的にlibpam-pwqualityのMANのほか、Server World Debian 10 Busterを参考にさせて頂いた。 前述の通り、libpam-pwqualityをインストールする。 apt-get install libpam-pwquality PAMのパスワード関連設定ファイルである/etc/pam.d/common-passwordからの紐付けは自動的に行われるようだが、rootへの設定適用を追加しておく(enforce_for_root部分)。 なお、根拠となるマニュアル等は見つけられなかったが、後述の以前のパスワードとの相似性の要件(difok)のrootへの非適用に対しては、特段の設定なく、enforce_for_rootがあってもdifokのみrootへは適用されないことを確認している。 /etc/pam.d/common-password password required pam_pwquality.so retry=3 enforce_for_root 2. libpam-pwqualityの設定ファイル /etc/security/pwquality.confの内容を指定された要件に変更する。 /etc/security/pwquality.conf difok = 7 <- 7文字以上、以前のパスワードを含まない minlen = 10 <- 最短10文字 dcredit = -1 <- 数字の必ず含む ucredit = -1 <- 大文字を必ず含む maxrepeat = 3 <- 3文字より多く、同じ文字を連続させない usercheck = 1 <- ユーザ名を含まない 3. /etc/login.defs/chageによる日付関連の変更 既出のページのほか、【 chage 】コマンド――パスワードの有効期限を設定する/確認するを参考にさせて頂いた。 当該ファイルを以下のとおりに変更するほか、既存のユーザに対する当該設定の変更については、bashよりchageコマンドで変更する。 /etc/login.defs PASS_MAX_DAYS 30 PASS_MIN_DAYS 2 PASS_WARN_AGE 7 chage -M 30 ユーザ名 <- 有効期限30日 chage -m 2 ユーザ名 <- 変更可能間隔最短2日 chage -W 7 ユーザ名 <- 期限切れ7日前より警告 chage -d 0 ユーザ名 <- 最終更新日を大昔とすることで期限切れ状態とし、次回のログイン時にパスワード更新を要求する ユーザグループの設定 user42グループを作成し、一般ユーザ及びレビュー中に新規に作成するユーザを所属させる。 ここではgroupaddとを使用した。 groupaddでuser42グループを作成する。 groupadd user42 gpasswdで作成してある一般ユーザをuser42グループに加入させる。 usermodを使うこともできるが、所属するサブグループ全体を指定しなければならないため、追加したつもりが別のグループから除籍してしまうなど意図しない挙動を引き起こしそうで避けておきたい。 gpasswd -a user user42 sudo設定 sudoers を利用して、sudoグループ(Debianデフォルトのsudo用グループ)に対して、以下の設定を行います。 sudoをインストールし、各種設定を行います。 apt-get install sudo なお、sudoersを編集する際には、visudoを使用することが推薦されている。 また、テストを行う際には、初期の一般ユーザはsudoグループに入っていないので、追加してからテストをしよう。 /etc/sudoers # (コメント行は不要) # パスワードの試行可能回数は3回とすること(なお、デフォルトで3回となっている) Defaults passwd_tries=3 # パスワードが誤った場合、カスタムメッセージを表示すること Defaults badpass_message="任意のカスタムメッセージ" OK # sudo コマンドの入力と出力双方を、/var/log/sudo/ ディレクトリに出力すること Defaults log_input Defaults log_output Defaults iolog_dir="/var/log/sudo/" # TTYモードが有効になっていること Defaults requiretty # sudo コマンドによりアクセスできるPATHを制限すること secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin" tty modeの設定について、先人がStackOverflowに質問をあげて、回答を得られている。 自分の理解としては、実際にターミナルを開かないと許さない、コマンドのみの実行など、外部からの攻撃を一定程度防げるという理解。 monitoring.sh モニタリング用のシェルを作成し、cronを用いて10分毎に全ユーザのターミナルに表示させる。 10分毎の実行はデフォルトのフォルダがないので、crontab(設定ファイル)を用いて設定する。 crontab -e rootのcrontabファイル SHELL=/bin/bash */10 * * * * $HOME/monitoring.sh 2. シェル本体は、上記の設定ファイルのとおり、rootのホームディレクトリに作成する。 全ユーザへ表示させるために、wallを使用する。 OS関連はuname、CPU関連はlscpu、RAM関連はdf、メモリ関連はfree、使用率はtop、最終起動時間はuptime(uptime -s)、LVMはvgs、接続数はss、ログイン数はwho、IPv4/MACアドレスはip(ip-link,ip-address)、sudoの回数はsudoのログにあるseqファイルを読むことで取得する。 また、エラーが発生した場合には、wallが実行される前に止まるよう、スクリプトを記載する。 バナー=発信者情報の記載は自由のため、wallの-nオプションを使用して消しても問題ない。 monitoring.sh #!/bin/bash STR='#Architecture : '`uname -a`'\n' STR+='#CPU physical : '`lscpu | grep 'Socket(s):' | cut -f 2 --delim=':' | tr -d ' '`'\n' STR+='#vCPU : '`lscpu | grep "^CPU(s):" | cut -f 2 --delim=':' | tr -d ' '`'\n' STR+='#Memory Usage : '`free -m | grep 'Mem:' | awk '{printf "%d/%dMB(%4.2f%%)", $3, $2, $3/$2*100}'`'\n' STR+='#Disk Usage : '`df -m --total | grep total | awk '{printf "%d/%dMB(%s)", $3, $2, $5}'`'\n' STR+='#CPU load : '`top -b -n 1 | grep '%Cpu(s)' | awk -F ',' '{printf "%s", $4}' | awk '{printf "%4.1f%%", 100-$1}'`'\n' STR+='#Last boot : '`uptime -s`'\n' STR+='#LVM use : ' # cron内では環境変数が一部引き継がれないので、フルパスで記載 LVM=`/usr/sbin/vgs | wc -l | awk '{print $1 - 1}'` if [ $LVM -ge 1 ] then STR+='yes' else STR+='no' fi STR+='\n' STR+='#Connetions TCP : '`ss -t state established | wc -l | awk '{print $1 - 1}'`' ESTABLISHED\n' STR+='#User log : '`who | wc -l`'\n' STR+='#Network : IP '`ip a | grep inet | grep global | awk '{print $2}' | awk -F '/' '{print $1}'`' ('`ip link show | grep ether | head -n 1 | awk '{print $2}'`')\n' NUM=`cat /var/log/sudo/seq` STR+='#Sudo : '`echo $((36#$NUM))`' cmd\n' echo -e $STR | wall 作成後、当該シェルスクリプトに実行権を設定する。 chmod 755 monitoring.sh 3.シェルファイルを修正せずに、メッセージを止める。 crontabより、上記設定を削除すれば止まる。 ボーナス編(lighttpdとMariaDB、PHPを使用してWordPressでWebサイトをサーブする) Twitterにて非常に有意義な助言を頂いておりますので、ぜひ自分のリプライ欄よりご覧ください。 Debian Wordpress Wikiを参考に進めていきたいところだが、公式が想定しているサーバ機能がApache2なので、別途Lighttpdの設定をする必要がある。 中々同様のセッティングの公式情報やまとまった情報がなく、また筆者の知識不足により、必要十分な記載ではないが、実践して成功した手順を理解とともに記載する。 なお、当Gistに、試行錯誤時のログを残す。 lighttpdのインストール Wordpressをaptよりインストールすると、Apache2さんが付いてくるので、先にこちらをインストールします。 apt install lighttpd 必要に応じて、systemctl/直Path restart/service等で起動/起動確認を行う。 3. MariaDBのインストール、設定 MySQLと互換性を持つDB。既出のDebian Wordpress Wikiに従って設定すると良い。 apt install mariadb-server mysql_secure_installation # 初期設定(Root用PW設定、他は任意だがYを推奨) vim wp.sql cat ~/wp.sql | mysql --defaults-extra-file=/etc/mysql/debian.cnf wp.sql CREATE DATABASE wordpress; GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON wordpress.* TO wordpress@localhost IDENTIFIED BY 'password'; FLUSH PRIVILEGES; なお、wp.sqlを作成して流すなり、ログインしてベタ打ちするかは自由。 今回はDebian Wordpress WikiママのSQLコマンドファイルを作成して流した。 4. Wordpress をインストール Wordpressをapt経由で入れます。Apache2さんも入ってきます。lighttpdと競合するためか、正常に起動しませんので、これ幸いと放置します。 課題の制約が気になるのであれば、Purgeして良いかもしれませんが、自分としては依存関係として付いてきただけで設定も起動もされていない状態をセットアップされたとは到底言えないと思います。ましては依存として付いてきたのに、削除するなんて… しかしながら、再起動した際に、apache2がlighttpdに先んじて起動した事象を確認したため、systemctl stop/disable apache2.service で停止/自動起動停止を行い、systemctl start/enable lighttpd でlighttpdを起動/自動起動設定することをおすすめします。 apt install wordpress どう考えても課題側が考慮できていないだけのような…今まで枯れも枯れた技術ばっかりだったのになぜ…。 5. php-cgiをインストール Wordpressを動かすのに使用するので、インストールします。 apt install php-cgi 正直、存在しない状態を試していないので、ひょっとしたら不要かもしれませんが、公式のガイドなんてありませんでしたし、入れていても害はない認識です。 6. lighttpdのセッティング /usr/share/doc/wordpress に配置されたREADMEを参考に、以下ルートディレクトリを変更する。 /etc/lighttpd/lighttpd.conf server.document-root = "/usr/share/wordpress" この時点でアクセスしてみて、結果やreadme.htmlを確認してもよいかもしれません。 7. lighttpdのconf-enabledディレクトリにて、rewriteとfastcgi、を有効にするシンボリックリンクを作成する root@debian42:/etc/lighttpd/conf-enabled# ln -s ../conf-available/10-rewrite.conf 10-rewrite.conf root@debian42:/etc/lighttpd/conf-enabled# ln -s ../conf-available/10-fastcgi.conf 10-fastcgi.conf root@debian42:/etc/lighttpd/conf-enabled# ln -s ../conf-available/15-fastcgi-php.conf 15-fastcgi-php.conf ほか、confファイルを記載する方法もあるかもしれませんが、自分はこの方法で突き通しました。 8. WPディレクトリの権限を変更(所有者、閲覧権限) サイトの内容があるWPディレクトリについて、オーナーをサーバが使うユーザに変更、ほか、実行権限と閲覧権限を付与。 root@debian42:~# chown -R www-data:www-data /usr/share/wordpress/ root@debian42:~# chmod -R 755 /usr/share/wordpress/ 9.一応、DB情報を予め登録(たぶん不要?) インストール画面を見ると、設定する場面があるみたいなので、不要かもしれないです。 root@debian42:/usr/share/wordpress# vim wp-config.php /usr/share/wordpress/wp-config.php /** The name of the database for WordPress */ define('DB_NAME', 'wordpress'); /** MySQL database username */ define('DB_USER', 'wordpress'); /** MySQL database password */ define('DB_PASSWORD', 'password'); 10.lighttpdサービスを再起動 /etc/init.d/lighttpd restart 11.ブラウザより確認 ssh接続時と同様に、ポートフォワーディングを利用して確認した。 筆者は80->8042の設定としていたため、http://localhost:8042 へアクセスして確認したところ、インストール画面へリダイレクトされた。 なお、試行錯誤中は403へリダイレクトされ続けた。 他、任意な機能(NGINX / Apache2 は禁止)をセットアップする 個人的な利便性、習熟のために、tmux、vimを導入した。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む