20210605のLinuxに関する記事は9件です。

Linux: ディスク容量不足の調査に活用できるコマンド

ディスク容量不足の調査について、活用できるコマンドをメモしておきます。 なお、権限不足でディレクトリ内を確認できないことがあるため、rootで実行することを推奨します。 実施環境: Linux [root@testhost ~]# uname -a Linux testhost 4.18.0-147.8.1.el8_1.x86_64 #1 SMP Thu Apr 9 13:49:54 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux [root@testhost ~]# echo $SHELL /bin/bash 1. 現在のディスク使用率を確認する 次のコマンドを実行することで、指定したディレクトリの所属するディスクの使用率が確認できます。 Linux df -h ディレクトリパス 以下、実行例です。 Linux [root@testhost ~]# df -h /var/log Filesystem Size Used Avail Use% Mounted on /dev/mapper/c1_testhost-var 4.0G 1.3G 2.8G 32% /var ディレクトリ/var/logは/varでディスクが切られているため、/varにマウントされているディスクについての情報が表示されます。 Sizeが総容量、Usedが使用容量、Availが空き容量、Use%が使用率です。 2. サイズの大きいファイルを抽出する 次のコマンドを実行することで、指定したディレクトリ配下のファイル及びディレクトリをサイズの降順で表示できます。 Linux du -ah ディレクトリパス | sort -hr | head -表示個数 以下、実行例です。 上位3個を表示しています。 Linux [root@testhost ~]# du -ah /var/log | sort -hr | head -3 14M /var/log 6.0M /var/log/anaconda 3.1M /var/log/anaconda/journal.log duコマンドのオプション"-a"を外すと、ディレクトリのみが表示されます。 Linux [root@testhost ~]# du -h /var/log | sort -hr | head -3 14M /var/log 6.0M /var/log/anaconda 700K /var/log/sa 特定のファイルやディレクトリを除外する場合は、grepを挟むとよいです。 Linux [root@testhost ~]# du -ah /var/log | grep -v /var/log/anaconda | sort -hr | head -3 14M /var/log 812K /var/log/dnf.log 700K /var/log/sa 3. 長期間更新されていないファイルを抽出する 次のコマンドを使用することで、長期間更新されていないファイルを検索できます。 Linux find ディレクトリパス -mtime +日数 -size +サイズ -type f | xargs ls -hl 以下、実行例です。 「更新日時が7日前より古く、サイズが1MBより大きいファイル」を検索しています。 Linux [root@testhost ~]# date Sat Jun 5 16:40:19 JST 2021 [root@testhost ~]# find /var/log -mtime +7 -size +1M -type f | xargs ls -hl -rw-------. 1 root root 3.1M Jun 13 2020 /var/log/anaconda/journal.log -rw-------. 1 root root 1.7M Jun 13 2020 /var/log/anaconda/lvm.log こちらも項番2と同様に、grepコマンドでファイルやディレクトリの除外ができます。 Linux [root@testhost ~]# date Sat Jun 5 19:01:04 JST 2021 [root@testhost ~]# find /var/log -mtime +7 -size +100k -type f | grep -v /var/log/anaconda | xargs ls -hl -rw------- 1 root root 248K May 25 17:23 /var/log/messages.20210525.gz
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ubuntu インストール

今まで仮想マシンだと、重すぎてサクサク進まなかったので、 思い切ってubuntuをインストールしてみることにしました。 当方は、いままでLinuxの構築をしたことがなく、 LPIC1程度の知識を有しているのみなので、 多くは手探りの状態でインストールを進めた。 所感としては、デュアルブートにこだわらず、 単純にインストールするだけなら、そこまで 難しくないと感じた。 手順としては、LiveUSBを作成し、 BIOSで起動順序をUSBを最初にし、 あとは、立ち上がったubuntuの画面に従うのみである。 しかし、当方は、もともとWindowsとubuntuのデュアルブートでやるつもりだったが、これが想像以上にうまくいかなかった。 もともと2つのOSを併存させるのは、推奨されていないため、 トラブルはつきものかもしれないが。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

CentOS の rpm パッケージ(vim)

