SSブログ

CentOS 7.1上のGNOME 3.8.4のパネルで使用するフォントの変更 [CentOS]

CentOS 7.1 上の GNOME 3.8.4(classic mode) のパネルでフォントが綺麗に表示できない。
anti-alias を有効にすればある程度綺麗に表示できるが、できれば anti-alias を有効にしたくない。

以下は、この状況で、パネルの表示をある程度綺麗にするための対応方法である。

1. Sazaname フォントの導入


(1) フォント・データのダウンロード


・URL
 https://osdn.jp/projects/efont/

・file
 sazanami-20040629.tar.bz2


(2) フォント・データのインストール


・フォント・データの展開

# tar jxvf sazanami-20040629.tar.bz2


・フォント・データのインストール

# mkdir /usr/share/fonts/sazanami
# cd sazanami-20040629
# mv *.ttf /usr/share/fonts/sazanami

2. フォントパスの追加


(1) /etc/fonts/local.conf の編集


/etc/fonts/local.conf に下記の設定を追加する。

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <!-- Font directory list -->
    <dir>/usr/share/X11/fonts</dir>
</fontconfig>


(2) X Window System の再起動


3. /usr/share/gnome-shell/theme/gnome-shell.css の編集


下記のように変更する。

# diff gnome-shell.css gnome-shell.css.org
24,25c24
<     /*font-family: cantarell, sans-serif;*/
<     font-family: "Sazanami Gothic", monospace;
---
>     font-family: cantarell, sans-serif;
468,469c467
<     /*font-weight: bold;*/
<     font-weight: medium;
---
>     font-weight: bold;
1377,1378c1375
<     /*font-family: cantarell, sans-serif;*/
<     font-family: "Sazanami Gothic", monospace;
---
>     font-family: cantarell, sans-serif;


CentOS 7.1のGNOME 3.8.4でのAlt+[半角/全角]のキーバインド [CentOS]

CentOS 7.1 の GNOME 3.8.4 では、Alt + [半角/全角] が別の機能へキーバインドされており、かつ、キーボードのショートカットの設定からは、Alt + [半角/全角] のキーバインドを無効化できない。

・キーボードのショートカットの設定: [設定] -> [キーボード] -> [ショートカット]
・このままでは Alt + [半角/全角] での日本語入力の開始/終了を行うことができない。

GNOME での当該キーのキーバインドを無効化するには、下記の手順の実施が必要である。

1. dconf エディタの起動


[アプリケーション] -> [諸ツール] -> [dconf エディタ]


2. GNOME のキーバインドの変更


(1) org -> gnome -> desktop -> wm -> keybindings

(2) switch-group の設定値の変更

(変更前) ['<Super>Above_Tab', '<Alt>Above_Tab']
(変更後) ['<Super>Above_Tab']


gnome-terminal起動時のエンコーディングの指定 [CentOS]

CentOS 7.1 の gnome-terminal では、起動時のエンコーディングの指定ができなくなった。
発生事象の詳細と対処方法は、以下の通りである。

1. 発生事象


CentOS 7.1 の gnome-terminal では、起動時のエンコーディングが指定できなくなった。
バージョンアップにより、仕様が変更されたものと思われる。

・gnome-terminal-3.8.4-8.el7.x86_64
・UTF-8 エンコーディングで起動される。
・起動後の変更は可能である。

CentOS 6.7 では、ロケールを指定することで対応できていた。

・gnome-terminal-2.31.3-11.el6_6.i686

(例) EUC-JP エンコーディングを指定する場合
env LC_ALL=ja_JP.eucJP LANGUAGE=ja_JP.eucJP gnome-terminal

2. 対処方法


下記の手順により、gnome-terminal を Fedora 18 のパッケージに置き換える。

(1) パッケージのダウンロード


gnome-terminal-3.6.1-1.fc18.x86_64.rpm


(2) gnome-terminal のバージョンダウン

# rpm --oldpackage -Uvh gnome-terminal-3.6.1-1.fc18.x86_64.rpm

[追記]


firewalldでの複数の条件を組み合せたルールの作成 [CentOS]

CentOS 7.1 の firewalld の設定で、複数の条件を合わせたルールの作成(例えば、ポートとアドレスの指定)に手間取ったため、得られた情報をまとめてみた。
詳細は、以下の通りである。

1. ルールの作成方法


