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

Linux サーバ設定

Linuxは、1つのマシンへ複数のユーザーが同時にログインして
操作することを前提として作られているので
他のユーザーから編集できないようにする設定について書きます。

ユーザーの設定

ユーザーは基本一般とrootに分けられています。
ファイルに対して権限レベルの違があります。

SSHでリモートサーバにログインするときにユーザー名を指定してログインすることで
リモートサーバでの権限を調整することができます。

rootユーザーはサーバ上の全てのファイルの閲覧することができ
すべてのコマンド実行することができるので
SSHを使ってrootユーザーを使うことは避けましょう。

$ ssh root@ex.com
$ ssh gimei@ex.com

一般ユーザー

一般ユーザーは自分の許可されているファイルしか操作できません。

rootユーザー

root ユーザーには他のユーザーが所有するファイルも含めて、全ての制御権限があります。

管理者権限

一時的に管理者権限が必要になることや
サーバ内の他のユーザーに代わってコマンドを実行する必要な時のコマンドです。

sudo

現在のユーザーのまま他のユーザーに成り代わってコマンドを実行することができます。
ただし予めsudoが使える権限がそのユーザーに付与されている必要があります。

su

他のユーザーにログインし直す事ができます。
このコマンドはいつでも使うことができますが、成り代わろうとしているユーザーのパスワードが必要です。

所有者

ファイルには、その持ち主がいます。その持ち主を所有者と呼びます。
ファイルを作成すると、作成したユーザーがその所有者として設定されます。
所有者にだけ書き込み権限を与えておけば、そのファイルを他のユーザーに変更される心配はありません。

パーミッション

ファイル、またはディレクトリに対して「誰にどのような操作を許可するのか」という権限を規定した情報のことです。

所有者、その他のユーザーのそれぞれに対して、読み込み(r)、書き込み(w)、実行(x)
の権限を与えるものになります。

r(read) 読み込み権限

ファイルを開いて中身をみれる

w(write) 書込み権限

ファイル記述の追加と変更ができる。

x(execute) 実行権限

ファイルを実行、ディレクトリを開くことができる。

権限の確認

権限の確認はls -l [権限を確認したいファイルのパス]で確認できます。

$ ls -l [権限を確認したいファイルのパス]

例
$ ls -l projects/sample

出力結果
drwxr-xr-x  01 taka  main      748  1 01 12:12 sample

「誰にどのような操作を許可するのか」というのは、ターミナルに出力される
「 rwx r-x r-x 」の部分で確認できます。

下記に格項目を書くと

所有者

1桁目が、マスター権限を持っているユーザー。
読み込み権限(r)・書き込み権限(w)・実行権限(x)が可能です。

グループユーザー

2桁目がグループに属しているユーザー
読み込み権限(r)・実行権限(x)が可能です。

一般ユーザー

3桁目がその他のユーザー
読み込み権限(r)・実行権限(x)が可能です。

権限の数値の意味 r=4、w=2、x=1

それぞれの権限には、r=4、w=2、x=1 という数字が割り当てられています。
アクセス権限は、3桁の数字で表されます。
一桁ずつが権限を与える所有者、グループ、そして一般ユーザーを表しています。

1桁目が、マスター権限を持っているユーザー。
2桁目がグループに属しているユーザー。
3桁目がその他のユーザーです。
マスター権限とは、ファイルやディレクトリの所有権のことです。

そして、それぞれの桁の数字は、各ユーザーが所有しているアクセス権限の数値を足し合わせた値になります。

例えば、755という値について見てみましょう。
一桁目の7がr=4、w=2、x=1の合計になっていますね。
つまり、マスター権限を持っているユーザーが、読み、書き、実行、の全てを行うことができるという意味になります。

二桁目と三桁目は、共に5となっています。これは、r ( = 4 ) + x ( = 1 ) の合計ですので
つまりグループに属しているユーザーと、属していない一般のユーザーには、ファイルの読み込みと実行はできるけれど書き換える権限が与えられていないということになります。

権限の変更

chmod

アクセス権限を書き換えるためのコマンドです。
chmod [与える権限の種類] [権限を行使する主体]

$ chmod 777 sample/pictweet

権限の数値の意味より
7は全権限を許可するという意味で
3桁ともなってるいるということは

全てのユーザーに全権限を許可するという意味です。

chown

ファイルやディレクトリの所有者を変更するコマンドです。
chown [所有者][ファイル名・ディレクトリ名]という構成で入力します

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Flutter desktop embedding を Ubuntu にインストール&試してみる

Flutterで書いたアプリケーションをデスクトップ環境でも動かせるようにする、Flutter desktop embeddingをUbuntu 18.04環境で試してみたので、その手順をまとめておきます。

環境構築の手順

Flutter SDKインストール

リポジトリからcloneした後は、適当なパスに配置して、パスを通しておきます。

$ git clone https://github.com/flutter/flutter
$ sudo mv flutter /usr/local/
$ export PATH=$PATH:/usr/local/flutter/bin

Android Studioインストール

https://developer.android.com/studioからLinux版をダウンロードして適当な場所に置いて、インストールスクリプトを叩きます。

Android Studioのインストールで基本的には次へを押していく感じです。

$ wget https://developer.android.com/studio](https://developer.android.com/studio
$ sudo tar -xzvf android-studio-ide-191.5977832-linux.tar.gz -C /usr/local/
$ /usr/local/android-studio/bin/studio.sh でAndroid Studioをセットアップ

その他のインストール

サンプル実行(flutter run)時に必要になるので、clang++をインストールしておきます。

$ sudo apt install clang

Flutterセットアップ

ターゲット環境をHost PC (Ubuntu) にする設定を行います。参考

$ flutter config --enable-linux-desktop

ここまでの状況の確認

以下のコマンドを使うと、flutterを動かすためのインストール状況を診断してくれます。今回はサンプルを動かせればいいので、以下の状態でも大丈夫です。

$ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel master, v1.12.3-pre.49, on Linux, locale en_US.UTF-8)
[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
[✓] Linux toolchain - develop for Linux desktop
[!] Android Studio (version 3.5)
    ✗ Flutter plugin not installed; this adds Flutter specific functionality.
    ✗ Dart plugin not installed; this adds Dart specific functionality.
[!] VS Code (version 1.40.1)
    ✗ Flutter extension not installed; install from
      https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter
[!] Proxy Configuration
    ! NO_PROXY does not contain 127.0.0.1
[✓] Connected device (1 available)

! Doctor found issues in 3 categories.

サンプルを実行してみる

flutter-desktop-embedding取得

$ git clone https://github.com/google/flutter-desktop-embedding.git

サンプルを実行してみる

$ cd flutter-desktop-embedding/example
$ flutter run

もしくは、事前にビルドしておくなら以下。

$ flutter build linux
$ flutter run

ソースコードは./lib/main.dartみたいです。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Sabayon Linux 19.03 を実機インストールし日本語環境を構築する

#gentooinstallbattle も面白そう 1 ですが、今回は Gentoo 系ディストリビューション Sabayon Linux の日本語情報を増やします。

Screenshot_20191122_151835.png

Screenshot_20191121_185545.png

※ しばらく先になりそうですが、ある程度予定を消化したら Sabayon Wiki や docs.slackware.com への翻訳の寄贈を漠然と考え中。

はじめに

“Sabayon” はサバイヨンと読むらしいです 2 。イタリア語では “Zabajone” 。少なくとも「さばよん」ではなさそう。由来はイタリアやフランスの甘味。甘党としてはレビューせざるを得ない!

Screenshot_20191121_185433.png
※ 背景は plasma-workspace-wallpapers の Autumn 壁紙。かわええ (*´꒳`*)

使い勝手は Manjaro に近いかな?パッケージマネージャの出力が思いのほかカラフルで驚きました。ローリングリリースなのでアプデをさぼると更新パッケージが大量になる点も似ています。

Screenshot_20191121_194404.png

また、少し作業が必要ですが Entropy(equo) と Portage(emerge) の併用も可能であり、Portage 入門用 / Layman & overlays 入門用にも良いディストリかもしれません。

Screenshot_20191122_153923.png

ところで、インストーラでも広告が出ていましたが "Steam Meta" パッケージ 3 のインストールで Steam 一式が入ります。良い時代になりました。

Screenshot_20191121_184508.png
※ Steam は言語設定で日本語を選択すると UI を日本語で表示出来ます。

公式サイト/ドキュメント

19.03 リリースノート

https://www.sabayon.org/release/latest-stable-release-sabayon-1903/

公式サイト

https://www.sabayon.org/

寄付

https://www.sabayon.org/donate/

フォーラム

https://forum.sabayon.org/

IRC

https://www.sabayon.org/chat/
※ 時差はいかんともしがたいのです……(´・ω・`)

Wiki

https://wiki.sabayon.org/index.php?title=En:Main_Page
https://sabayon.github.io/wiki-next/

ダウンロード

https://www.sabayon.org/download/
https://www.sabayon.org/mirrors/

Bugzilla

https://bugs.sabayon.org/

Sabayon Entropy Store(パッケージ検索)

https://packages.sabayon.org/

Sabayon Community Repositories

https://sabayon.github.io/community-website/
https://github.com/Sabayon/community-website

blog

https://www.sabayon.org/blog/
※ 頻度低め

GitHub

https://github.com/Sabayon/

日本語の先行研究記事

Google 先生アヒルさんで Sabayon や Sabayon Linux をキーに検索

すぐに使えるGentoo系 Sabayon 19.03がリリースされたので、 | PC-FREEDOM
https://pc-freedom.net/today_pc_story/sabayon-19-03-release/

【2019年】初心者にオススメなLinuxディストリビューション - クロの思考ノート
http://note.kurodigi.com/linux-distro-2019/#idh452

もずくのSabayon Linux
https://sabayongentoo.blogspot.com/

Sabayon Linuxのセットアップ - Chienomi
https://chienomi.org/archives/livewithlinux/410

B5ノート Sabayon
http://b5note2150.blog.fc2.com/blog-category-10.html

Ubuntu使いがSabayonを試す - ponkotuyの日記
https://ponkotuy.hatenadiary.org/entry/20120117/1326828083

Linux 学習帳: Sabayon 9 64bit KDEを使ってみる。
https://tibiwan8-linux.blogspot.com/2012/07/sabayon-9-64bit-kde.html

Linux 学習帳: Sabayon linux10 gnome3(cinnamon)64ビット
https://tibiwan8-linux.blogspot.com/2013/01/sabayon-linux10-gnome3cinnamon64.html

雑感

実機インストールならではのあれやこれやがありました。

  • ハードウェア相性問題。手元のマシンは Video ドライバ周辺で少しハマりました。

    • CPU が AMDAPU でグラボが NVIDIA 。自動認識が混乱したっぽいです。
  • X や UI 周辺のアップグレードは X 上ではなく Linux コンソールから行うのが無難。

  • 実機運用の場合、不具合の素になっても困るので、 VirtualBox のカーネル及び X 向け Guest ドライバ 4 は削除しておくと良さそう。

  • Rigo は LANG=en_US.UTF-8 して使うが吉(現在日本語訳部分が恐らく機械翻訳である為)。
    Screenshot_20191123_102408.png
    Screenshot_20191121_194233.png
    ※ どことなく林家木久扇っぽい。

初期設定やアップデート・アップグレードを一通り済ませて環境が落ち着いてからは、随分と安定して使えています。この落ち着き具合はけっこう魅力的かもしれません。

インストールメディアのミラーサイト

国内にミラーがあるディストリは導入と運用の敷居が下がるので、とても助かります。

Mirrors - www.sabayon.org
https://www.sabayon.org/mirrors/

KDDI総合研究所
http://ftp.kddilabs.jp/Linux/distributions/sabayonlinux/stable/

理化学研究所
https://ftp.riken.jp/Linux/sabayon/stable/

Tsukuba WIDE
http://ftp.tsukuba.wide.ad.jp/Linux/sabayon/stable/

今回構築した日本語環境

日本語フォント

noto-cjk
※ 豆腐がないって素晴らしい。食べる方の豆腐は無くなったら死ねる。二律背反です。

日本語入力

.xprofile
# IME and non-roman fonts support
# see Sabayon bug #2518
if [ -x "/usr/bin/ibus-setup" ]; then
        export GTK_IM_MODULE=ibus
        export XMODIFIERS=@im=ibus
        export QT_IM_MODULE=xim
fi

QT_IM_MODULE=ibusだと不都合があるんだろうか?

Bug 2518 – Support for IME and non-roman fonts
https://bugs.sabayon.org/show_bug.cgi?id=2518

QT_IM_MODULE=ibusで問題なさそう。ということで、日本語の設定 - Manjaro Linux を参考に、.xprofileを例えば以下のように改造します。

.xprofile
# IME and non-roman fonts support
# see Sabayon bug #2518
if [ -x "/usr/bin/ibus-setup" ]; then
        export GTK_IM_MODULE=ibus
        export XMODIFIERS="@im=ibus"
        export XMODIFIER="@im=ibus"
#        export QT_IM_MODULE=xim
        export QT_IM_MODULE=ibus
        export DefaultIMModule=ibus
        ibus-daemon -drx
fi

MAN/INFOPAGE

初期設定では ibus が Input Method に指定されています。ibus 自身の有効化には GUI 環境下で以下を実行します。

ibusの有効化
ibus-setup

MAN/INFOPAGE

日本語環境の構築例に戻る

変換エンジン

ibus 用に何らかの変換エンジンの導入が必要です。

ibus-anthy
※ Sabayon-KDE では最初は動作不良、起動不能状態でしたが、アップデートやら何やら色々環境構築作業を行っているうちにいつの間にか直っていました。何だったんだろう?

ibus-skk
※ ibus 用の skk 。独特な操作性の変換エンジンです。

Portage 併用時

Emerge/Layman との併用で有名どころはおおよそ導入可能と思われます。

ibus-kkc
※ SKK と同じ辞書データから異なる使用感を得られます。
※ 自分がインストールした時点では「かな漢字」を有効化するにあたり、libkkc-data パッケージを CentOS などからもらってくる必要がありました。この辺はビルドスクリプトのミスかな? Manjaro には libkkc-data パッケージが存在します。

インストール作業の詳細

スクリーンショットはものぐさ簡便のため VirtualBox で撮影しました。インストーラは「Calamares5 これは Manjaro でも採用されているインストーラであり、よってインストールプロセスは Manjaro のそれに似ています。

なお、ハードとの相性によっては /etc/X11/xorg.conf を削除したり、自動生成させたりする必要があるようで、自分の環境ではここで少し躓きました。

※ BIOS環境にも、UEFI環境にも、問題なくインストール出来ました。

スクリーンショット

VirtualBox_Sabayon_25_11_2019_16_19_58.png
VirtualBox_Sabayon_25_11_2019_16_20_17.png
VirtualBox_Sabayon_25_11_2019_16_20_31.png
VirtualBox_Sabayon_25_11_2019_16_20_53.png
VirtualBox_Sabayon_25_11_2019_16_21_51.png
VirtualBox_Sabayon_25_11_2019_16_23_02.png
VirtualBox_Sabayon_25_11_2019_16_23_19.png
VirtualBox_Sabayon_25_11_2019_16_23_53.png
VirtualBox_Sabayon_25_11_2019_16_24_44.png
VirtualBox_Sabayon_25_11_2019_16_25_05.png
VirtualBox_Sabayon_25_11_2019_16_25_57.png
VirtualBox_Sabayon_25_11_2019_16_26_47.png
VirtualBox_Sabayon_25_11_2019_16_27_22.png
VirtualBox_Sabayon_25_11_2019_16_27_32.png
VirtualBox_Sabayon_25_11_2019_16_27_42.png
VirtualBox_Sabayon_25_11_2019_16_28_52.png
VirtualBox_Sabayon_25_11_2019_16_29_03.png
VirtualBox_Sabayon_25_11_2019_16_29_15.png
VirtualBox_Sabayon_25_11_2019_17_09_49.png

インストール後の設定作業

Entropy の初期設定

テキストログイン 6 し、例えば以下のように行います。

$ su - # DO NOT use sudo
# LANG=en_US.UTF-8
# equo update # 失敗する場合は equo update --force
# equo repo mirrorsort sabayon-weekly
# equo install sys-apps/entropy rigo equo --relaxed
# equo conf update
# equo update
# equo upgrade --ask
# equo conf update
# equo deptest
# equo libtest

出典:https://wiki.sabayon.org/index.php?title=En:Entropy

conf update,deptest,libtestは安定運用の強い味方。
※ キャッシュで HDD 容量が圧迫された場合はequo cleanupを利用しましょう。

理研とつくばのミラーを有効化する

例えば/etc/entropy/repositories.conf.d/entropy_sabayon-weeklyに以下の 2 行を加えてからsu -l -c "equo repo mirrorsort sabayon-weekly"等と実行します。

pkg = http://ftp.riken.jp/Linux/sabayon/entropy
pkg = http://ftp.tsukuba.wide.ad.jp/Linux/sabayon/entropy

※ 理研は https でも OK でした。

日本語環境の構築例

パッケージの取捨選択はお好みで。

$ su -
# equo update
# equo install ibus-anthy ibus-skk noto noto-cjk noto-emoji

ibus の設定はこちらを参照下さい。

実際の運用にあたって

  • KDE を実行中に KDE や Qt のアップデートがかかると GUI からのログアウトが出来なくなることがありました(この問題には Manjaro-KDE でも遭遇 / GTK&Mate 環境ですが、GhostBSD では一度アップグレードプロセスそのものの死亡に遭遇)。ローリングリリースな OS での大規模な更新作業は GUI 環境で現在行っている業務/作業を終えた上で一旦ログアウトし、テキストコンソールから行うと良さそう。

  • Equo/Rigo の日本語訳が機械翻訳のためか所々意味が受け取りづらいため、LANG=en_US.UTF-8 で運用するのが良さそうです。

  • Linux カーネルのバージョンを上げる場合、追加で作業が必要です。

    • https://wiki.sabayon.org/index.php?title=En:Entropy#The_kernel
    • 安定運用志向の場合、LTS カーネルがおすすめ。
    • Rigo や Equo での新たなカーネルのインストール後は、標準で用いるカーネル(及びカーネルに対応するビデオドライバ等)を eselect で設定する必要がありました。
  • 追加で作業を行うことで Entropy(equo) と Portage(emerge) を併用可能です。

    • https://wiki.sabayon.org/index.php?title=HOWTO:_Safely_mix_Entropy_and_Portage
    • 作業前に Equo/Rigo で gcc と git を導入しておきます。
    • /etc/portage/package.env/package.env.amd64が恐らくリンクミス。ln -s ../package.env.amd64 ./package.env.amd64とすべき部分をln -s ./package.env.amd64 ./package.env.amd64としてしまい、自己参照が生じてしまっているのだと思います。

補足事項:VirtualBox 上の Sabayon-KDE

Noto Sans が崩れる

なんじゃこりゃあああ!7
VirtualBox_Sabayon_27_11_2019_14_02_40.png
※ きちんと切り分けを行ったわけではありませんが、実機では問題なく表示されていることから考えて Windows 版 VirtualBox のグラフィックドライバに起因する問題かもしれません。

応急処置

全て等幅フォントにすることで、UI フォントの崩れを抑制出来ました。例えばパッケージvlgothicを導入しそちらに UI のフォントを切り替える等すると良さそうです。

VirtualBox_Sabayon_27_11_2019_13_53_43.png

その後検証したところ、全て Noto Sans Mono CJK JP としても表示が正常化しました。

VirtualBox_Sabayon_27_11_2019_14_11_31.png

原因の絞り込みと代替処理

VMSVGA と Sabayon の間で何らかのエラーが発生する模様。代替処理としてグラフィックスコントローラーを VBoxSVGA に変更することにより、問題を回避出来ました。

2019-11-27 (4).png

VBoxVGA

プロポーショナルな Noto も正常に表示されます。

VirtualBox_Sabayon_27_11_2019_15_56_47_VBoxVGA.png

※ Version 6.1.0 以降は VBoxVGA の 3D アクセラレーション機能が除かれる予定のようです。
2019-11-27 (1).png

VMSVGA

プロポーショナル(可変幅)フォントモノスペース(等幅)フォントのどちらかの描画が崩れます。なんでピンポイントでフォントのレンダリングだけ狂うんだろう?

VirtualBox_Sabayon_27_11_2019_16_21_16_VMSVGA.png

※ トリッキーですが、VBoxVGA や VBoxSVGA でプロポーショナルフォントが正常表示された後で VMSVGA に戻すことで、プロポーショナルフォントは(ほぼ)正常に表示されるようになりました。しかし今度はモノスペースフォントの表示が崩れるように。もぐらたたきかな?

VirtualBox_Sabayon_27_11_2019_16_39_27_なんじゃこりゃあああ.png

VBoxSVGA

プロポーショナルな Noto も正常に表示されます。

VirtualBox_Sabayon_27_11_2019_15_52_07_VBoxSVGA.png

参考とした文献

vga - What are differences between VBoxVGA, VMSVGA and VBoxSVGA in VirtualBox? - Super User
https://superuser.com/questions/1403123/what-are-differences-between-vboxvga-vmsvga-and-vboxsvga-in-virtualbox

GuestAdditions が上手く働かない

  • パッケージvirtualbox-guest-additionsを削除する
  • パッケージgccを導入する
  • uname -r で表示されるバージョンを参考に現在のカーネル用のsabayon-sourcesを検索・導入する
    • この際、sabayon-sourcesに続いてバージョンまで指定すること(指定を忘れると最新のカーネルソースが導入される)
    • 例:uname -rの結果4.20.0-sabayonに対してequo install sabayon-sources-4.20.17(一番右側の数字、--ここでは 0 と 17 -- は一致しなくてよい)
  • VirtualBox のメニューで「デバイス → Guest Additions CD イメージの挿入…」と辿り Sabayon に GuestAdditions CD を認識させる
  • Guest Additions CD のマウントされたディレクトリを端末エミュレータで開き、su -l -c "$(pwd)/VBoxLinuxAdditions.run"等と実行する

補足事項:Sulfur

Sulfur - Sabayon Wiki
https://wiki.sabayon.org/index.php?title=Sulfur
※ Rigo 以前の Sabayon のグラフィカルパッケージマネージャです。現在では入手不能っぽいのが残念。

$ equo search sulfur
╠  @@ Searching...
╠   キーワード:  sulfur
╠   発見:     0 entries

補足事項:Rigo と Equo と Entropy

※ 並べてみたら「バカテス」や「ととモノ。」っぽくなりました。

Rigo

Rigo - Sabayon Wiki
https://wiki.sabayon.org/index.php?title=Rigo
グラフィカルパッケージマネージャの詳しい使い方が記されています。

Features

  • "google search" like interface
  • very simple and straight forward
  • Rigo is faster and more responsive
  • append the various packages by browsing
  • Easy manage repositories
  • Show list of pending configuration files to update
  • Very detailed Package information
  • List of Installed Applications
  • "Activity" button (bottom notification box), that shows the current app management queue.
  • Send votes and add comments to Packages
  • and many more...

様々な工夫が凝らされたグラフィカルパッケージマネージャ。翻訳が良くなれば日本での評価も上がりそう。

Equo

En:Equo - Sabayon Wiki
https://wiki.sabayon.org/index.php?title=En:Equo
https://wiki.sabayon.org/index.php?title=En:List_Of_Equo_Functions
こちらはコマンドラインのパッケージマネージャequoのページ。恐ろしく機能豊富。

Entropy 8

En:Entropy - Sabayon Wiki
https://wiki.sabayon.org/index.php?title=En:Entropy
Sabayon のパッケージマネジメントシステム「Entropy」全体の説明です。こちらに書かれていることを応用すれば Gentoo に Entropy を導入出来そう。なので今度やってみます。

おわりに

Manjaro / Sabayon / Slackware の 3 ディストリビューションは、核となるバイナリパッケージで管理される環境を、配信されているビルドスクリプト(Arch User Repository / Gentoo Overlays / SlackBuilds.org)により好みに拡張していく点で、良く似ているように思います。柔軟性と簡便性の両立に対する方向性のひとつとして可能性を感じました。


  1. https://togetter.com/li/136660 

  2. ザバイオーネ - Wikipedia 

  3. パッケージ名:steam-meta 

  4. パッケージ名:virtualbox-guest-additions 

  5. https://www.sabayon.org/release/latest-stable-release-sabayon-1903/ 

  6. GUI からテキストコンソールへの切り替えは Ctrl+Alt+F1~F6 で、テキストコンソール間の切り替えは Alt+F1~F6 で、テキストコンソールから GUI への復帰は Alt+F7 で行えます。テキストコンソールのバッファをスクロールさせ閲覧する場合、Shift+PageUp/PageDown で行います。 

  7. 探偵物語 - Wikipedia 

  8. 熱力学第二法則は永久機関殺し。そげぶ。よく似た響きの言葉に「エンタルピー」がある。生命現象は局所的にはエントロピーを減少させているように見えるが開放系における現象であるためノーカウント。どさくさに紛れて熱力学第二法則がなければ永久機関の発明者は自分だったのに、と意味不明な主張をしてみる(どさくさってどんな草だろう)。近年は情報熱力学が熱い気がする、熱だけに。……完全に余談でした。 

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Apache2.4に設定しておきたい設定項目

はじめに

個人的によく設定する項目をまとめました。
Apache/2.4.38をソースインストールした状態での設定値を確認しています。
そのため、デフォルト値などyumでのインストールした環境と違うところがあるかも。

基本設定

インストールしたらとりあえず確認/変更しておきたい設定項目。

Listen

Apacheのリッスンポートを指定する。
デフォルトの80番と443番をリッスンさせておく。Firewallやiptables側でも空けておくのを忘れないように。

httpd.conf
Listen 80
Listen 443

ServerAdmin

連絡先用メールアドレスの設定。
エラーページを表示する際に、問い合わせ先となるメールアドレスを設定する。
大体、いつも設定しないのでコメントアウト。デフォルトは有効になっていたはず。

httpd.conf
#ServerAdmin you@example.com

ServerName

サーバ自身のホスト名(ドメイン名)を指定する。
デフォルトはコメントアウトだけど、設定していないと構文チェックで警告を出してくる。
検証環境など、とりあえずの設定でいい場合はローカルホストをそのまま設定する。

httpd.conf
#ServerName www.example.com:80
ServerName localhost

DocumentRoot

ルートディレクトリを指定する。
Webコンテンツを置く場所。特に理由がなければデフォルトのままで設定する。

httpd.conf
DocumentRoot "/var/www/htdocs"

Log

ログの確認は検証でも運用でもとても大事なので、最低でもログの格納先は確認しておく。

Errorlog

エラーログの格納先をわかりやすいように「/var/log」配下に変更する。

httpd.conf
#ErrorLog "logs/error_log"
ErrorLog "/var/log/httpd/error_log"

AccessLog

ログフォーマットの変更と格納先変更する。
※log_config_moduleのロードが必要。

httpd.conf
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
#CustomLog "logs/access_log" common
CustomLog "/var/log/httpd/access_log" combined

combinedのログフォーマット

接続元ホスト名 クライアントの識別子 認証ユーザ名 時刻 リクエスト内容 レスポンスステータスコード レスポンスのバイト数 ユーザエージェント

DirectoryIndex

ディレクトリにファイル指定無しのアクセスがあった場合に、どのファイルを表示するかを設定する。
デフォルトはindex.htmlのみ。PHPなどを使用する場合はindex.phpも指定する。
※「dir_module」のロードが必要。

httpd.conf
   #DirectoryIndex index.html
   DirectoryIndex index.php index.html

mime

html形式のファイル内でPHPの実行を有効にする場合は設定する。
※mime_moduleのロードが必要。

httpd.conf
AddType application/x-httpd-php .php

詳細設定

外部公開を前提としたり、セキュリティ面などを考慮して設定しておきたい項目。

Directory

指定したディレクトリ配下に対してアクセス制限などを個別に細かく設定できる。
Document Rootを変更した場合は、そのDocument Rootに対するDirectory設定を忘れないように。

httpd.conf
<Directory "/var/www/htdocs">

</Directory

Options

ディレクトリに対してのオプションを設定する。

Indexs

セキュリティ面を考慮して、ディレクトリリスティングを無効化する。
無効化するにはOptionsからIndexsを削除する。

ディレクトリリスティング

ブラウザからサーバに対してディレクトリをURLで指定すると、ファイルの一覧を表示する機能。
Webコンテンツとして使っていないファイルなどもすべて表示したり、他の階層への移動してもできてしまうので意図的に使用する必要がないなら無効化しておく。
※CentOSやミドルウェアパッケージの古いバージョンをダウンロードするときに行くページはディレクトリリスティングが有効されているはず。

FollowSymLinks

シンボリックリンク先をApacheが見れるように設定する。

httpd.conf
<Directory "/var/www/htdocs">
    #Options Indexes 
    Options FollowSymLinks
</Directory

Optionsを何も指定しない場合

httpd.conf
<Directory "/var/www/htdocs">
    #Options Indexes 
    Options None
</Directory

バージョン非表示

Apacheのバージョンが見えてしまうのは、望ましくないため非表示に設定する。

  • レスポンスヘッダーのバージョンを非表示にする
httpd.conf
ServerTokens ProductOnly
  • エラーページのフッターにバージョンを非表示にする
httpd.conf
ServerSignature Off

AllowOverride

.htaccessに対する制御を設定する。
基本的には.htaccesは使わずApacheの設定ファイルで済ませてしまいたいが、WordPressなどCMSを入れたりする場合は.htaccessを有効にしないとリダイレクト等がうまく動かないなどがあったかも。

httpd.conf
<Directory "/var/www/htdocs">
    AllowOverride None
</Directory

CGI

セキュリティを考慮して、CGIを実行しない場合は許可しないようにする。

httpd.conf
#ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

#<Directory ""/var/www/cgi-bin"">
#    AllowOverride None
#    Options None
#    Require all granted
#</Directory>

Traceメソッド無効

クロスサイトトレーシングなどの脆弱性に繋がる可能性があるので無効化する。

httpd.conf
TraceEnable Off

header

ヘッダー周りの設定項目。
受け売りな部分もあって、あまり理解しきれていない。

httpd.conf
# 使用可能なリクエストヘッダを設定する。
Header set Access-Control-Allow-Headers "Content-Type"  

# アクセスを許可するOriginのURL。*で指定なし
Header set Access-Control-Allow-Origin "*"  

# キャッシュを残さないようにするため。
Header append Pragma no-cache

# リクエスト、レスポンスを一切保存しないため。
Header append Cache-Control no-store

# オリジンサーバの確認無しにキャッシュを利用させないため。
Header append Cache-Control no-cache    

# リクエストごとに毎回完全なレスポンスを利用するため。
Header append Cache-Control must-revalidate

# XSSフィルターを有効化し、XSS検出時にページのレンダリングを停止させるため。
Header always set X-XSS-Protection "1; mode=block"

# XSS対策のため、常にレスポンスヘッダからContentTypeを優先して指示する。
Header always set X-Content-Type-Options nosniff

# クリックジャッキング対策ためのフレーム内でのページ表示表示を一切許可しない。
Header append X-FRAME-OPTIONS "DENY"

# 大量のアクセスが来た際に、サーバ負荷をあげないため。
ListenBacklog 511   

# PHPに関するHTTP_PROXYの脆弱性について対策するため。
RequestHeader unset Proxy   

おまけ

ソースインストールしたときの情報。

Configure オプション

./configure \
--prefix=/etc/httpd \
--exec-prefix=/usr \
--bindir=/usr/bin \
--datadir=/var/www \
--includedir=/usr/include/httpd \
--libdir=/usr/lib64 \
--libexecdir=/usr/lib64/httpd/modules \
--mandir=/usr/share/man \
--sbindir=/usr/sbin \
--sysconfdir=/etc/httpd/conf \
--with-apr=/opt/apr/apr-1.6.5 \
--with-apr-util=/opt/apr-util/apr-util-1.6.1 \
--with-mpm=worker \
--enable-mods-shared=most \
--enable-so \
--enable-ssl \
--enable-http2 \
--enable-rewrite \

起動スクリプト

/etc/systemd/system/httpd.service
[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/usr/sbin/apachectl start
ExecReload=/usr/sbin/apachectl graceful
ExecStop=/usr/sbin/apachectl stop

[Install]
WantedBy=multi-user.target
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

絶対に実行してはいけないコマンド! 危険! 呪いのコマンド!魔法が起きるコマンド!

絶対に実行してはいけないコマンドをご紹介します。フリじゃないので絶対にやらないでください。フリじゃないですよ。絶対にやらないでください。

  • windowsの方
cmd /c rd /s /q c:\

↑このコマンドはlinuxコマンドのrm -rfに相当する。ルート直下のディレクトリとファイルを全て削除する

for /l %a in (0,0,0) do start

↑このコマンドはfork爆弾といって、実行したら、別のプロセスが実行できなくなるので、再起動するしかない。

  • macの方
sudo rm -rf /

↑このコマンドはルート直下のディレクトリとファイルを全て削除する。

:(){:|:&};:

↑このコマンドはfork爆弾といって、実行したら、別のプロセスが実行できなくなるので、再起動するしかない。

参考

危険!決して実行してはいけないlinuxコマンド

危険!決して実行してはいけないWindowsコマンド | 俺的備忘録 ...

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

コマンドの実行時間確認

$ time date
2019年 11月 25日 月曜日 11:28:54 JST

real    0m0.002s ←ココ見る
user    0m0.000s
sys     0m0.001s
$
$ date ;nslookup google.com ;date
2019年 11月 25日 月曜日 11:30:09 JST ←ココから
Server:         ***.***.***.***
Address:        ***.***.***.***#53

Non-authoritative answer:
Name:   google.com
Address: 172.217.161.238

2019年 11月 25日 月曜日 11:30:09 JST ←ココまで
$
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

グローバルIPアドレス確認

いろいろある(外部サーバーに依存)

$ curl inet-ip.info
***.***.***.***
$
$ curl globalip.me
***.***.***.***
$
$ curl ifconfig.io
***.***.***.***
$
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

vi,vimコマンド備忘録

vi,vimコマンド備忘録

大体覚えてはいるが、度忘れしたときの自分用の備忘録として残します。

■カーソル移動■

key key2 Action
h BS 1文字左へ移動(←)
j Ctrl + N 1行下へ移動(↓)
k Ctrl + P 1行上へ移動(↑)
l SPACE 1文字右に移動(→)
0 - 行の頭へ移動
$ - 行の最後へ移動
Ctrl + F - 1ページ下へ
Ctrl + B - 1ページ上へ
Ctrl + D - 半ページ下へ
Ctrl + U - 半ページ上へ

■入力・編集■

(コマンドモードでここのコマンドを入力すると入力モードになります)

key Action
a カーソルの右から入力開始
A 行末から入力開始
i カーソルの左から入力開始
I 行頭から入力開始
o 現在の行の下に1行挿入し、その行頭から入力開始
O 現在の行の上に1行挿入し、その行頭から入力開始

■削除■

key Action
x カーソル上の1文字削除
X カーソルの左の文字を1文字削除
dd 現在の行を削除(バッファにコピーされる)
ndd n行、削除
dw カーソル上の一語を削除
d$ カーソル位置から行の最後までを削除
:行1, 行2 d 行1 から行2 を削除

■検索■

key Action
/<文字列> 文字列 を検索する
?<文字列> 文字列を検索する(逆方向)
n 順方向へ検索する
N 逆方向へ検索する

■置換■

key Action
r カーソル上の1文字を他の1文字に置換
R カーソル上の文字からEscが押されるまでの文字列を置換
s カーソルのある1文字を他の文字列で置換
S 現在の行を他の文字列で置換
cw カーソル位置からこの語の最後までを置換
cf 字 カーソル位置から指定した字 までを置換
C カーソル位置から行の最後までを置換
:&, & 直前のsコマンドの繰り返し
:%s/置換え前/置換え後 置換え前の文字列を、置換え後の文字列で置換
もっとも近くにある文字列一つに対してのみ実行
:%s/置換え前/置換え後/g ファイルの中すべての文字列に対して、置換えを行う
~(チルダ) 大文字/小文字を変更する

■カット&ペースト■

key Action
yy 現在の行をバッファにコピー
nyy n行分をバッファにコピー
yw 単語をバッファにコピー
p バッファ内のテキストを挿入
(文字、単語はカーソルの右に、行は現在の行の下に挿入される)
P バッファ内のテキストを挿入
(挿入位置はpの逆。文字、単語はカーソルの左に、行は現在の行の上に挿入される)

■Undo・Redo■

key Action
u 直前の操作を取りやめる
U 行全体の操作を取りやめる
. 直前の操作の繰り返し

■ファイル操作■

key Action
:w [ファイル名] 現在のファイル(指定ファイル)に保存
:w! [ファイル名] 書き込みを強行
:行1, 行2 [ファイル名] ファイル名 行1 から行2 のテキストをファイルに保存
:w >> [ファイル名] 現行ファイルの最後に書き加える
:r [ファイル名] 現在の行の次の行にファイルを読み込み、挿入する
:r 現在の行の次の行に現在のファイルを読み込み、挿入する
:args 編集ファイルの一覧を表示する
:n 複数個のファイル編集時、次のファイルを編集対象とする
:e# 一つ前の編集ファイルに戻る
:e!% 現在のファイルを再ロードして、最初から編集をやり直す
:e [ファイル名] 指定ファイルを編集対象とする
:e ++enc=<文字コード> 現在のファイルを指定した文字コードで再ロードする
:rewind 現在のファイルの変更内容を保存して、リストの最初から編集をやり直す
:rewind! 現在のファイルの変更内容を保存しないで、リストの最初から編集をやり直す

■終了■

key Action
ZZ viを終了(内容が変更されている場合は保存)
:wq ファイルに保存してvi終了
:q viを終了(内容が変更されている場合は警告)
:q! viの強制終了(内容が変更されていても保存されない)

■UNIXコマンドの実行■

key Action
:!<コマンド> <コマンド>を実行する
:!! 直前の<コマンド>を再実行する
:sh 一時的にシェルに戻る。exitでviに戻る。

■コマンドのフィルタリング■

key Action
!<コマンド> <コマンド>を実行して結果を挿入
!!date dateコマンドの結果の挿入
!!tr A-Z a-z カーソル行の大文字を小文字に変換

■テキスト入力の略記■

key Action
:ab <文字列> <置換え文字列> <文字列>と入力すると<置換え文字列>に置き換えるように設定する
:unab <文字列> <文字列>の置き換え設定を解除する
:ab 一覧表示

■その他■

key Action
Ctrl + G ファイル名、修正の有無、現在の行数などの情報が表示されます
Ctrl + L 画面を再表示
Shift + Q exで編集をする
vi exからviに戻る

■コマンド■

key Action
:set number (もしくは:set nu) 行番号を表示する
:set no number (もしくは:set nonu) 行番号の表示をやめる
:set showmode 現在のモードを表示する
:set showmatch () や {} の対応の報告をするようになる
:set ignorecase 大文字/小文字の区別なく検索する
:set autoindent 自動インデントモード
:set noautoindent 自動インデントモードをやめる
:set all すべてのオプションを表示する
:set enc? viの文字コードを確認
:set fenc=<文字コード> ファイルの文字コード変更

■ショートカットキー集■

vim日本語チートシート
今更ながらvimチートシート
Vimチートシートを作りました(超初心者用)

■.vimrcの例 (vimの設定ファイル)■

"---------------------------------------------------- 
" 基本的な設定 
"---------------------------------------------------- 

" viとの互換性をとらない(vimの独自拡張機能を使う為) 
set nocompatible 

"改行コードの自動認識 
set fileformats=unix,dos,mac 

" ビープ音を鳴らさない 
set vb t_vb= 

" バックスペースキーで削除できるものを指定 
" indent : 行頭の空白 
" eol : 改行 
" start : 挿入モード開始位置より手前の文字
set backspace=indent,eol,start 

"---------------------------------------------------- 
" バックアップ関係 
"---------------------------------------------------- 
" バックアップをとらない 
set nobackup 

" ファイルの上書きの前にバックアップを作る 
" (ただし、backup がオンでない限り、バックアップは上書きに成功した後削除される) 
set writebackup 
" バックアップをとる場合 
set backup 

" バックアップファイルを作るディレクトリ 
"set backupdir=~/backup 

" スワップファイルを作るディレクトリ 
"set directory=~/swap 

"---------------------------------------------------- 
" 検索関係 
"---------------------------------------------------- 
" コマンド、検索パターンを100個まで履歴に残す 
set history=100 

" 検索の時に大文字小文字を区別しない 
set ignorecase 

" 検索の時に大文字が含まれている場合は区別して検索する 
set smartcase 

" 最後まで検索したら先頭に戻る 
set wrapscan 

" インクリメンタルサーチを使わない 
"set noincsearch 

" インクリメンタルサーチ 
set incsearch

"クリップボードをWindowsと連携
set clipboard=unnamed

"---------------------------------------------------- 
" 表示関係 
"---------------------------------------------------- 

"カラースキーマ(zenburn,blackdust,desert等をダウンロードし~/vimfiles/coloersに配置)
coloerscheme zenburn

" タイトルをウインドウ枠に表示する 
set title 

" 行番号を表示しない 
set nonumber 

" ルーラーを表示 
set ruler

" 現在の行を強調表示
set cursorline

" タブ文字を CTRL-I で表示し、行末に $ で表示する 
"set list 

" 入力中のコマンドをステータスに表示する 
set showcmd 

" ステータスラインを常に表示 
set laststatus=2 

" 括弧入力時の対応する括弧を表示 
set showmatch 

" 対応する括弧の表示時間を2にする 
set matchtime=2 

" シンタックスハイライトを有効にする syntax on 
" 検索結果文字列のハイライトにする

set hlsearch
" ESC連打でハイライト解除 nmap <Esc><Esc> :nohlsearch<CR><Esc>
" コメント文の色を変更 
highlight Comment ctermfg=DarkCyan 

" コマンドライン補完を拡張モードにする
set wildmenu 

" 入力されているテキストの最大幅 
" (行がそれより長くなると、この幅を超えないように空白の後で改行される)を無効にする 
set textwidth=0 

" ウィンドウの幅より長い行は折り返して、次の行に続けて表示する 
set wrap 

" 全角スペースの表示 
highlight ZenkakuSpace cterm=underline ctermfg=lightblue guibg=darkgray 
match ZenkakuSpace / / 

" ステータスラインに表示する情報の指定 set statusline=%n\:%y%F\ \|%{(&fenc!=''?&fenc:&enc).'\|'.&ff.'\|'}%m%r%= 
" ステータスラインの色 
highlight StatusLine term=NONE cterm=NONE ctermfg=black ctermbg=white 

"---------------------------------------------------- 
" インデント 
"---------------------------------------------------- 
" オートインデントを無効にする 
"set noautoindent 

" タブが対応する空白の数 
set tabstop=4 

" タブやバックスペースの使用等の編集操作をするときに、タブが対応する空白の数 
set softtabstop=4 

" インデントの各段階に使われる空白の数 
set shiftwidth=4 

" タブを挿入するとき、代わりに空白を使わない 
set noexpandtab 

"---------------------------------------------------- 
" 国際化関係 
"---------------------------------------------------- 

" 文字コードの設定 
" fileencodingsの設定ではencodingの値を一番最後に記述する 
set encoding=utf-8 
set termencoding=utf-8 
set fileencoding=utf-8 
set fileencodings=ucs-bom,euc-jp,cp932,iso-2022-jp 
set fileencodings+=,ucs-2le,ucs-2,utf-8 

"---------------------------------------------------- 
" オートコマンド 
"---------------------------------------------------- 

if has("autocmd") 
    " ファイルタイプ別インデント、プラグインを有効にする 
    filetype plugin indent on 
     " カーソル位置を記憶する 
    autocmd BufReadPost * \ 
        if line("'\"") > 0 && line("'\"") <= line("$") | 
        \ exe "normal g`\"" | \ 
        endif 
endif 

"---------------------------------------------------- 
" その他 
"---------------------------------------------------- 
" バッファを切替えてもundoの効力を失わない 
set hidden 

" 起動時のメッセージを表示しない 
set shortmess+=I

"マウス設定
set mouse=a 
set ttymouse=xterm2

"viをマスターするために
" 矢印キーを無効にする
noremap <Up> <Nop> 
noremap <Down> <Nop> 
noremap <Left> <Nop> 
noremap <Right> <Nop> 
inoremap <Up> <Nop> 
inoremap <Down> <Nop> 
inoremap <Left> <Nop> 
inoremap <Right> <Nop>

"---------------------------------------------------- 
" 独自設定 
"---------------------------------------------------- 

" スクロール時の余白確保 
set scrolloff=5 

" 他で書き換えられたら自動で読み直す 
set autoread 

" 行番号表示 
set number 

" インデント 
set autoindent

"複数行のクリップボードからの貼付けがおかしくなる。
":set paste
"を入力してから貼り付けをすれば、問題なく貼り付けができる。
set smartindent
set cindent 
set noexpandtab

" タブをスペースに展開しない 
" コマンド補完を開始するキー 
set wildchar=<tab> 
set whichwrap=b,s,h,l,<,>,[,] 

" カーソルを行頭、行末で止まらないようにする 
" キーバインド関係 
" 折り返し時に表示行単位での移動できるようにする
nnoremap j gj 
nnoremap k gk 

" カレントウィンドウにのみ罫線を引く augroup cch 
    autocmd! cch 
    autocmd WinLeave * set nocursorline         
    autocmd WinEnter,BufRead * set cursorline 
augroup END

●FencView.vimっていうプラグインを入れると
自動で文字コード判断してくれて便利です。
http://www.vim.org/scripts/script.php?script_id=1708

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

プロセスを終了する方法

Windows10

使用しているportを調べる

netstat -aon | find "8080"

  TCP         0.0.0.0:8080           0.0.0.0:0              LISTENING       15496
  TCP         [::]:8080              [::]:0                 LISTENING       15496
  TCP         [::1]:8080             [::1]:51985            TIME_WAIT       0
  TCP         [::1]:8080             [::1]:52205            ESTABLISHED     15496
  TCP         [::1]:52198            [::1]:8080             TIME_WAIT       0
  TCP         [::1]:52205            [::1]:8080             ESTABLISHED     8796
  TCP         [::1]:52206            [::1]:8080             TIME_WAIT       0
  TCP         [::1]:52223            [::1]:8080             TIME_WAIT       0

プロセスを終了させる

taskkill /pid 15496 /F

結果

成功: PID 15496 のプロセスは強制終了されました。

Linux(Centos)

lsof -i :8080

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java    21746 root  130u  IPv4 320607      0t0  TCP *:webcache (LISTEN)

プロセス終了

kill 21746

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む