CentOS に最新の vim をコンパイルして入れようと思ったときに、そういえば今使っている rpm のパッケージ達は何をしてくれているんだろうか。というのが気になったので少し調べてみた。 環境 $ cat /etc/redhat-release CentOS Linux release 8.1.1911 (Core) vim の rpm パッケージたち 今自分の環境にインストールされている vim と名前の付くパッケージは以下の 4 つ。 $ rpm -qa | grep vim vim-filesystem-8.0.1763-15.el8.noarch vim-enhanced-8.0.1763-15.el8.x86_64 vim-minimal-8.0.1763-13.el8.x86_64 vim-common-8.0.1763-15.el8.x86_64 それぞれの中身を簡単に調べてみたいと思います。 vim-minimal まずはパッケージの説明を確認してみます。 dnf info vim-minimal か rpm -qi vim-minimal あたりで確認するのが早そう。 前者は参照可能なリポジトリに存在するパッケージの情報であればインストールされていなくても参照できます。 後者はインストール済の rpm パッケージの情報しか参照することができません。 $ rpm -qi vim-minimal ... 省略(snip) Source RPM : vim-8.0.1763-13.el8.src.rpm ... Summary : A minimal version of the VIM editor Description : VIM (VIsual editor iMproved) is an updated and improved version of the vi editor. Vi was the first real screen-based editor for UNIX, and is still very popular. VIM improves on vi by adding new features: multiple windows, multi-level undo, block highlighting and more. The vim-minimal package includes a minimal version of VIM, which is installed into /bin/vi for use when only the root partition is present. NOTE: The online help is only available when the vim-common package is installed. 説明によるこのパッケージは最小構成の vim を含んでいるようです(そのままですけど)。 次に実際に展開されるファイルの中身を確認してみたいと思います。 $ rpm -ql vim-minimal /etc/virc /usr/bin/ex /usr/bin/rvi /usr/bin/rview /usr/bin/vi /usr/bin/view ...(man ファイルなどにつき省略) vim の設定情報といくつかのバイナリが含まれているようです。 ちなみに vi コマンドは sudo と依存関係にあるので、vim-minimal パッケージは無理に削除しないほうが良さそうです。 恐らく sudoers を編集する際に使うコマンド(visudo)で使うからだと思います。 $ sudo yum remove vim-minimal エラー: 問題: 操作は結果的に以下の保護されたパッケージを削除します: sudo vim-enhanced $ rpm -qi vim-enhanced ... Source RPM : vim-8.0.1763-15.el8.src.rpm ... Summary : A version of the VIM editor which includes recent enhancements Description : ... The vim-enhanced package contains a version of VIM with extra, recently introduced features like Python and Perl interpreters. $ rpm -ql vim-enhanced /etc/profile.d/vim.csh /etc/profile.d/vim.sh /usr/bin/rvim /usr/bin/vim /usr/bin/vimdiff /usr/bin/vimtutor ...(省略) ここに vim コマンドがいました。 /etc/profile.d 下に配置されたスクリプトで vi コマンドから vim コマンドへの alias が設定されているようです。 vimtutor コマンド(vim のチュートリアル)もここにいるんですね。 vim-common $ rpm -qi vim-common ... Source RPM : vim-8.0.1763-15.el8.src.rpm ... Summary : The common files needed by any version of the VIM editor Description : ... The vim-common package contains files which every VIM binary will need in order to run. いずれのバージョンの vim にも共通で必要になるファイルが含まれている模様。 $ rpm -ql vim-common /etc/vimrc /usr/bin/xxd ... # vim についてのドキュメント情報(各種OSのインストール方法など) /usr/share/doc/vim-common/* # man(マニュアル)情報 /usr/share/man/* # :help の情報 /usr/share/vim/vim80/doc/* # ライセンス情報 /usr/share/licenses/vim-common/LICENSE # デフォルトの vimrc を定義する vim スクリプト /usr/share/vim/vim80/defaults.vim # vim が file の種類の検出を有効 / 無効にする vim スクリプト # filetype on/off の時に読まれる /usr/share/vim/vim80/filetype.vim /usr/share/vim/vim80/ftoff.vim # 実際にファイルタイプを判定する vim スクリプト /usr/share/vim/vim80/scripts.vim # filetype に応じたプラグインを有効 / 無効にする vim スクリプト # filetype plugin on/off の時に読まれる /usr/share/vim/vim80/ftplugin.vim /usr/share/vim/vim80/ftplugof.vim # filetype に応じたインデントを有効 / 無効にする vim スクリプト # filetype indent on/off の時に読まれる /usr/share/vim/vim80/indent.vim /usr/share/vim/vim80/indoff.vim # Evim 向け設定プラグイン /usr/share/vim/vim80/evim.vim # バグレポート作成のための vim スクリプト /usr/share/vim/vim80/bugreport.vim # vimrc のサンプル /usr/share/vim/vim80/gvimrc_example.vim /usr/share/vim/vim80/vimrc_example.vim # GUI のメニュー表示 / 削除する vim スクリプト /usr/share/vim/vim80/menu.vim /usr/share/vim/vim80/delmenu.vim /usr/share/vim/vim80/synmenu.vim (menu.vim から基本的に読まれる) # windows 風のキーマッピングができるようになる vim スクリプト /usr/share/vim/vim80/mswin.vim # options コマンドで使われる /usr/share/vim/vim80/optwin.vim # RGB の色定義情報 /usr/share/vim/vim80/rgb.txt # 必要に応じて自動読み込みされるスクリプトが含まれる # plugin や vim の各種機能利用に必要になるもの /usr/share/vim/vim80/autoload/* # colorscheme 設定で使う色のテーマ情報 /usr/share/vim/vim80/colors/* # 様々な言語のコンパイラを使うための vim スクリプト /usr/share/vim/vim80/compiler/* # filetype に応じたプラグイン /usr/share/vim/vim80/ftplugin/* # filetype に応じたインデントを設定する vim スクリプト /usr/share/vim/vim80/indent/* # keymap 情報 /usr/share/vim/vim80/keymap/* # vim 上の各言語の情報(いわゆる i18n 的な気配) /usr/share/vim/vim80/lang/* # vim で標準提供されているプラグインや便利ツールなど /usr/share/vim/vim80/macros/* # vim で標準配布しているパッケージ(1つ以上のプラグインのまとまり) /usr/share/vim/vim80/pack/* # vim 標準のプラグイン(起動時に読まれる) /usr/share/vim/vim80/plugin/* # 印刷用ファイル /usr/share/vim/vim80/print/* # スペルチェック用ファイル /usr/share/vim/vim80/spell/* # syntax ハイライト用の vim スクリプト /usr/share/vim/vim80/syntax/* # vim のチュートリアル情報(vimtutor コマンドでも見られる) /usr/share/vim/vim80/tutor/* なかなか重厚なコンテンツでした。 xxd コマンド(16進ダンプの作成や戻しができるコマンド)はここにいたんですね。 調べれば調べるほど気になる事が出てくるのでここではあまり深追いしないことに。 vim-filesystem $ rpm -qi vim-filesystem ... Source RPM : vim-8.0.1763-15.el8.src.rpm ... Summary : VIM filesystem layout Description : This package provides some directories which are required by other packages that add vim files, p.e. additional syntax files or filetypes. 他のパッケージが必要とするいくつかのディレクトリを追加するらしい。 $ rpm -ql vim-filesystem /usr/lib/rpm/macros.d/macros.vim /usr/share/vim/vimfiles/* 確かにディレクトリを追加しているだけの模様。 おわりに 現在の vim 環境がどのパッケージによってどんな風に構成されてているのかが大まかに見えました。 自前コンパイルを試す際に違いを見比べたりして参考にしたいと思います。 そのまえに rpm の spec ファイルを覗いて configure のオプション指定を見てみたいと思いますがそれはまたの機会に。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