下記のいずれかの機能を使用する。

(1) direct option

(例)
# firewall-cmd [--permanent] --direct --add-rule ipv4 filter INPUT 0 ...


iptables にルールを直接設定するようなものである。
(詳細は firewall-cmd(1) の man ページを参照)


(2) rich rule

(例)
# firewall-cmd --add-rich-rule='rule family="ipv4" ...'


リッチ言語表現を使用したルール設定である。

指定できる主な項目は、下記の通りである。
(リッチ表現の詳細は、firewalld.zone(5) の man ページを参照)

(a) family

設定値: ipv4 | ipv6
指定方法: family="<value>"


(b) source address

設定値: <address>[/<range>]
指定方法: source address="<value>"


(c) destination address


source address と同様


(d) port

設定値: {<port>[-<port>]} {tcp | udp}
指定方法: port port="<value_1>" protocol="<value_2>"


(e) action

設定値: accept | reject | drop
指定方法: <value>

2. 使用例


ローカルネット(192.168.0.0/24) からの rsh でのアクセスを許可する。

(1) direct option を使用する場合


(a) 設定

# firewall-cmd --direct --add-rule ipv4 filter INPUT 0 \
-s 192.168.0.0/24 -p tcp --dport 513:514 -j ACCEPT
success


(b) 追加されるルール

# iptables -L
Chain INPUT_direct (1 references)
target     prot opt source               destination
ACCEPT     tcp  --  192.168.0.0/24       anywhere      tcp dpt:login:shell


(c) 補足


ルールの削除は、--add-rule を --remove-rule に変更して実行する。


(2) rich rule を使用する場合


(a) 設定

# firewall-cmd --add-rich-rule='rule family="ipv4" \
source address="192.168.0.0/24" port port="513-514" protocol="tcp" \
accept'
success


(b) 追加されるルール

# firewall-cmd --list-all
public (default, active)
  interfaces: enp2s0
  sources:
  services: dhcpv6-client ssh
  ports:
  masquerade: no
  forward-ports:
  icmp-blocks:
  rich rules:
        rule family="ipv4" source address="192.168.0.0/24" \
        port port="513-514" protocol="tcp" accept


(c) 補足


ルールの削除は、--add-rich-rule を --remove-rich-rule に変更して実行する。


3. 備考


(1) 参考情報


https://access.redhat.com/documentation/ja-JP/\
Red_Hat_Enterprise_Linux/7/html/Security_Guide/sec-Using_Firewalls.html


(2) 感想


通常は、iptables を使用(firewalld の無効化が必要)した方がよいように思われる。
http://dan-project.blog.so-net.ne.jp/2015-09-12-1



PostgreSQL 9.1起動時のPermission deniedへの対応 [Debian]

Debian 8 において、PostgreSQL 9.1 の起動ができなくなってしまった。

・パッケージのバージョン
 postgresql-9.1 9.1.16-0+deb7u1
 postgresql-common 165

・エラーメッセージ
 "/etc/ssl/certs/ssl-cert-snakeoil.pem": Permission denied

原因および対処方法の詳細は、以下の通りである。

1. 発生事象


下記のような状況となり、PostgreSQL の起動に失敗する。

[postgresql@9.1-main]
could not open file "/etc/ssl/certs/ssl-cert-snakeoil.pem": Permission denied
startup process (PID 5060) exited with exit code 1
aborting startup due to startup process failure

[systemd]
postgresql@9.1-main.service: control process exited, code=exited status=1
Failed to start PostgreSQL Cluster 9.1-main.
Unit postgresql@9.1-main.service entered failed state.

2. 原因


(1) PostgreSQL のバグと思われる。


アクセス可能かではなく、所有者なのかをチェックしているように思われる。
少なくとも、/etc/ssl/certs/ssl-cert-snakeoil.pem は参照可能である。

[シンボリック・リンクの状況]
# pwd
/var/lib/postgresql/9.1/main
# ls -l server.*
lrwxrwxrwx 1 root root 36 Jun  2 13:10 server.crt -> \
/etc/ssl/certs/ssl-cert-snakeoil.pem
lrwxrwxrwx 1 root root 38 Jun  2 13:10 server.key -> \
/etc/ssl/private/ssl-cert-snakeoil.key

