KaliLinuxのGUIをWSL2で使用
普段使いのLinuxとして、Windowsから起動できるKaliLinuxを構築していく
Windows11のWSL2で、KaliLinuxのX-Window GUIを簡単に起動できる
マルチブートや仮想化あるいはUSBメモリへのインストールなどよりも、手軽に構築できる
PowerShellでKaliLinuxのインストール
PS> wsl --set-default-version 2
PS> wsl --install -d kali-linux
PowerShellでWSLのバージョン確認
PS> wsl -l -v
PS> wsl -l -v
NAME STATE VERSION
* Ubuntu-20.04 Stopped 2
kali-linux Running 2
Ubuntu-18.04 Stopped 1
Debian Stopped 1
PowerShellでWSLのバージョン変更
PS> wsl --set-version <Distro> <Version>
PS> wsl --set-version kali-linux 2
PowerShellでWSLの再起動
PS> wsl --shutdown
KaliLinux アップデートコマンド
content | comand |
---|---|
バージョン確認 | $ sudo cat /etc/os-release |
アップデート | $ sudo apt update |
アップグレード | $ sudo apt upgrade |
フルアップグレード | $ sudo apt full-upgrade |
最新版に強制的にフルアップグレード | $ sudo apt full-upgrade -y |
不要パッケージ削除 | $ sudo apt autoremove |
不要debファイル削除 | $ sudo apt autoclean |
再起動 | $ sudo reboot |
KaliLinux sources.list 編集
個別アプリケーションのインストールに失敗する場合などは、リポジトリを変更してみる$ cat /etc/apt/sources.list
deb http://http.kali.org/kali kali-rolling main non-free contrib
#deb-src http://http.kali.org/kali kali-rolling main non-free contrib
#deb https://docs.kali.org/general-use/kali-linux-sources-list-repositories
#deb http://ftp.yz.yamagata-u.ac.jp/pub/linux/kali kali-rolling main non-free contrib
今回はリポジトリの変更は必要なく、デフォルトのhttp://http.kali.org/kaliに戻して実行した
WSLネームサーバー設定
WSLを起動する度にネームサーバーがリセットされる場合の対策
WSL設定ファイルを編集
wsl.conf 又は .wslconf ファイルを編集する
ファイルが存在しない場合は作成する
generateResolvConf = false とすることで、resolv.conf が上書き作成されなくなる
$ sudo touch /etc/wsl.conf
$ sudo nano /etc/wsl.conf
# /etc/wsl.conf
[automount]
enabled = true
root = /mnt/
options = ""
mountFsTab = true
[network]
generateHosts = true
generateResolvConf = false
[interop]
enabled = true
appendWindowsPath = true
WSLネームサーバー設定
resolve.conf ファイルにネームサーバー情報を記載し、シンボリックリンクを削除して上書きを禁止する
ファイルが存在しない場合は作成する
$ sudo touch /etc/resolv.conf
$ sudo nano /etc/resolv.conf
$ sudo unlink /etc/resolv.conf
$ sudo chattr +i /etc/resolv.conf
# /etc/resolv.conf
nameserver 192.168.11.1
nameserver 8.8.8.8
Windows再起動
WSLの設定変更は、Windows再起動後に反映される
インストールしたアプリケーション
Kex (X-Window GUI)
$ sudo apt install kali-win-kex
SSHクライアント
$ sudo apt-get install openssh-server
LibreOffice
$ sudo apt-get install libreoffice
Gimp
$ sudo apt-get install gimp
KaliLinuxの日本語入力
日本語入力のインストール
Xfceデスクトップの日本語入力ツールとして、uim-mozc、ibus-mozc、fcitx-mozcをインストールし、fcitx5を使用していく$ sudo apt update
$ sudo apt install -y task-japanese task-japanese-desktop
fcitx-mozc初期設定
Kaliアイコン / Settings / InputMethod(白アイコン)
fcitxをオンにしてKaliLinuxを再起動
キーボード設定
Kaliアイコン / Settings / Fcitx5Configuration / InputMethod
OnlyShowCurrentLanguageをオフ
Keyboad-japanese と Mozc を ← 左へ選択
Kaliを再起動
漢字キー設定
Kaliアイコン / Settings / InputMethod(青アイコン) / GlobalSettings
SpecifyDefaultIM チェックボックをオン
DefaultInputMethod を Direct
EnabledInputMethods を Mozc
EnabledIMSうぃtちんgByHotkey をオン
IMSwichingKey はEdit選択しGrab欄に “zenkaku-hankaku”, “space” を入力
EnableInputMethodToggleByHotKeys をオフ
ローマ字入力設定
Kaliアイコン / Settings / InputMethod(青アイコン) / Mozc
DefaultInputMode を Hiragana
DefaultKanaInputMethod を Romaji
Kaliを再起動
Kex起動
モード | コマンド | 説明 |
---|---|---|
Windowモード | $ kex --win -s -m | 仮想マシンで起動したようにVNCのウィンドウの中に表示 |
Seamlessモード | kex --sl -s | WindowsとKaliを同時表示、Kaliツールバー |
Enhanced Sessionモード | kex --esm --ip -s | Windows標準搭載のRDPで接続、高DPI、ARMデバイス |
BASH: テキストファイルの読込と文字変換一括処理
stringBatchReplaace.sh
#!/bin/bash
# stringBatchReplaace.sh
# 作業ディレクトリの定義
DIR=./
# 作業ディレクトリ内の.txtファイルに対して、文字一括変換処理後、*_edited.txtファイルとして保存
for pathfile in $DIR/*.txt; do
echo $pathfile
edit=${pathfile%.*}_edited.txt
cp -f $pathfile $edit
echo "。の後に改行コードを挿入"
sed -i -e 's/。/。\r\n/g' $edit
echo "あのーを削除"
sed -i -e 's/あのー//g' $edit
echo "えっとを削除"
sed -i -e 's/えっと//g' $edit
echo "えーとを削除"
sed -i -e 's/えーと//g' $edit
echo "えーを削除"
sed -i -e 's/えー//g' $edit
done
exit
[CentOS/Samba/Bash] ディレクトリ、グループ、ユーザー、Sambaユーザー、シェルスクリプトで一括登録
前提条件
- CentOS 7.8 インストール済み
- Samba 4.0 インストール済み
ディレクトリ一括作成
複数のディレクトリを一括作成する場合、directorylist.dat にディレクトリのリストを作成し、シェルスクリプトでバッチ処理するmakedirectory.sh
#makedirectory.sh
#!/usr/bin/bash
echo -e "Make Directory is Started\n"
while read row; do
column1=`echo ${row}`
echo -e "パス ${column1} のディレクトリを作成します"
mkdir ${column1}
echo -e "作成完了しました\n"
done < directorylist.dat
# 所有者の変更と結果確認
chown -R username01:groupname01 /home/group-share/
ls -la /home/group-share/
directorylist.dat
/home/group-share
/home/group-share/株主総会
/home/group-share/取締役会
/home/group-share/内部監査
/home/group-share/社長室
/home/group-share/社長室/経営企画課
/home/group-share/営業部
/home/group-share/営業部/営業課
/home/group-share/営業部/支援課
/home/group-share/管理部
/home/group-share/管理部/総務課
/home/group-share/管理部/経理課
/home/group-share/管理部/人事課
/home/group-share/情報システム部
/home/group-share/情報システム部/設計開発課
/home/group-share/情報システム部/保守管理課
グループの一括作成
複数のグループを一括作成する場合、linuxgrouplist.dat にグループIDとグループ名称のリストを作成し、シェルスクリプトでバッチ処理するgrjoupadd.sh
#groupadd.sh
#!/usr/bin/bash
echo -e "Group Add is Started\n"
while read row; do
column1=`echo ${row} | cut -d , -f 1`
column2=`echo ${row} | cut -d , -f 2`
echo -e "group id : ${column1} , groupe name : ${column2}"
groupadd -g ${column1} -o ${column2}
echo -e "Registration completed\n"
done < linuxgrouplist.dat
# グループの登録結果確認
cat /etc/group
linuxgrouplist.dat
100001,groupnmame01
100111,stockholders-div
100112,directors-div
101001,manage-dep
118013,accounting-sec
119032,infomation-sec
118024,business-sec
ユーザーの一括作成
複数のグループを一括作成する場合、linuxuserlist.dat にグループIDとグループ名称のリストを作成し、シェルスクリプトでバッチ処理するnewusers コマンド
# newusers linuxuserlist.dat
# cat /etc/passwd
linuxuserlist.dat
- ユーザー名はLinuxユーザーとSambaユーザーで合わせる
- Linuxグループを先に作成しておく
- ユーザー名:パスワード:ユーザーID:グループID:GCOS(コメント):ホームディレクトリ:シェル
linuxuserlist.dat
# linuxuserlist.dat
ABEKAWA:9Hwle39j:117007:117007::/home/ABEKAWA:/usr/bin/bash
username01:password01:18001:30301::/home/username01:/usr/bin/bash
username02:password02:18002:30301::/home/username02:/usr/bin/bash
username03:password03:19003:30311::/home/username03:/usr/bin/bash
username04:password04:20011:20201::/home/username04:/usr/bin/bash
username05:password05:21035:40401::/home/username05:/usr/bin/bash
sambaユーザーの一括登録
たくさんのsambaユーザーを一括登録する場合、予めユーザー・パスワードリストテキストファイル(sambauseerlist.dat)に作成しておき、それを読込んで1行ずつループ処理させていくシェルスクリプトを作成sambauseradd.sh
#sambauseradd.sh
#!/usr/bin/bash
echo -e "Samba User Add is Started"
while read row; do
column1=`echo ${row} | cut -d , -f 1`
column2=`echo ${row} | cut -d , -f 2`
echo -e "username : ${column1} , password ${column2}"
echo -e "${column2}\n${column2}" | pdbedit -a -t -u ${column1}
echo -e "${column1} has been registered to Samba\n"
done < sambauserlist.dat
# sambaユーザーの登録結果確認
pdbedit -L
sambauserlist.dat
- ユーザー名はLinuxユーザーとSambaユーザーで合わせる
- ユーザー名,パスワード
# sambauserlist.dat
ABEKAWA,9Hwle39j
username01,password01
username02,password02
username03,password03
username04,password04
username05,password05
username06,password06