サーバのリバースエンジニアリング

ご挨拶 こんにちは、ひら吉です。今日はお仕事の話。 開発系のエンジニアのはずだったのに、なぜかリバースエンジニアリングをやることになりました。 運用系業務は得意ではないのですが、仕事なのでやむを得ず。 今後の備忘録として記録を残すことにしました。 背景 私が仕事上管理しているシステムは、技術を理解しない人が作ったシステムでして、 管理ができない(運用に必要なIPリストなどの情報がない)状態にあります。 だからこの仕事に着任してから1年、委託会社の方をたどってたどってたどるという不毛なヒアリング工程を経て、やっとサーバにアクセスすることができるようになりました。 しかしそれでも全体の30%程度しか把握できていない。 そしてついに「とある問題(割と大きめの問題)」が発生…。 そのため問題を解決するために以下を実施しようとして色々と調べたのでここにまとめます。 サーバで走っているプロセスの一覧化 どういう通信が走っているか 何をしたいかというと ・サーバで正規に走っているプロセスの一覧化(不要なプロセスは落とす) ・システム外に対する不要な通信を見極めて、必要な通信だけをFWで通すようにする です。 開発系のエンジニアとしては当たり前の話なのですが…。 前提 このシステムは私が作ったシステムではなくて、他の方が過去に作ったシステムを去年引き継いだ状況になります。 引き継いだ時点で、サービス仕様も、基本設計も、IP一覧も、ネットワーク構成も一切なかったので、やばいと感じていたら、本当にやばかったという状況です。 特にネットワーク系はやばかった。 ドキュメントがないどころか、前任者・前前任者が、そもそもネットワークというものを理解していなかったようで、誰に聞いても一切情報が出てきませんでした。 運よく、対向システムの方でネットワークに強い方がいる部分だけ明らかになってきたという状況です。 なぜ記事を書いたか? 検索しても出てこなかったから。 サーバのリバースエンジニアリング系の記事はもっとあるかと思いきや、 私のニーズに合うものがなかったからです。 状況(読み飛ばしても良いです(半分私の愚痴)) サービス仕様が残っていないので、どのシステムとどのような有機的結合がされているか分からない状態のため、下手にシステム更改をするとサービス断が発生しまくることは明らか、だから更改に難航していた。 しかも、他システムの機器調達時期が重なり、複数システムで同時に更改が進行。なお、他システムでも、仕様の紛失・状況不明のものが少なくなかったのでカオス。 そもそも物理サーバで作るから更改しなければならない状況になるわけで、パブリッククラウドにしておけば、少なくとも更改という観点での問題は発生しなかったのですが… 解決策として、システムごとに切り離しを行うべく「プロセスの一覧化」と「どのような通信がサーバ間で走っているか」を可視化することにしました。 実は通信だけ分かれば良いという話はあるのですが、サービス仕様を明らかにするという目的でもプロセスを一覧化しようとしています。(どちらにしてもあとで必要になる時が来るはず) tcpdumpやFWのログで収集しても良いのですが、それをリアルタイムに可視化するという仕組みは夢のまた夢、リアルタイムでなく後処理をする場合、ストレージを膨大に食ってしまうため、それを納めるだけの領域を確保する予算も理由も立たず。 そしてさらに残念なことに、実はネットワークレイヤでもセグメント設計ができておらず、セキュリティポリシーも綺麗に整理できていませんという問題もありますが、それはまた別の話として書くかも。 1. サーバで走っているプロセスの一覧化 ps -ef コマンドで一定期間の間に走ったプロセスをリスト化します。 リスト化するためのスクリプト https://github.com/hirakichi721/linux_process_monitor このスクリプトでは「monitor.py OUTPUTFILE」を実行すると以下の挙動で動きます。 ・OUTPUTFILEが存在すれば読み取り ・今のps -efの出力を読み取り、OUTPUTFILEに記録した過去のプロセスの登場回数とつきあわせカウントして ・最後にOUTPUTFILEに"プロセス,カウント回数"をCSV形式で書き込む 使い方は、crontabで*/1として、1分に1回実行し、一定期間のプロセス一覧を蓄積します。 使用上の注意点は、snmptrapのように毎回引数(MIB値)が変わるプロセスは、別プロセスとして判定されてしまうため、プログラムを多少書き換えて弾いた方が良いです。(同じようなプロセスが大量に現れてしまい精査が大変になるから。) 2. どういう通信が走っているか これが肝で、netstatで1週間分のデータを集めることにしました。集めるスクリプトは以下のスクリプトです。 << githubで公開準備中 >> さて、どう可視化するか? 1.人力(IT系として恥ずかしいので却下) 2.JS系(色々と探してみましたが一番良さそうなのはinet-henge) 3.python系(graphviz、networkx+matplotlib) 最初は2のinet-hengeを使おうと思ったのですが、辺にラベルをつけることができなかったり(できるのかもしれないが軽く検索した感じだと出てこない)、不満が残る。 次にnetworkx+matplotlibを使おうとしたのですがこちらも同様で不満が残る。そして最後にたどり着いたgraphviz。最高です。 こんな感じで可視化できました。 詳細はこちらに公開しています。 https://github.com/hirakichi721/netstat2graphviz 可視化したあとでチェックする観点 後やることは「いらないものは落とす」。 ・不要通信を落とす  psコマンドの結果の一覧で、通信に使われていないサービスが判明したらそれは落としましょう。セキュリティ上の理由で、不要なサービスを開けておくことは、脆弱性を突かれ、セキュリティインシデントに発展するリスクを高めます。 ・システム外の通信は必要な通信以外はall denyする  これは当たり前です。システムの体内を守るために開けるポートは最小限にしましょう。(穴だらけの家にはネズミがあらゆる場所から入ります。穴の数が少なければ、そこに置くネズミ対策グッズ(FWに相当)が少なくて済むし、低コストで高セキュリティを実現できます。) 最後に 出身が文系だろうと理系だろうと情報系だろうとどこでも良いです。 しかしシステム開発者であれば、最低でも一度は内製開発しましょう。 自分で作れないものは人に発注できません。 まぁでも日本企業、そんなリスク犯さなくても言われたようにやってれば給料もらえるんですよね。 やっすいですけどw でも生産性は上がらない。 だから多くの古き良き日本企業は、絶対に今のままではGAFAに絶対に勝てない。 実は最近、AWSの勉強を始めてみたら、まぁなんというのか、 FUTURE IS NOW(FUTURE IS IN AWS) でした。 つまり、今、業務上苦労していることが、GUI上のボタン操作で終わってしまいましたw ログもセキュアに保存できるわ、 そのためのストレージ購入もしなくても良いわ、 ログの分析ツールも揃ってるわで、 本当に現職の生産性の低さを思い知りました。 そんなわけでAWS勉強しつつ、いつかAWSで働いてみたいと思うようになった今日この頃。 まずはソリューションアーキテクトの初級資格を取ってみます。 (おまけ)セキュリティを気にする理由  もともと、セキュリティ系で5年以上働いていたのもあって、システム設計のときに、セキュリティ観点がとても気になるタチなんですw
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Dockerとは何なのか?それについて学びつつ、学んでみる。その1