[シンボリック・リンク先の状況]
# pwd
/etc/ssl
# ls -l
total 36
drwxr-xr-x 2 root root     20480 May 30 02:12 certs/
-rw-r--r-- 1 root root     10835 Mar 19  2013 openssl.cnf
drwx--x--- 2 root ssl-cert  4096 Feb 22  2009 private/
# ls -l certs/ssl-cert-snakeoil.pem
-rw-r--r-- 1 root root 644 Feb 22  2009 certs/ssl-cert-snakeoil.pem
# ls -l private/ssl-cert-snakeoil.key
-rw-r----- 1 root ssl-cert 887 Feb 22  2009 private/ssl-cert-snakeoil.key

[postgres ユーザーの所属グループの状況]
# grep postgres /etc/group
ssl-cert:x:104:postgres
postgres:x:122:

3. 対処方法


取り敢えず、下記の手順の実施により、状況が改善される。

(1) 当該ファイルの所有者を root から postgres に変更する。

# cd /etc/ssl
# chown postgres certs/ssl-cert-snakeoil.pem
# chown postgres private/ssl-cert-snakeoil.key

# ls -l certs/ssl-cert-snakeoil.pem
-rw-r--r-- 1 postgres root 644 Feb 22  2009 certs/ssl-cert-snakeoil.pem
# ls -l private/ssl-cert-snakeoil.key
-rw-r----- 1 postgres ssl-cert 887 Feb 22  2009 \
private/ssl-cert-snakeoil.key


(2) PostgreSQL の起動

# systemctl start postgresql@9.1-main.service
# systemctl status postgresql@9.1-main.service


(3) PostgreSQL が正常に起動できた後に root 所有に戻す。


PostgreSQL が正常に起動できた後は、root 所有に戻しても問題は発生しない。


4. 備考


(1) 参考資料


https://forums.kali.org/showthread.php?25638-Postgresql-won-t-start



CentOS 7.1のGRUBを使用したチェインロード [CentOS]

マルチブート環境の 1 個のシステムとして、CentOS 7.1 のインストールを行った。
また、CentOS 7.1のインストーラーでは、ブートローダーの PBR へのインストールができない。
このため、ブートローダーはインストールせず、既存の GRUB から起動していた。

今回、ブートローダーを PBR へインストールし、チェインロードを実現した。
手順は、以下の通りである。

1. CentOS 7.1 のブート


既存の GRUB から CentOS 7.1 をブートする。


2. ブートローダーの PBR へのインストール


(1) /etc/default/grub の編集

GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=0
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT=console
GRUB_CMDLINE_LINUX=""
GRUB_CMDLINE_LINUX_DEFAULT="video=1440x900-16"
GRUB_DISABLE_RECOVERY=true
GRUB_DISABLE_OS_PROBER=true


存在しない場合には、新規作成する。
・ブートローダーをインストールしなかった場合には、作成されないようである。


(2) /boot/grub2/grub.cfg の更新

# grub2-mkconfig -o /boot/grub2/grub.cfg


(3) ブートローダーのインストール

# grub2-install --force <dev-path>
options:
  dev-path: device path


PBR にインストールする場合には、--force の指定が必要である。
未指定の場合には、下記のエラーが発生する。

error: will not proceed with blocklists.

3. 既存の GRUB の設定変更


GRUB のチェインロードをするように、エントリを変更する。



CentOS 7.1のboot/shutdown時のコマンドの自動実行 [CentOS]

CentOS 7.1 において、boot/shutdown 時に指定したコマンドを実行するための設定を行った。

なお、CentOS 6.x では、下記のような方法で対処していた。
・boot 時に実行するコマンドは、/etc/rc.d/{rc.sysinit,rc.local} に設定する。
 (ブート処理のどの時期に実行するかで、設定するファイルを使い分ける。)
・shutdown 時に実行するコマンドは、/etc/rc.d/init.d/halt に設定する。

詳細は、以下の通りである。

1. boot 時の /tmp 内のファイルの削除


(1) /etc/tmpfiles.d/tmp.conf の作成

# cd /etc/tmpfiles.d
# cp -p /usr/lib/tmpfiles.d/tmp.conf .


(2) /etc/tmpfiles.d/tmp.conf の編集

# diff /etc/tmpfiles.d/tmp.conf /usr/lib/tmpfiles.d
11,13c11,12
< D /tmp 1777 root root -
< #d /tmp 1777 root root 10d
< #d /var/tmp 1777 root root 30d
---
> d /tmp 1777 root root 10d
> d /var/tmp 1777 root root 30d

