Linux

[Linux] ファイルの行数や文字数をカウントする – wc

ファイルの文字数や行数を簡単にカウントできるのがwcコマンドです。
恐らく「Word Count」の略称で、ワールドカップでもトイレでもありませんw

以下のように調査したいファイルのパスを渡すと、ファイルの行数、単語数、バイト数を表示してくれます。

$ wc Linux*.md
      45      86    2384 Linuxの使い方.md
     392    1223   12589 Linuxコマンド.md
      17      17     343 Linux上のアカウント.md
     454    1326   15316 total

注意点として、ファイルの文字コードはUTF-8、改行コードをLFにしておくと安全に(正しく)集計が行えます。

続きを読む

[Linux] ディレクトリをツリー状に表示する – tree

今回は以下のようにディレクトリやファイルをツリー状に表示してくれるtreeコマンドです。

$ tree .
.
├── LICENSE.txt
├── README.md
├── bin
│   └── gpwd.js
├── coverage
│   ├── clover.xml
│   ├── coverage-final.json
│   └── lcov.info
├── index.js
├── package-lock.json
├── package.json
└── test
    └── genPassword.test.js

続きを読む

[Linux] yumで特定パッケージのバージョンアップを阻止する

ローカルでの検証用にVirtualBox上でLinuxを動かしているのですが、迂闊にkernelのバージョンを上げてしまうとGustOS用のドライバ(Guest Addition)の再インストールが高確率で発生します。それは良いのですが、問題は再インストールが一発で上手くいった試しがなく、大抵ドハマリして長時間作業が止まる羽目になるんです。

というわけでyum updateの対象にならないよう設定を行います。

設定

以下のように/etc/yum.confに1行書き足せばOK。

$ sudo vi /etc/yum.conf
exclude=kernel*

excludeの横にyumでアップデート対象にしてほしくないパッケージ名を指定するだけです。アスタリスク(*)はワイルドカードを意味し、この場合だとkernel-develなどkernelで始まるものをすべて対象とします。

他に追加したい物があれば、スペースで区切って横に追記してやります。

$ sudo vi /etc/yum.conf
exclude=kernel* php*

続きを読む

[Linux] パスワードを変更する – passwd

Linux上のユーザーのパスワードを変更するにはpasswdコマンドを利用します。

実行例

自分のパスワードを変更する

自分のパスワードを変更する場合、管理者権限(root権限)は不要です。

$ passwd
ユーザー katsube のパスワードを変更。
katsube 用にパスワードを変更中
現在の UNIX パスワード:
新しいパスワード:
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。

一般的にUNIX系OSでは入力したパスワードは画面上には表示されません。入力した桁を表現するアスタリスク(*)もです。悪意を持った第三者が背中越しに盗み見る「ショルダーハッキング」を行われた際の防御のためです。

この例のようにpasswdは自分自身のパスワードの変更はもちろんですが、管理者権限(root権限)があれば他のユーザーのパスワードも変更できます。

続きを読む

[Linux] ユーザーを新規作成する – useradd

Linux上にユーザーアカウントを新規に作成するコマンドはuseraddです。

$ sudo useradd -m (ユーザー名)

細かい設定の変更は作成後にいつでも行うことができるので、オプションを指定し忘れた場合は各種設定を行うコマンドを追加で実行すれば大丈夫です。作成したばかりならユーザーを削除してももちろんOKです。

続きを読む

[Linux] ユーザーを削除する – userdel

Linuxで作成済みのユーザーを削除するにはuserdelコマンドを実行するだけです。

$ sudo userdel -r (ユーザー名)

なお特に確認は求められず、Enterキーを押した瞬間削除されますので実行には十分気をつけてください。

続きを読む

[Linux] MD5の値を大量にチェックする

小ネタです。
例えばsplitコマンドなどで分割したファイルをダウンロードした際に、一つ一つMD5の値を確認するのはダルいですよね。md5sumコマンドでは、予め検証したいファイルのパスとそのMD5の値をペアで記述されたファイルを用意しておくと、一発で確認することでができます。