現場でDockerを使う現場で作業したことはあるが仕組みが曖昧で、完全に理解したわけではないので参考書を読みつつ、初心に戻り、まとめてみることにしました。 本来のシステムや機能の仕組み 本来、システムや機能は、以下のようにサーバー内にいろんなフレームワークだったり、様々なプログラムやソフトウェアが存在していて、動いています。 そして、それらはそれらを動かすための実行環境だったり、他のプログラムを元に動いていたりすることがあるのです。 また、システムやソフトウェアは共通の実行環境だったり、ライブラリを使用していることだって少なくありません。 そして各々のシステムが作動するversionが決まっていることもあり、共通のプログラムがそれに対応していないと、一部のシステムが動かなくなってしまいます。 Dockerは一つのサーバーに複数の実行環境を構築するもの こういった問題を解決するものとして、Dockerというものがあります。 Dockerとは、サーバー内の様々なシステムやプログラムの実行環境をシステム・プログラムごとに作成できるシステムです。 つまり、一つのサーバーに ○Laravelなら、PHPの実行環境 ○Nuxtなら、Nodeの実行環境 を構築することができ、システムにあった環境を用意することができます。 そして、その実行環境のことを「コンテナ」と言います。 そして、そのコンテナの種類のことを「イメージ」といい、コンテンはイメージをもとに作成されます。 DockerはLinuxで動く DockerはLinuxで動くので、Dockerの操作をするとき(Dockerを起動する、Docker内のコンテナを移す、削除するetc...)はLinuxのコマンドで操作したりします。 そもそもサーバとは そもそもサーバって何なのかも合わせて調べてみました。 サーバとは英語で書くと、「Server」と書き、Serve(割り当てる、給仕する)という動詞から成り立っている言葉であり、これの名詞型になるとサービス(Service)となります。 つまり、サーバとは何かを提供するものということです。 ○「Webサーバ」と言えば、Web関係の機能が格納されたサーバ ○「メールサーバ」と言えば、メール関係の機能が格納されたサーバ というように。 そして、サーバは大きく分けて、 ○総合的なサーバ ○部分的なサーナ の2つに分けることができます。 Dockerの構造 まずは復習として、Dockerは大体以下のような構造になっています。 もともと使用しているサーバーOSがあり、そのサーバーOSはLinux OSで作動し、さらにその上でDockerがあるのです。 そして、Dockerのコンテナの中には、コンテナごとのそのコンテナ専用のLinux OSが存在しています。 ちなみに、OSとは「Operating System(オペレーティング・システム)」の略で、ユーザの命令をシステムや機械に伝えるものです。 世の中の機械やシステムは単純であり、人間のように思考回路があるわけではないので、人間のしたいことを伝えてもそのままでは、機械は理解できません。 つまり、OSとは、人間の言葉を機械に変換するためのものなのです。 以上、まずはDockerがどんなものかをまとめてみました。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linux OSをUSBにインストールしてみた