2. boot 時にコマンドを自動実行する機能の有効化


(1) /etc/rc.d/rc.local のパーミションの変更

# chmod 755 /etc/rc.d/rc.local


(2) /etc/rc.d/rc.local の編集


boot 時に実行するコマンドを設定する。


(3) rc-local.service の開始

# systemctl start rc-local.service

3. shutdown 時にコマンドを自動実行する機能の有効化


(1) /usr/sbin/halt.local の作成

# touch /usr/sbin/halt.local
# chmod 755 /usr/sbin/halt.local


(2) /usr/sbin/halt.local の編集


shutdown 時に実行するコマンドを設定する。


(3) halt-local.service の開始

# systemctl start halt-local.service


CentOS 7.1のインストール後の設定 [CentOS]

CentOS 7.1 のインストール後に行った設定をまとめてみた。

なお、インストール時のパッケージの選択状況は、下記の通りである。
・ベース環境の選択: [最小限のインストール] を選択
・アドオンの選択: [互換性ライブラリ] を選択

1. パッケージの追加インストール
# yum install iptables-services.x86_64
# yum install net-tools.x86_64

2. iptables の有効化


(1) 設定ファイル(/etc/sysconfig/iptables) の編集


CentOS 6.x で使用していたファイルを流用する。


(2) firewalld の無効化

# systemctl status firewalld
# systemctl stop firewalld
# systemctl disable firewalld
# systemctl status firewalld ... 無効化されていることを確認


(3) iptables の有効化

# systemctl status iptables
# systemctl enable iptables
# systemctl start iptables
# systemctl status iptables ... 起動されていることを確認


(補足)
iptables の有効化のためには、firewalld を無効化する必要がある。


3. DNS の設定変更


/etc/resolv.conf の自動更新を無効化するために、下記の手順を実施する。

(1) NetworkManager の無効化

# systemctl status NetworkManager
# systemctl stop NetworkManager
# systemctl disable NetworkManager
# systemctl status NetworkManager ... 無効化されていることを確認


(2) network サービスの再起動

# systemctl restart network


(3) /etc/resolv.conf の編集


4. IPv6 と SELinux の無効化

4-1. IPv6 の無効化のための設定


(1) /etc/sysctl.conf の編集(設定の追加)

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1


(2) /etc/sysconfig/network-scripts/ifcfg- の編集


IPV6* の部分をコメント化する。
(そのままでも影響はないが、上記の設定と合わせるために実施する。)


4-2. SELinux の無効化のための設定


(1) /etc/selinux/config の編集

(変更前) SELINUX=enforcing
(変更後) SELINUX=disabled

4-3. システムの再起動


IPv6 と SELinux の無効化のために再起動を実施する。
また、再起動後、下記の確認を行う。

(1) IPv6 の無効化

# ifconfig -a ... IPv6 用のアドレスが出力されないことを確認


(2) SELinux の無効化

# getenforce ... Disabled となっていることを確認

5. ログイン失敗時の待ち時間の無効化


(1) /etc/pam.d/system-auth-ac の編集

# diff system-auth-ac system-auth-ac.org
5c5
< auth        sufficient    pam_unix.so nullok try_first_pass nodelay
---
> auth        sufficient    pam_unix.so nullok try_first_pass

6. Ctrl + Alt + Del の押下によるリブートの無効化
# systemctl mask ctrl-alt-del.target

7. ユーザーの追加
(例)
# useradd -u 1000 -g 100 -s /bin/bash -m <user-name>
# passwd <user-name>


CentOS 7.1のインストール [CentOS]

CentOS 7.1.1503 のネットワーク・インストールを行った。
詳細は、以下の通りである。

1. インストールの方針


(1) ブートローダーはインストールしない。


