カテゴリーアーカイブ Linux

takahashi 著者:takahashi

Linux系OSでタイムゾーンを変更する方法

OSに設定されているタイムゾーンが自分の使用したいものと異なっている場合、数時間時刻がずれてしまうことになるので、いろいろ困ることがあります。

そういった場合はタイムゾーンを設定しなおさないといけません。

Linuxでのタイムゾーンの変更方法をご紹介します。

/usr/share/zoneinfo

を見ると

$ ls /usr/share/zoneinfo
Africa      CET      Egypt    GMT+0      Iran       MST7MDT  Pacific    UCT          leap-seconds.list
America     CST6CDT  Eire     GMT-0      Israel     Mexico   Poland     US           localtime
Antarctica  Canada   Etc      GMT0       Jamaica    Msft     Portugal   UTC          posix
Arctic      Chile    Europe   Greenwich  Japan      NZ       ROC        Universal    posixrules
Asia        Cuba     Factory  HST        Kwajalein  NZ-CHAT  ROK        W-SU         right
Atlantic    EET      GB       Hongkong   Libya      Navajo   Singapore  WET          zone.tab
Australia   EST      GB-Eire  Iceland    MET        PRC      SystemV    Zulu         zone1970.tab
Brazil      EST5EDT  GMT      Indian     MST        PST8PDT  Turkey     iso3166.tab

あらゆるタイムゾーンの設定が書かれたファイルが置かれています。

これらは名前のタイムゾーンの設定がそれぞれ入っているので、設定したいタイムゾーンファイルのリンクを/etc/localtimeとして張ります。

ln -sf  /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

(日本語時間に設定する場合)

ただ、この設定では再起動時に変更する前のタイムゾーンに戻されてしまうようなので、永続化させるためには
/etc/sysconfig/clock
下記のように変更します。

ZONE="Asia/Tokyo"
UTC=false

これで設定完了です。

【Linux】タイムゾーン(Timezone)の変更 – Qiita

  • この記事いいね! (0)
著者:杉浦

【Linux】複数ディレクトリにまたがって特定の正規表現に当てはまるの最新のファイル一つのパスを得るコマンド

 Linuxのコマンドはかなり機械語に近いところで最適化されており高速です。PHPのファイルシステムを介していては遅いと言わざるを得ないような場面でもコマンドをexecすれば高速です(プログラム実行関数を扱う際は文字列のエスケープなど対策を忘れないようにする必要があります。任意コード実行のセキュリティホールに繋がるので細心の注意が必要です)。
 とある単一のディレクトリの中で最新をとってくるのは簡単です。