結論 普通のHDDメモリUSB(3.1Gen1)にOSをインストールしても、動作が非常に遅く、実用に耐えないのでお勧めしない。どうしてもモバイルにしたいなら、USB型SSD(少々高価。Amazonで5000円~)があるのでそちらを検討すべき。なお、"Tails"というディストリビューションがあり、これはUSB2.0にインストールしても普通に動くらしい (→未検証。検証したらまた更新する)のでやってみたい。 背景 今まで、仮想マシンVirtual Boxを使用してLinuxをいじっていたが、Win10のアップデートや仮想マシン自体のアップデートなどで度々起動しなくなるので、もう愛想をつかし使わないことに決めた。AMD製のmy PCとの相性は最悪で、vmwareは最初からだめだった。一部では、AMD cpuでvmwareが使える人もいるようだが、Intel cpuの方が相性が良いのはいろんなネットの情報から自明。 そこで、仮想マシンを使わずにLinuxを使用する方法として以下を考えた。 1. メインマシンのwin10 PCドライブにLinuxを入れてデュアルブートする 2. Live USBを作成し、USB bootする 3. 中古PC or ラズベリーパイを購入し、ドライブにLinuxを直インストール 1は起動設定を間違えたり、windowsのupdateなどで起動しなくなるリスクがあり、復旧させるのにもそれ相応の知識が必要で、多くのエンジニアに避けた方が良いと言われたので却下。3は費用がかさむことと、すぐ入手できるわけではないので(今すぐLinuxを使用したかったので)却下。 → 2の方法を取ることにした。 iso fileの入手 Live USBの作成前に、入れたいディストリビューションのisoファイルをDLしておかないと元も子もない。 ★isoファイル群 毎度お世話になっている理化学研究所のミラーサイト:http://ftp.riken.jp/Linux/ CentOS7-live→ http://ftp.riken.jp/Linux/centos/7/isos/x86_64/ Ubuntu→ https://www.ubuntulinux.jp/download ※torrentを使用した方がDLが早い。今回はLive用なのでそこまで時間はかからなかったが、dvd用だと容量が大きいので、torrent形式でDLしてtorrentで解凍した方が早い。torrentにもいろいろ種類があるから、好きなものをインストールして使うとよい。自分は下記をいつも使用している。µtorrent公式サイト→ https://www.utorrent.com/intl/ja/downloads/win ※CentOSの公式HPにliveが見当たらないので(CentOSは基本放置プレイ&シンプルすぎて嫌いだ)、ミラーサイトからget。Ubuntuは公式サイトが丁寧なので普通に公式から。 CentOSだけDVD用とlive用で分かれており、Ubuntuはlive用にも使えるよう1つのisoにまとめられており、ここでもUbuntuの使い勝手を実感した。 Live USBの作成 (boot用:4GB以上) 今回、ブート用に16GBのUSBを使用したので、1つのOSインストーラだけだと容量がもったいないので、マルチブートUSBの作成を決めた。以前まではRufusを使用していたが、これはシングルブートにしか対応していなかった(Refusで作成した場合、そのUSBドライブの中身の構成を見てみればすぐわかるだろう)。なので新しくWinSetupFromUSBというソフトウェアを使用してマルチブート用USBを作成。なお、このソフトは4GB以下のisoファイルしか入れてくれないらしいので、dvd-isoを誤って焼こうにも誤りようがないらしい。Rufusを使用していた当初、間違えてCentOS-DVD-isoをインストールしてしまって、インストール用USBへの書き込みに丸2日かかって死ぬかと思った( ;∀;)のでこの機能はありがたい。 2つ目以降のisoを入れる際は、上記赤枠のチェックを外さないと全てフォーマットされて1つめのisoが消えるので、マルチブートにしたい場合は必ず外すこと。 ★マルチブート用USBの中身 作成後、USBドライブの中身を見ても、メインディレクトリ直下のisoディレクトリにどんどん追加されるだけなのでファイル構成が分かりやすい。 この時点で、boot用USB起動しても、お試し版(Test ver)は起動でき、これ単体でもOSの操作は可能だ。しかし、シャットダウンするたびにデータが消えるためあくまでrescure用途である。 Error:ParrotOS desktopのデザインが美しいので使ってみたかったParrotOS。でも下記のようになり、混乱状態(Defrangmented)になり、WinSetUpFromUSBがフリーズした( ;∀;)普及してないOSは使うべきではないか・・・。 UNetbootin 公式サイト→ https://unetbootin.github.io/ 最近はUNetbootinをインストール&あるパラメータをいじればboot用USBをinstall済みUSBとして兼用できるらしい(参照:https://forums.ubuntulinux.jp/viewtopic.php?id=20556) →兼用というか、winホストでisoからインストーラを読み込み起動し、インストールのみをUSBに展開してくれるっぽい。従来はboot用にUSBかドライブに焼かないとダメだったが、このソフトをDLすればその必要がなくなるというわけかな。動画見ると比較的簡単に操作できそう。→ https://report.hot-cafe.net/unetbootin-5282 。しかし、ディストリビューションによってそのパラメータは異なるし、Ubuntuに関しては情報が多数出てくる(Ubuntuのみパラメータいじらなくてもソフトの中にrebootしてもデータが保存される機能あり)が、CentOSに関しては記事が少なく、間違えると起動しなくなりそうなので初心者にはハードルが高そうに思われた。今回は普通にインストール先をもう1つのUSBに指定した。 ちなみに、インストール不要が前提のディストリもあるらしい?へー。 ドイツ発のKNOPIXはインストールしないで、Live CD(DVD)のままで使用するディストリビューションです。Live CDからの起動が30secと早く、HDDのデータ読み込みが強力なので、データの吸出しのレスキューとして、使用しているユーザーが数多います。 引用:https://forums.ubuntulinux.jp/viewtopic.php?id=20556 Live USBの作成 (install用:16GB以上) なるべく高速のUSBを用意するのが望ましい。要はこいつがPCのHDDとなるので、遅いと書き込みも読み出しも遅くなる。自分は3.2(GEN1)を用意したが、それでも遅いと感じたので、現時点での最新速度を誇るUSBを使用するのがよいかと。 → 単なるHDDとしてのUSBは遅すぎてOSの起動からwebブラウジングから何から何まで遅く、とてもじゃないが実用に耐えないクソUSBが完成した。単なるUSBにOSにインストールするのは絶対におすすめしない。やるなら、少々値は張るがUSB型SSDを買ってインストールすべし。 boot用USBとinstall用USBを指し、起動。BIOSメニューに行って起動順序を変更したいので、起動後すぐにdelキー(デフォルトの起動順序変更)or F12(一時的に起動順序変更) 連打で設定変更してくれ。あとはboot用でLinuxが起動すれば通常通りのインストールで、インストール先にUSBを指定すればOK。 Error:BIOSで起動順序変更してもwindowsが先に立ち上がる ここまでで、USBポートはマウス、キーボード、boot用USB、install用USBで4ポートが埋まってしまっている。この状況だと(インストール用USBに大容量メモリを使用している)と、外付けUSBを認識してくれず、起こる現象らしい。解決策としては、install用USBはboot用USBでLinuxが起動してから差すようにし、delキーではなく、F12キーで一時的に起動順序を指定するようにする。自分はこれで解決した。 作成したパーティションの削除 他 参考になりそうなサイト → https://renoji.com/IT.php?Contents=OS_Kali/Setting_USBBoot.html → https://digitaloceancode.com/
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