・本バージョンでは、PBR へのインストールができないため。
・CentOS 7.1 の起動は、マルチブート環境の既存の GRUB から行う。
・ブートローダーの PBR へのインストールは、OS インストール後に実施する。
 (# grub2-install コマンドで --force オプションを指定)


(2)パッケージの選択では、ベース環境として下記の 2 候補を選択し、比較検討する。


・[最小限のインストール] または [サーバー(GUI 使用)] を選択する。
・アドオンの選択では、[互換性ライブラリ] のみを選択する。
・本バージョンでは、ベース環境選択後のパッケージの個別選択ができないため。


(3) その他


・事前にインストール先のパーティションを作成する。
・IPv4 のアドレスを手動で設定し、IPv6 は使用しない。


2. インストールの手順 (要点のみ記載)


(1) ブートメディアでのブート

(2) 機能の選択


・[Install CentOS 7] を選択する。


(3) インストール中に使用する言語の選択


・[日本語] を選択する。


(4) ネットワークとホストの設定


・[全般] で [この接続が利用可能になったときは自動的に接続する] を選択する。


(5) インストールソースの指定


・ftp://ftp.riken.go.jp/Linux/centos/7.1.1503/os/x86_64/


(6) ソフトウェアの選択


・ベース環境の選択: 使用するベース環境を選択する。
・アドオンの選択: [互換性ライブラリ] を選択する。


(7) インストール先の指定


(a) デバイスの選択


・[パーティション構成を行いたい] を選択する。
・下部の [Full disk summay and boot loader ...] をクリックする。
・デバイスを選択し、[ブートローダーをインストールしない] を選択する。


(b) 手動パーティション設定


・[不明] という項目のリストから、既存のパーティションを選択する。
・/ にマウントするパーティションは、[再フォーマット] の選択が必須である。
・[変更を適用する] を選択し、パーティションの設定を追加する。
・すべてのパーティションの追加後に、[完了] をクリックし、設定を終了する。


(8) その他の設定


・kdump を使用しない場合には、[KDUMP の設定] で設定を変更する。
・日付と時刻、言語サポート、キーボードは初期値を使用する。
 (初期値は、アジア/東京 タイムゾーン、日本語、日本語である。)


(9) インストールの開始


・右側下部の [インストールの開始] をクリックする。
・[ユーザーの設定] では、[root のパスワードの設定] のみ行う。
 (ユーザーの追加は、インストール後に実施するため。)


3. 備考


インストールされるパッケージの数は、下記の通りである。
・[最小限のインストール] を選択の場合: 306 個
・[サーバー(GUI 使用)] に変更した場合: 1231 個



debian 8のautofsの不具合への対応 [Debian]

Debian 8 の autofs での ntfs マウント時の不具合について、パッケージが更新されないため、別の方法での対応を行った。
詳細は、以下の通りである。

1. 発生事象


autofs での NTFS のマウント時にオプション指定ができない。
・NTFS のマウントには、ntfs-3g (1:2014.2.15AR.2-1+deb8u2) を使用している。
・fstype 以外のオプションを指定するとマウントポイントが認識されない。
・fstype 以外のオプションを指定しない場合には問題ない。
・mount コマンドでのオプション指定では問題なくマウントできる。

(補足)
http://dan-project.blog.so-net.ne.jp/2015-06-30


2. 原因


ntfs-3g において、-s オプションが未サポートとなっているためである。
・automount が ntfs-3g を -s オプション指定で実行する。
・-s オプションが指定されているため、ntfs-3g がエラーとなる。
・ntfs-3g がエラーとなるため、mount が実施されない。

(補足)
下記の手順により、確認できる。
・/etc/default/autofs の OPTIONS に -d を追加する。
・autofs を再起動する。
・autofs によるマウントを実行する。
・/var/log/syslog を参照する。


3. 対処方法


ntfs-3g に -s オプションを渡さないようにするため、下記の手順を実施する。


(1) 既存の ntfs-3g の保存

# cd /bin
# mv ntfs-3g ntfs-3g.org


(2) ntfs-3g の作成


/bin/ntfs-3g として、下記のシェルスクリプトを作成する。

#!/bin/sh
# patch for ntfs-3g(1:2014.2.15AR.2-1+deb8u2)
/bin/ntfs-3g.org `echo $* | sed 's/ -s//'`

4. 備考


(1) 参考情報


https://bugs.launchpad.net/ubuntu/+source/autofs/+bug/1448678


(2) ntfs-3g を Debian 7 のパッケージにバージョンダウンしても改善しない。


ntfs-3g_2012.1.15AR.5-2.1+deb7u2_i386.deb
(dpkg -i ntfs-3g_2012.1.15AR.5-2.1+deb7u2_i386.deb でインストール)

(補足)
Debian 7 では問題は発生しない。



この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。