定義ファイルは以下のようにMD5値と、ファイルのパスを半角スペースなどで区切って書きます。

$ cat MD5SUM
f64062373f79e3fdabed57f6aec6d54d data/foo.zip.1
89063c79371e866afe627ddc221d3a9e data/foo.zip.2
993e1252af0e1fbd2435dcadd2a9fead data/foo.zip.3

あとは-cオプションでこの定義ファイルを渡せば自動的にチェックしてくれます。

$ md5sum -c MD5SUM
data/foo.zip.1: OK
data/foo.zip.2: OK
data/foo.zip.3: OK

続きを読む

[Linux] Bashでwgetの戻り値をチェックする

小ネタです。
シェルスクリプトを書いている際にwgetで正常にファイルをダウンロードできた場合のみ処理を継続したい場合には次のようなコードを書きます。

#!/bin/bash

wget 'https://example.com/foo.zip'

if [ $? -ne 0 ]; then
  echo "[ERROR] 正常にダウンロードできませんでした"
  exit 1
fi
  • $?は直前のコマンドの実行結果が自動的に入ります。
  • 比較演算子の-nenot equalの略で、値が等しくない場合に使用します。

続きを読む

[Linux] メモリ上に高速なディスクを作成する – tmpfs

Linuxでいわゆる「RAMディスク」を作成してみます。
HDDは情報の読み込みでも書き込みでも物理的な速度でメモリにはかないません。で、あるならばメインメモリの一部をHDDに見せかけることができれ5ば超高速なストレージとして使えるのでは!という発想ですね。Linuxではtmpfsと呼ばれる仕組みを利用することで手軽に利用できます。

もちろん、メモリ上にデータを置きますので電源を落とした瞬間にすべてが失われます。主にキャッシュなど一時的な利用が中心になると思われます。

続きを読む

[Linux] コマンドラインでHTTP通信を行う – Telnet編

HTTP/1.1まではサーバクライアント間の通信内容がテキストでのやり取りのため、人間が手作業でサーバと直接やるとりすることが可能です。HTTPの勉強はもちろんですが、開発時にGoogleChromeなどWebブラウザや便利ライブラリによってブラックボックス化されないため純粋な通信状況を確認する際に役に立ちます。

今回は古来から伝わるtelnetコマンドで行う方法を試してみます。
続きを読む

[Linux] ログイン中ユーザーの一覧を表示 – who, w

who

whoコマンドを利用します。

$ who
katsube  pts/0        2019-03-29 18:27 (210.160.37.89)
katsube  pts/1        2019-03-29 18:29 (210.160.37.89)
katsube  pts/2        2019-03-29 18:30 (210.160.37.90)

w

wコマンドではユーザー一覧に加えて、ユーザーが実行しているプロセス名なども表示してくれます。

$ w
 18:30:03 up  9:14,  3 users,  load average: 0.22, 0.16, 0.10
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
katsube  pts/0    210.160.37.89    18:27    2:18   0.00s  0.00s -bash
katsube  pts/1    210.160.37.89    18:29   14.00s  0.01s  0.01s top
katsube  pts/2    210.160.37.90    18:30    2.00s  0.00s  0.00s w

続きを読む

[Linux] ポートスキャンを行う – nmap

不必要にポートを開放していると、そこからアタックを仕掛けられることがあります。
またSSHを22番などデフォルトのポートで開放している場合もターゲットにされやすいため、別のポート番号にしておくのも定石だったりもします(諸説ありますが個人的にはピンポンダッシュを防げるのでいつも変更しています)。

不特定多数がアクセスできる状態にあるサーバや端末は、少なともリリース前にはポートスキャンをかけておくのがおすすめです。

nmapのインストール

macOSの場合はbrewで一発です。

$ brew install nmap

Linuxなどの場合はyumで一発です。

$ sudo yum install nmap

続きを読む