USBフラッシュドライブの作成

USBフラッシュとは 今回、ブート用に16GBのUSBを使用したので、1つのOSインストーラだけだと容量がもったいないので、マルチブートUSBの作成を決めた。以前まではRufusを使用していたが、これはシングルブートにしか対応していなかった(Refusで作成した場合、そのUSBドライブの中身の構成を見てみればすぐわかるだろう)。なので新しくWinSetupFromUSBというソフトウェアを使用してマルチブート用USBを作成。 2つ目以降のisoを入れる際は、上記赤枠のチェックを外さないと全てフォーマットされて1つめのisoが消えるので、マルチブートにしたい場合は必ず外すこと。 ★マルチブート用USBの中身 作成後、USBドライブの中身を見ても、メインディレクトリ直下のisoディレクトリにどんどん追加されるだけなのでファイル構成が分かりやすい。 ★ブート用USBに焼いたisoファイル群 毎度お世話になっている理化学研究所のミラーサイト:http://ftp.riken.jp/Linux/ CentOS7-live→ http://ftp.riken.jp/Linux/centos/7/isos/x86_64/ Ubuntu→ https://www.ubuntulinux.jp/download ※CentOSの公式HPにliveが見当たらないので(CentOSは基本放置プレイ&シンプルすぎて嫌いだ)、ミラーサイトからget。Ubuntuは公式サイトが丁寧なので普通に公式から。 CentOSだけDVD用とlive用で分かれており、Ubuntuはlive用にも使えるよう1つのisoにまとめられており、ここでもUbuntuの使い勝手を実感した。 最初、間違えてCentOS-DVD-isoをインストールしてしまって、インストール用USBへの書き込みに丸2日かかって死ぬかと思った( ;∀;)CentOSのUSBライブを作成するのであれば、必ずlive用を入れるように・・・。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Live USBの作成