ls -lt ./* | grep -e \.ほしいファイルの拡張子$ | head -n 1| awk '{print $NF}'

lsコマンドのtオプションはファイルを最終更新日時順に表示します. grepでほしいファイル種別に表示を絞り込みます。headコマンドの-n 1で最初の一行のみの表示を取得します。awkの$NFには区切られた文字の内の最後が入ります。結果次の様にファイルのパスが出力されます。

複数ディレクトリはちょっと手間です。ls dirA/* dirB/*とするとディレクトリごとの結果が出てくるのでまとめてソートする必要があります。

ls -l --full-time dirA/* dirB/* dirC/* | grep -e \.ほしいファイルの拡張子$ | sort -k 6,7 -r | head -n 1| awk '{print $NF}'

lsの–full-timeオプションで日時表示をソートしやすい形(なしだと月日で手間)にして出力。sortで6,7列目(-k 6,7)の日時を降順(-r)でソートします。最後はディレクトリ一つの時同様にhead -n 1| awk ‘{print $NF}で完成です。

  • この記事いいね! (1)
takahashi 著者:takahashi

Kali Linuxの言語を日本語化する方法

ペネトレーションテストツールを多数収録している、セキュリティ系ハッカー御用達(クラッカーではない(←重要))のLinuxディストリビュージョンとして有名なKali Linuxですが、実はWindowsのWSLでも利用可能になっています。

このWSL版Kali Linuxですが、以前ご紹介したWSL版Ubuntuと同様、デフォルトでは言語が英語になっていますが、日本語化を行うこともできます。

ただし、同じDebian系とはいえUbuntuと手順が異なっているので注意です。

Kali Linuxで日本語化を行うには”locales”というパッケージが必要です。

入っていない場合はまずインストールをします。

sudo apt update
sudo apt install locales

locales のインストールが完了したら、下記のコマンドを実行します。

sudo dpkg-reconfigure locales

下記のような画面が出てくるので、ja_JP.UTF-8 UTF-8 を選択します。(スペースキーで選択できます。)

選択したらTABキーを押して<OK>の部分が赤くなったらEnterキーを押します。

次にシステムの標準言語を選択する画面が表示されますので、

こちらでも”ja_JP.UTF-8″を選択し、Tabキー->OKでエンターキーを押します。

これで設定完了です。

あとは一度ターミナルを開きなおし、何かコマンドを実行すると…

日本語に対応しているコマンドであればバッチリ日本語に切り替わっています。

Kali Linuxを日本語で使いたい方はぜひ試してみてください。

Change language of installed Kali

Docker debian系のlocaleを日本語化する – Qiita

  • この記事いいね! (0)
著者:ym

mysql コマンドで環境変数

mysql コマンドを使用する際、プロセス一覧にパスワードが載るのをさける為、.my.cnf に記述するかプロンプトで入力していましたが、もう一つ発見しました。一時的なバッチ用途としても利用できますね。

それは環境変数 MYSQL_PWD です。UNIXで生活している方だったら普通、調べなくても感づくよね。

setenv MYSQL_PWD ‘*******’
mysql -u $USER $USER

csh系

export MYSQL_PWD=’********’
mysql -u $USER $USER

sh系

MYSQL_PWD=’*******’ mysql -u $USER $USER

sh系

ただ、COLUMNS=1000 ps axufe とか実行すると、おそらくパスワードが載るし、環境変数セットしたまま httpd とか起動しちゃいそうなので気をつけないと。単発的なコマンド操作用途には便利ですね。

  • この記事いいね! (0)
takahashi 著者:takahashi

macOS 10.14.5 でついに令和に対応

本日、公開された最新バージョンのmacOSのアップデートで、macOSの令和への対応が完了したというニュースが流れてきました。

Windows同様、macOSも令和元年を迎えるまでに令和に対応することができていない状況でした。

ちなみに、対応していないmacOSでUTF-8コードの平成の次の年号を表示させようとすると”平成の次”という表示が出ていたとかいないとか。

ちなみのちなみに、Windowsは5/2にWindows10 ビルド1809に対して公開したアップデートで令和に対応しているようですでに利用できるようです。

Microsoft、新元号“令和”対応パッチを「Windows 10 バージョン 1809」にも提供 – 窓の杜

一方Linu系OSがどのようになっているか気になるところですが、主要なディストリビューションの一つであるUbuntuでは、OSのバージョンアップは定期的な間隔でリリースされるようになっていて、時期的に対応されるのでは次のリリースである”19.10″以降になるのではないかという見解になっているようです。

第567回 令和を言祝ぐ – Ubuntu Weekly Recipe

ということでITの世界に令和が浸透するまでにもうしばらく時間がかかりそうです。

  • この記事いいね! (0)
takahashi 著者:takahashi

Windowsのbashコマンドで起動するWSLのディストリビューションを切り替える方法

Windows Subsystem on Linux(WSL)では、複数のディストリビューションをインストールすることが可能になっていますが、cmdのbashコマンドから直接起動できるディストリビュージョンは1つのため、自分が使いたいディストリビュージョンがbashコマンドに紐づけされていない場合はちょっと不便です。

通常は一番最初に導入したディストリビュージョンがbashコマンドに 紐づけされますが、wslconfig コマンドを使うことで
紐づけるディストリビューションを切り替えることができます。

まず、現在の設定を確認してみます。

wslconfig /l
Windows Subsystem for Linux ディストリビューション:
kali-rolling (既定)
Ubuntu-16.04

このように、インストール済みのディストリビューションの一覧が表示されます。
このうち、(既定)と書かれているものがbashコマンドで起動するディストリビューションです。

これを切り替えるには、次のように入力します。

wslconfig /s ディストリビューション名

今回の場合は、例えば次のように指定してみます。

wslconfig /s Ubuntu-16.04

もう一度確認します。

> wslconfig /l

Windows Subsystem for Linux ディストリビューション:
Ubuntu-16.04 (既定)
kali-rolling

> bash -c "cat /etc/os-release"

NAME="Ubuntu"
VERSION="16.04.6 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.6 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial

無事切り替わりました。

  • この記事いいね! (0)
takahashi 著者:takahashi

[備忘録]dockerインストール手順(CentOS7)

参考:CentOS7にDockerをインストールする – Qiita
Docker Composeのインストール方法(CentOS7.3) – Qiita
CentOS7 に pip と awscli をインストール -set setting reset

#docker-ce
sudo yum remove docker docker-common docker-selinux docker-engine
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum makecache fast
yum list docker-ce.x86_64 --showduplicates | sort -r
sudo yum install docker-ce-17.06.0.ce-1.el7.centos
sudo yum install docker-ce
sudo systemctl start docker
sudo systemctl enable docker
sudo docker run hello-world #動作テスト

#docker-compose
sudo yum install epel-release
sudo yum install python-pip
pip install docker-compose

殆ど上記のコマンドをそのまま実行するだけで最低限のセットアップはできました。

すんなり入ってくれたのでうれしいですね。

#Core OSも試してみたのですが仮想マシン上でのブートでコてたので、こっちの方が簡単かもですね…

  • この記事いいね! (0)
takahashi 著者:takahashi

Windows Subsystem on Linux(WSL)版Ubuntuを日本語化する方法

MicrosoftストアからインストールするだけでLinux環境(CUI)が使えてしまう画期的なWindows Subsystem on Linux(WSL)ですが、初期状態では

このようにすべて英語になっています。

もっとも、慣れている方であれば、英語表記であったとしても恐らくあまり問題はないかと思いますが、初心者の方や、何らかの理由で日本語で表示させたいこともあるかと思います。

ありがたいことに、Linux(特にUbuntu)はもともと日本語のサポートが結構手厚いことが多いので、簡単に日本語化できます。

まず、bashコマンドやWindows側のショートカットなどでWSL(Ubuntu)を起動します。

次のコマンドを入れます。

#日本語パッケージをインストール
sudo apt -y install language-pack-ja

システムのデフォルト言語を切り替え
sudo update-locale LANG=ja_JP.UTF8
sudo update-locale --reset
sudo update-locale LANG=ja_JP.UTF-8 LANGUAGE=ja_JP.UTF-8

ここまで完了したら、WSLのウインドウを開きなおします。
これでセットアップ完了です。

こんな風に、コマンドの表記が日本語に変わっていることがわかるかと思います。

今回はUbuntuで試してますが、Linuxであれば何かしらの日本語化方法は用意されているかと思いますので、”英語がネックで…”という方は調べてみると使いやすい環境が手に入るかもしれません。

こちらのブログでも、また他のディストリビューションの日本語化方法も紹介したいと思います。

  • この記事いいね! (0)
takahashi 著者:takahashi

Ubuntu 18.04で廃止されたgksuを使わずに、GUIアプリを管理者権限で実行する方法

Linuxに置いてのGUIアプリを管理者権限で起動する方法に”gksu”というコマンドを経由するという方法が以前はありました。

ターミナルからであれば非推奨ながらも “sudo -H” コマンドなどで起動できたのですが、例えばGNOMEなどから直接ショートカットで実行したい場合などでは、ターミナルが開かないためパスワードが入力できないという問題があります。

gksuコマンドではsudoと同じように権限の昇格を行ってくれる上、GUIのフロントエンドも表示してくれるので、ターミナルを経由せずに管理者権限でアプリやコマンドを実行させることが可能でした。

ところが、このgksuが本家debianのリポジトリから削除されたことに伴い、Ubuntu でも バージョン18.04で削除されてしまいました。

$ sudo apt install gksu
[sudo] hoge のパスワード: 
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
パッケージ gksu は使用できませんが、別のパッケージから参照されます。
これは、パッケージが欠落しているか、廃止されたか、または別のソース
からのみ利用可能であることを意味します。

E: パッケージ 'gksu' にはインストール候補がありません

よって今後は、gksuコマンドを使ってGUI上から管理者権限でアプリを起動することができません。

これでは困ってしまうので、代替策をいろいろ調べたところ、下記記事を発見。

Linux Mint 19: 「’gksu’ not found」 廃止された gksu の代わりの方法 – 221B Baker Street

どうやら、代わりに”pkexec”コマンドを利用すればいいようです。

ただし、このコマンドをgksuのようにGUIで利用できるようにするには

pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY コマンド

のようにする必要があるようです。

しかし、これを毎回打つのはかなり面倒なので、aliasへ登録しておきます。
上記の記事では

alias pkexec='pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY'

のようにpkexecを上書きすることをお勧めされていましたが、これだとオプション無しの”pkexec”コマンドが使えなくなってしまいますので、僕の場合はこのようにしました。

alias gksu='pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY'

こうしておけば、もはや存在しなくなったgksuコマンドでオプション付きのpkexecが呼び出せますし、新しいコマンドを覚える必要もないので便利です。

aliasの効果は一時的なので、永続化させるためにこの記述を、

~/.bashrc

ファイルの最終行あたりに追記しておきます。

こうすることで、ログインするたびに.bashrcに記述したaliasコマントが実行されるので、常に使用することが可能になります。

ただし.bashrcはGNOMEのようなデスクトップ環境から直接呼び出されないので、
(例えばショートカットを作成してダブルクリックだけで起動したい場合などで) GUIから直接aliasで作ったgksuコマンドをたたいても、先ほどのaliasが設定されていない為存在しないコマンドとなり実行できません。

そこで、先ほどのオプション付きpkexecコマンドをシェルスクリプトファイルに書き、パスが通っている場所(/usr/local/binなど)に置いて、普通のコマンドとして扱えるようにしてしまいます。

例えば、

vi /usr/local/bin/gksu

のようにして、次のように記述して保存します。

#!/bin/bash

pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY $1

こうすることで、gksu コマンド を実行したときに、コマンドが$1に渡されるので目的の動作をさせることができますし、パスが通ったディレクトリに置くことで、どのディレクトリからもコマンドとして実行できます。

つまり、GNOMEのようなデスクトップ環境上でも、直接自作の”gksu”コマンドが実行できるようになります。

gksuが使えなくてお困りの方は是非一度試してみてください。

  • この記事いいね! (2)
takahashi 著者:takahashi

WSLでWindows側のドライブをマウントする方法

Windows上でLinuxの環境を動作させることができるWindows Subsystem for Linuxですが、実は外部ドライブを接続した際、自動で認識してくれない仕様になっています。

恐らく、自動でマウントしてしまうと、取り外すときにややこしいことになる(安全な取り外しができなくなるなど)可能性があるのが理由なのだとは思いますが、そうは言ってもWSLから外付けドライブに直接アクセスしたいときももちろんあります。

実は、自動的にマウントはされないものの、デバイスを接続後にWSL上からコマンドでマウントを行うことが可能です。

Windows 10の「WSL」でネットワークドライブなどをマウントする – @IT

次のようにコマンドを入力します。

#(まだない場合は)マウント先のディレクトリを作成
mkdir -p ディレクトリのパス
#作成したディレクトリに実際にデバイスをマウント
mount -t drvfs デバイス名 マウントポイント(ディレクトリ名)

デバイス名は、マウントする対象のドライブ、マウントポイントはマウント先をそれぞれしていします。

例えば、Windows上の”E ドライブ “をWSLにマウントしたい場合、

mkdir -p /mnt/e #ない場合のみ
mount -t drvfs :E /mnt/e

のようにすればマウントされ、WSL上では /mnt/e の中に外部ストレージの中身が入った状態になります。

外すときは

umount /mnt/e

でマウントを解除できます。

マウントの自動化などの詳しい操作方法は上記の参考サイトを参考にしてください。

  • この記事いいね! (0)