背景 今まで、仮想マシンVirtual Boxを使用してLinuxをいじっていたが、Win10のアップデートや仮想マシン自体のアップデートなどで度々起動しなくなるので、もう愛想をつかし使わないことに決めた。AMD製のmy PCとの相性は最悪で、vmwareは最初からだめだった。一部では、AMD cpuでvmwareが使える人もいるようだが、Intel cpuの方が相性が良いのはいろんなネットの情報から自明。 そこで、仮想マシンを使わずにLinuxを使用する方法として以下を考えた。 1. メインマシンのwin10 PCドライブにLinuxを入れてデュアルブートする 2. Live USBを作成し、USB bootする 3. 中古PC or ラズベリーパイを購入し、ドライブにLinuxを直インストール 1は起動設定を間違えたり、windowsのupdateなどで起動しなくなるリスクがあり、復旧させるのにもそれ相応の知識が必要で、多くのエンジニアに避けた方が良いと言われたので却下。3は費用がかさむことと、すぐ入手できるわけではないので(今すぐLinuxを使用したかったので)却下。 → 2の方法を取ることにした。 iso fileの入手 Live USBの作成前に、入れたいディストリビューションのisoファイルをDLしておかないと元も子もない。 ★isoファイル群 毎度お世話になっている理化学研究所のミラーサイト:http://ftp.riken.jp/Linux/ CentOS7-live→ http://ftp.riken.jp/Linux/centos/7/isos/x86_64/ Ubuntu→ https://www.ubuntulinux.jp/download ※torrentを使用した方がDLが早い。今回はLive用なのでそこまで時間はかからなかったが、dvd用だと容量が大きいので、torrent形式でDLしてtorrentで解凍した方が早い。torrentにもいろいろ種類があるから、好きなものをインストールして使うとよい。自分は下記をいつも使用している。µtorrent公式サイト→ https://www.utorrent.com/intl/ja/downloads/win ※CentOSの公式HPにliveが見当たらないので(CentOSは基本放置プレイ&シンプルすぎて嫌いだ)、ミラーサイトからget。Ubuntuは公式サイトが丁寧なので普通に公式から。 CentOSだけDVD用とlive用で分かれており、Ubuntuはlive用にも使えるよう1つのisoにまとめられており、ここでもUbuntuの使い勝手を実感した。 Live USBの作成 (boot用:4GB以上) 今回、ブート用に16GBのUSBを使用したので、1つのOSインストーラだけだと容量がもったいないので、マルチブートUSBの作成を決めた。以前まではRufusを使用していたが、これはシングルブートにしか対応していなかった(Refusで作成した場合、そのUSBドライブの中身の構成を見てみればすぐわかるだろう)。なので新しくWinSetupFromUSBというソフトウェアを使用してマルチブート用USBを作成。なお、このソフトは4GB以下のisoファイルしか入れてくれないらしいので、dvd-isoを誤って焼こうにも誤りようがないらしい。Rufusを使用していた当初、間違えてCentOS-DVD-isoをインストールしてしまって、インストール用USBへの書き込みに丸2日かかって死ぬかと思った( ;∀;)のでこの機能はありがたい。 2つ目以降のisoを入れる際は、上記赤枠のチェックを外さないと全てフォーマットされて1つめのisoが消えるので、マルチブートにしたい場合は必ず外すこと。 ★マルチブート用USBの中身 作成後、USBドライブの中身を見ても、メインディレクトリ直下のisoディレクトリにどんどん追加されるだけなのでファイル構成が分かりやすい。 この時点で、boot用USB起動しても、お試し版(Test ver)は起動でき、これ単体でもOSの操作は可能だ。しかし、シャットダウンするたびにデータが消えるためあくまでrescure用途である。 Error:ParrotOS desktopのデザインが美しいので使ってみたかったParrotOS。でも下記のようになり、混乱状態(Defrangmented)になり、WinSetUpFromUSBがフリーズした( ;∀;)普及してないOSは使うべきではないか・・・。 UNetbootin 公式サイト→ https://unetbootin.github.io/ 最近はUNetbootinをインストール&あるパラメータをいじればboot用USBをinstall済みUSBとして兼用できるらしい(参照:https://forums.ubuntulinux.jp/viewtopic.php?id=20556) →兼用というか、winホストでisoからインストーラを読み込み起動し、インストールのみをUSBに展開してくれるっぽい。従来はboot用にUSBかドライブに焼かないとダメだったが、このソフトをDLすればその必要がなくなるというわけかな。動画見ると比較的簡単に操作できそう。→ https://report.hot-cafe.net/unetbootin-5282 。しかし、ディストリビューションによってそのパラメータは異なるし、Ubuntuに関しては情報が多数出てくる(Ubuntuのみパラメータいじらなくてもソフトの中にrebootしてもデータが保存される機能あり)が、CentOSに関しては記事が少なく、間違えると起動しなくなりそうなので初心者にはハードルが高そうに思われた。今回は普通にインストール先をもう1つのUSBに指定した。 ちなみに、インストール不要が前提のディストリもあるらしい?へー。 ドイツ発のKNOPIXはインストールしないで、Live CD(DVD)のままで使用するディストリビューションです。Live CDからの起動が30secと早く、HDDのデータ読み込みが強力なので、データの吸出しのレスキューとして、使用しているユーザーが数多います。 引用:https://forums.ubuntulinux.jp/viewtopic.php?id=20556 Live USBの作成(install用:16GB以上) なるべく高速のUSBを用意するのが望ましい。要はこいつがPCのHDDとなるので、遅いと書き込みも読み出しも遅くなる。自分は3.2(GEN1)を用意したが、それでも遅いと感じたので、現時点での最新速度を誇るUSBを使用するのがよいかと。 boot用USBとinstall用USBを指し、起動。BIOSメニューに行って起動順序を変更したいので、起動後すぐにdelキー(デフォルトの起動順序変更)or F12(一時的に起動順序変更) 連打で設定変更してくれ。あとはboot用でLinuxが起動すれば通常通りのインストールで、インストール先にUSBを指定すればOK。 Error:BIOSで起動順序変更してもwindowsが先に立ち上がる ここまでで、USBポートはマウス、キーボード、boot用USB、install用USBで4ポートが埋まってしまっている。この状況だと(インストール用USBに大容量メモリを使用している)と、外付けUSBを認識してくれず、起こる現象らしい。解決策としては、install用USBはboot用USBでLinuxが起動してから差すようにし、delキーではなく、F12キーで一時的に起動順序を指定するようにする。自分はこれで解決した。 作成したパーティションの削除 他 参考になりそうなサイト → https://renoji.com/IT.php?Contents=OS_Kali/Setting_USBBoot.html → https://digitaloceancode.com/
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

パスワードに使ってはいけない記号

パスワードに使ってはいけない記号  パスワードを推測されにくいものとする、という口実で記号を入れることが推奨されている。ただしどうやら誰かの思いつきを無批判的に踏襲しているようで、なぜなら使ってはいけない記号があることについて誰も述べていない。  パスワードとしては使えるが、実運用では使えないという記号、あるのだ。 ;(セミコロン) である。  セミコロンを含むパスワードに変更は可能である。が、シェルスクリプトはそれを扱ってくれない。シェルは論理的には2行に渡る入力を物理的に1行で受け付ける事ができる。そのとき;(セミコロン)を改行の記号とみなす。つまりシェルへの命令の中に;(セミコロン)があればシェルはそこで2行に分けて取り扱うのだ。  であるからシェルスクリプト中で「パスワードを入れてログイン(リモートなりsuなりで)」している場合、そのパスワードに;(セミコロン)が入っていると、;(セミコロン)までを一つの命令とみなし、つまり間違ったパスワードを入力したと判断するのだ。;(セミコロン)のあとに'del *'があるなんてパスワードでなくて本当に良かった。  実績のあるシェルスクリプトがいきなり止まって!なぜだろう?1分で気がついたことは褒めてくれ、ひょっとしてパスワードに制御文字が入っているのではなかろうか?でもエスケープシーケンスを使えば行けそうな気がするだろ。;(セミコロン)だけはダメみたいだ。コーテーションでくくっても受け付けてもらえない。  ではなぜパスワード変更は受け付けたのか?疑問が湧くよね。簡単だ、シェルを通してないからだ。つまりpasswdコマンドでパスワードを変更しようとすると、そのときターミナル画面に出てくるのは 新しいパスワード: 新しいパスワードを再入力してください: である。ここで見慣れたプロンプト、つまり(シェルやユーザーによって違いはあるが) コマンドを打つのはここだよ、と表示される#とか$とかいう文字がパスワード変更では出てこない。つまりシェルを通してないのだ。だからシェルでは行の切れ目とみなされる;(セミコロン)があっても受け付けてくれるわけである。  このくらいのこと誰か警鐘を鳴らしているかと思ったのだが、いない?まあ無意識的に避けるだろうなあ。事実上の素人でなければ。  ということで  &(アンパーサンド), ;(セミコロン)、 `(バックコーテーション)、'(シングルコーテーション)、"(ダブルコーテーション)、\(バックスラッシュ)、|(パイプ)、~(チルダ)、<(リダイレクション)、>(リダイレクション)、{(ブレイス)、}(ブレイス)は避けたほうが無難でしょう。  え、bashのメタ文字はもう1種あるでしょって?  確かに()があるのだが、記号の読みを書く時に使っちゃって・・・これがメタ文字が生まれた理由なのだろうなあ。  これ、UNIXの世界特有のものかもしれません。でもそれ以外の人にも知っといてほしいと思って最後まで伏せておきました。なのでUNIXを使わない人も、パスワードにはそれ以外の記号を使うようにしましょう。(UNIXからWindowsにシェルスクリプトでログインすることはまずないと思いますが。)  それでも*(アスタリスク)を使いたいという人はいなだろうなあ。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む