2018年11月20日火曜日

VMware動かない。 Could not open /dev/vmmon

Could not open /dev/vmmon: ??????????????????????.
Please make sure that the kernel module `vmmon' is loaded.

# vmware-modconfig --console --build-mod vmmon
# vmware-modconfig --console --build-mod vmnet
# vmware-modconfig --console --build-mod vmci

# modprobe vmmon
# modprobe vmnet
# modprobe vmci
# service vmware restart

# modprobe vmmon
modprobe: ERROR: could not insert 'vmmon': Required key not available
# modprobe vmnet
modprobe: ERROR: could not insert 'vmnet': Required key not available
# modprobe vmci
modprobe: FATAL: Module vmci not found.
#
エラー発生。
Secure Boot keysをclearする。
BIOS
Secure Boot Configuration
Confiure Legacy Support and Secure Boot Legacy Support Enable and Secure Boot Disable
Secure Boot Key Management
□Import Custom sercure Boot keys
■Clear Secure Boot keys
□Reset Secure Boot keys to factory defaults
□Enable MS UEFI CA key









2018年10月12日金曜日

CentOS7 にChromeをインストール

# vi /etc/yum.repos.d/google-chrome.repo
[google-chrome]
name=google-chrome
baseurl=http://dl.google.com/linux/chrome/rpm/stable/x86_64
enabled=1
gpgcheck=1
gpgkey=https://dl.google.com/linux/linux_signing_key.pub

# yum update
# yum install google-chrome-stable

2018年10月11日木曜日

CentOS7 にmysql8をインストール

CentOS7にバンドルされているmariaDBとデータを削除。# yum remove mariadb-libs
# rm -rf /var/lib/mysql/

https://dev.mysql.com/downloads/repo/yum/

Red Hat Enterprise Linux 7 / Oracle Linux 7 (Architecture Independent), RPM Package
のダウンロードからリンクアドレスをコピー。(No thanks,just start my download)

# rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
# yum install mysql-community-devel
# yum install mysql-community-server
# yum install  mysql-community-client
# vi /etc/my.cnf
(追加)
log_timestamps=SYSTEM
skip-character-set-client-handshake
character-set-server=utf8mb4
explicit_defaults_for_timestamp=ON
#
# systemctl start mysqld
# systemctl enable mysqld

# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
# 次のコマンドで仮パスワードを検索して入力する。
# cat /var/log/mysqld.log | grep 'password is generated'
新しいパスワードに更新。
mysql -u root -p
初期パスワードを入力
mysql> set password= 'xxxxxxxxx';


CentOS7 safeモードで起動してパスワードをリセット
# systemctl stop mysqld
# systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"
# systemctl start mysqld
# mysql -u root
mysql> use mysql
mysql> UPDATE mysql.user SET authentication_string=null WHERE User='root';
mysql> flush privileges;
# systemctl stop mysqld
# systemctl unset-environment MYSQLD_OPTS
# systemctl start mysqld
# mysql_upgrade -u root -p                 
# mysql -u root
mysql>ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';
mysql> flush privileges;

※ upgradeしないと下記エラーがでる。
ERROR 1146 (42S02): Table 'mysql.role_edges' doesn't exist

■user追加( mysql_native_password で追加)
mysql> use mysql
mysql>  create user 'admin' identified with mysql_native_password by "No%3177%";
Query OK, 0 rows affected (0.03 sec)
mysql> grant all on *.* to admin with grant option;
Query OK, 0 rows affected (0.09 sec)
mysql> flush privileges;
mysql> select user, host, plugin from user;
+------------------+-----------+-----------------------+
| user             | host      | plugin                |
+------------------+-----------+-----------------------+
| admin            | %         | mysql_native_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session    | localhost | caching_sha2_password |
| mysql.sys        | localhost | caching_sha2_password |
| root             | localhost | caching_sha2_password |
+------------------+-----------+-----------------------+
6 rows in set (0.00 sec)

ユーザ削除
mysql> drop user 'admin';

■テストデータ作成
mysql> create database testDB;
Query OK, 1 row affected (0.17 sec)

mysql> create table testDB.mst001(
    -> id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
    ->     title VARCHAR(50),
    ->     content TEXT,
    ->     created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
    -> );
Query OK, 0 rows affected (0.70 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| testDB             |
+--------------------+
5 rows in set (0.01 sec)

mysql> describe testDB.mst001;
+------------+-------------+------+-----+-------------------+-------------------+
| Field      | Type        | Null | Key | Default           | Extra             |
+------------+-------------+------+-----+-------------------+-------------------+
| id         | int(11)     | NO   | PRI | NULL              | auto_increment    |
| title      | varchar(50) | YES  |     | NULL              |                   |
| content    | text        | YES  |     | NULL              |                   |
| created_at | timestamp   | NO   |     | CURRENT_TIMESTAMP | DEFAULT_GENERATED |
+------------+-------------+------+-----+-------------------+-------------------+
4 rows in set (0.01 sec)

mysql> use testDB;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+------------------+
| Tables_in_testDB |
+------------------+
| mst001           |
+------------------+
1 row in set (0.00 sec)



mysql>insert into testDB.mst001 values(1,'title01','cont01',20181126);
mysql>insert into testDB.mst001 values(2,'title02','cont02',20181126);
mysql> select * from mst001;
+----+---------+---------+---------------------+
| id | title   | content | created_at          |
+----+---------+---------+---------------------+
|  1 | title01 | cont01  | 2018-11-26 00:00:00 |
|  2 | title02 | cont02  | 2018-11-26 00:00:00 |
+----+---------+---------+---------------------+
2 rows in set (0.00 sec)

mysql> delete from testDB.mst001 where id=1;
Query OK, 1 row affected (0.15 sec)

mysql> select * from mst001;
+----+---------+---------+---------------------+
| id | title   | content | created_at          |
+----+---------+---------+---------------------+
|  2 | title02 | cont02  | 2018-11-26 00:00:00 |
+----+---------+---------+---------------------+
1 row in set (0.00 sec)

mysql>create database temp;
mysql>use temp;
mysql>create table g ( code int, goods varchar(16), price int );
mysql>create table t (id int, code int, qty int);
mysql>insert into g value(1,"りんご",150), (2,"みかん",50),(3,"ぶどう",500);
mysql>insert into t value(1, 1,10),(1, 2,15),(2, 3,18);
mysql>create view  v as select id, code, goods, qty, price, qty*price as amt from t inner join g using(code) where t.id=1;
mysql>select * from g;
mysql>select * from t;
mysql>select * from v;
mysql>drop view v;
mysql>drop table g, t;
mysql>drop database temp;







2018年8月31日金曜日

CentOS7のcron

CentOS7は、デフォルトでanacronが入っている。


# vi /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed


# vi /etc/anacrontab
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22
#period in days   delay in minutes   job-identifier   command
1       5       cron.daily              nice run-parts /etc/cron.daily
7       25      cron.weekly             nice run-parts /etc/cron.weekly
@monthly 45     cron.monthly            nice run-parts /etc/cron.monthly


【noanacrontabに入れ替える。】

# yum -y install cronie-noanacron
# yum -y remove cronie-anacron

【ユーザ毎】
$ crontab -e
00 * * * * /home/aws/aws.sh

/var/spool/cron下にユーザ名毎に作られる。


【システム初期設定】
# cat /etc/cron.d/dailyjobs
# Run the daily, weekly, and monthly jobs if cronie-anacron is not installed
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# run-parts
02 4 * * * root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.daily
22 4 * * 0 root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.weekly
42 4 1 * * root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.monthly
[root@buffy3 ~]#

# systemctl restart crond
確認
# less /var/log/cron


ユーザ単位であれば、
$ crontab -e
05 * * * * /home/aws/aws/app/s3daily.sh
cronの再起動不要。







pythonのインストール

python Ver3.6をインストール
# yum install python36 python36-libs python36-devel
# python36 -m ensurepip # pip を使えるようにする。
【VENV仮想環境の構築】
# cd /usr/local
# python36 -m venv venv36
# chmod -R a+w venv36 ※インストールFIX後戻す。chmod -R go-w vnen36
$ source /usr/local/venv36/bin/activate

※下記環境がセットされる。
VIRTUAL_ENV=/usr/local/venv/venv36
PATH=/usr/local/venv/venv36/bin:$PATH
deactivate () {}

【PATHの確認】$ python36 -c "import sys; print(sys.path)"
['', '/usr/lib64/python36.zip', '/usr/lib64/python3.6', '/usr/lib64/python3.6/lib-dynload', '/usr/local/venv36/lib64/python3.6/site-packages', '/usr/local/venv36/lib/python3.6/site-packages']

※pipインストール確認
$ pip3 install --upgrade pip
$ pip3 install --upgrade pip --proxy=http://192.168.1.254:3128
$ pip3 list
$ pip3 list --outdated
$ pip3 list --outdated | awk 'NR>2 {print $1}' | xargs pip3 install -U
$ pip3 freeze>requirements.txt
$ pip3 install -r requirements.txt

【proxy下】
$ pip3 install --upgrade pip --proxy=http://user:pwss@192.168.25.254:3128


※エラー発生
'missing Apache httpd server packages.' % APXS)
RuntimeError: The 'apxs' command appears not to be installed or is not executable. Please check the list of prerequisites in the documentation for this package and install any missing Apache httpd server packages.
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-zxt5kngl/mod-wsgi/

# yum -y install httpd-devel で解決。

【プロキシ経由でインストール】
pip3  --proxy=http://192.168.x.xxx:3128  install python-dateutil

【Djangoのインストール】
$ pip3 install Django
$ ls -l /usr/local/venv/venv36/lib/python3.6/site-packages/django   # 確認


【excelの読み書き】
# python36 -m pip install openpyxl   # excelの読み書きを使えるようにする。

【oracleと接続】

# python36 -m pip install cx_oracle

ここから該当バージョンのドライバをタウンロード
https://www.oracle.com/technetwork/jp/database/features/instant-client/index-352321-ja.html
instantclient-basic-linux.x64-11.2.0.4.0.zip

# cd /opt/libs
# unzip instantclient-basic-linux.x64-11.2.0.4.0.zip
# ln -s /opt/libs/instantclient_11_2 /opt/libs/oracle

# vi /etc/profile.d/oracle.sh
export LD_LIBRARY_PATH=/opt/libs/oracle:$LD_LIBRARY_PATH
# . /etc/profile
# vi /etc/sysconfig/httpd
LD_LIBRARY_PATH=/opt/libs/oracle:$LD_LIBRARY_PATH

# vi /etc/ld.so.conf.d/oracle.conf
/opt/libs/oracle
# ldconfig
# ldconfig  -p |grep libclntsh

【確認】
$ python36
>>> import cx_Oracle
>>> cx_Oracle.clientversion()
(11, 2, 0, 4, 0)


いつも上手く行くのになぜかエラー
cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library: "/opt/libs/oracle/lib/libclntsh.so: cannot open shared object file: No such file or directory". 

# vi /etc/ld.so.conf.d/oracle.conf
/opt/libs/oracle
# ldconfig
# ldconfig  -p |grep libclntsh

# dnf install libnsl
# python3
> import ctypes
> ctypes.cdll.LoadLibrary('/opt/libs/oracle/libclntsh.so.11.1')
→動いた!!

なぜ? いつもは不要なのに!!

# python36 -m pip install --upgrade pip
# python36 -m pip list
Package    Version
---------- -------
cx-Oracle  7.0.0
et-xmlfile 1.0.1
jdcal      1.4 
openpyxl   2.5.12
pip        18.1 
setuptools 39.0.1 


※python Ver2と共存可能。
# python test.py
# python36 test.py

【例1】
# vi excel.py
#!/usr/bin/env python
import openpyxl as excel
wb = excel.Workbook()
ws = wb.active
ws["A1"] = "こんにちは"
wb.save("hello.xlsx")
print("save end")

【例2】
#!/usr/bin/env python
import cx_Oracle

HOST='192.168.xx.xxx'
PORT = '1521'
SID = 'xxxxxxxx'

tns = cx_Oracle.makedsn(HOST, PORT, SID)
conn = cx_Oracle.connect("userID", "password", tns)

print ( conn.version)
cur = conn.cursor()
print ( conn.version)

#cur.execute("""SELECT INSTANCE_NAME,HOST_NAME FROM v$instance""")

#rows = cur.fetchall()

#for r in rows:
#    print("%d : %s" % (r[0], r[1]))


【例3】
# vi test.py
#!/usr/bin/env python
import os
import sys
import glob
import shutil
import datetime
import smtplib
from email.mime.text import MIMEText
from email.utils import formatdate

down_dir = sys.argv[1]
data_dir = sys.argv[2]
store_dir = sys.argv[3]
office_dir = sys.argv[4]
time_report = sys.argv[5]

FROM_ADDRESS = 'xxxxx@xxxx.xx.xx'
MY_PASSWORD = 'yyyyy'
TO_ADDRESS = 'zzzz@zzzzzz.zz.zz'
BCC = 'xxxxx@xxxxxx.xx.xxp'
SUBJECT = 'title'
BODY = 'body'

def create_message(from_addr, to_addr, bcc_addrs, subject, body):
  msg = MIMEText(body)
  msg['Subject'] = subject
  msg['From'] = from_addr
  msg['To'] = to_addr
  msg['Bcc'] = bcc_addrs
  msg['Date'] = formatdate()
  return msg

def send(from_addr, to_addrs, msg):
  smtpobj = smtplib.SMTP('localhost', 25)
  smtpobj.ehlo()
# smtpobj.starttls()
  smtpobj.ehlo()
# smtpobj.login(FROM_ADDRESS, MY_PASSWORD)
  smtpobj.sendmail(from_addr, to_addrs, msg.as_string())
  smtpobj.close()
def maillog(subject , body):
  msg = create_message(FROM_ADDRESS, TO_ADDRESS, BCC, subject, body)
  send(FROM_ADDRESS, TO_ADDRESS, msg)

def utf2sjis( src, dst ):
  with open( dst, 'w', encoding='cp932') as fout:
  with open( src , encoding='utf-8') as fin:
  fout.write(fin.read())


for download_dir, dirs, files in os.walk(down_dir):
  num = len(files)
  maillog( "START Credit daily process %d files downloaded(%s)" % ( num, time_report) , "%8d files downloaded to %-30s(Execution time:%s)" % (num, download_dir, time_report ))

for name in glob.glob( download_dir+"/*" ):
bname = os.path.basename( name )
  start = bname.find( "SERCHCHARACTER_" ) + len( "SERCHCHARACTER_" )
  year = bname[ start : start + 4 ]
  month = bname[ start + 4 : start + 6 ]
  day = bname[ start + 6 : start + 8 ]
  if int(day) < 16:
    term = "A"
    else:
    term = "B"
    folder= data_dir + "/" + year + month + term
    dname = folder + "/" + bname
    sname = store_dir + "/" + bname
    oname = office_dir + "/" + bname
    if os.path.exists( folder ):
      if os.path.exists( dname ):
        shutil.move( dname, dname + ".dup" + datetime.datetime.now().strftime("%Y%m%d%H%M%S.%f"))
        maillog( "WARNING File Duplicate %s" % bname, "%s is allready exist.(data)" % dname )
     else:
       os.mkdir( folder )
     shutil.move( name, folder )
  if os.path.exists( sname ):
     shutil.move( sname, sname + ".dup" + datetime.datetime.now().strftime("%Y%m%d%H%M%S.%f"))
     maillog( "WARNING File Duplicate %s" % bname, "%s is allready exist.(ToSend1)" % sname )
  if os.path.exists( oname ):
    shutil.move( oname, oname + ".dup" + datetime.datetime.now().strftime("%Y%m%d%H%M%S.%f"))
    maillog( "WARNING File Duplicate %s" % bname, "%s is allready exist.(ToSend2)" % oname )

  utf2sjis( dname, oname )
  shutil.copy( oname, sname )


#today = datetime.date.today().day
#yesterday = datetime.datetime.now() - datetime.timedelta(days=1)
#
#if today == 1 or today == 16:
#
# if today == 16:
# term = "A"
# else:
# term = "B"
#
# term_folder = yesterday.strftime( "%Y%m" ) + term
#
# office_folder = office_dir + "/" + term_folder
#
# if os.path.exists( office_folder ):
# shutil.move( office_folder, office_folder + ".dup" + datetime.datetime.now().strftime("%Y%m%d%H%M%S.%f"))
# maillog( 'WARNING File Duplicate', "%s is allready exist.(ToSend2)" % office_folder )
#
# shutil.copytree( data_dir + "/" + term_folder, office_folder )

2018年7月13日金曜日

CentOS7 libreoffice インストール


2025/01/24追記
ダウンロード
LibreOffice_24.8.4_Linux_x86-64_rpm.tar.gz
LibreOffice_24.8.4_Linux_x86-64_rpm_helppack_ja.tar.gz
LibreOffice_24.8.4_Linux_x86-64_rpm_langpack_ja.tar.gz

# dnf remove libreoffice*
# cd LibreOffice_24.8.4_Linux_x86-64_rpm/RPMS
# dnf install *.rpm
# cd LibreOffice_24.8.4.2_Linux_x86-64_rpm_helppack_ja/RPMS
# dnf install *.rpm
# cd LibreOffice_24.8.4.2_Linux_x86-64_rpm_langpack_ja/RPMS
# dnf install *.rpm


 
#--------------------------------------------------------------
まず、現行バージョンを消す。

# yum remove libreoffice*

ここからダウンロード
https://ja.libreoffice.org/download/libreoffice/


# tar xvzf LibreOffice_6.0.5_Linux_x86-64_rpm.tar.gz
# cd LibreOffice_6.0.5.2_Linux_x86-64_rpm/RPMS
# rpm -Uvh *.rpm


# tar xvzf LibreOffice_6.0.5_Linux_x86-64_rpm_langpack_ja.tar.gz
# cd LibreOffice_6.0.5.2_Linux_x86-64_rpm_langpack_ja/RPMS
# ls -l
合計 796
-rw-r--r--. 1 root root 802623  6月 20 17:07 libobasis6.0-ja-6.0.5.2-2.x86_64.rpm
-rw-r--r--. 1 root root   9117  6月 20 17:07 libreoffice6.0-ja-6.0.5.2-2.x86_64.rpm
# rpm -Uvh *.rpm


2020/08/04 追記

CentOS8 にインストール
CentOS Linux release 8.2.2004 (Core)

https://ja.libreoffice.org/download/download/

Supplementary Downloads:
日本語パッケージ:  翻訳されたユーザーインターフェース: 日本語 (Torrent, 情報)

# tar xvzf  LibreOffice_6.4.5_Linux_x86-64_rpm.tar.gz
# cd LibreOffice_6.4.5.2_Linux_x86-64_rpm/RPMS
#  dnf install *.rpm

# tar xvzf LibreOffice_6.4.5_Linux_x86-64_rpm_langpack_ja.tar.gz
# cd LibreOffice_6.4.5.2_Linux_x86-64_rpm_langpack_ja/RPMS
# dnf install *.rpm

clam AntiVirusを設定してみた。

#---------------------------------------------------------------------------------
# CentOS8にClam AntiVirusを設定してみた。(追記)
#---------------------------------------------------------------------------------
# cat /etc/redhat-release
CentOS Linux release 8.4.2105
# dnf --enablerepo=epel install clamav clamav-scanner-systemd clamav-update
# dnf list|grep clam
clamav.x86_64 0.103.2-1.el8 @epel
clamav-filesystem.noarch 0.103.2-1.el8 @epel
clamav-lib.x86_64 0.103.2-1.el8 @epel
clamav-update.x86_64 0.103.2-1.el8 @epel clamd.x86_64 0.103.2-1.el8 @epel
clamav-data.noarch 0.103.2-1.el8 epel
clamav-devel.x86_64 0.103.2-1.el8 epel
clamav-milter.x86_64 0.103.2-1.el8 epel
clamav-unofficial-sigs.noarch 7.2.4-1.el8 epel

# ln -s /etc/clamd.d/scan.conf /etc/clamd.conf
# vi /etc/clamd.conf
#Example
LogFile /var/log/clamd.scan
LogFileMaxSize 2M
LogTime yes
LogRotate yes
LocalSocket /var/run/clamd.scan/clamd.sock
FixStaleSocket yes
ExcludePath ^/proc/
ExcludePath ^/sys/
ExcludePath ^/dev/
User root                                   # user clamscan

# vi /etc/freshclam.conf
#Example
DatabaseDirectory /var/lib/clamav
UpdateLogFile /var/log/freshclam.log/
LogFileMaxSize 2M
LogTime yes
LogRotate yes
DatabaseOwner root
DatabaseMirror database.clamav.net
NotifyClamd /etc/clamd.d/scan.conf

HTTPProxyServer http://192.168.254.254
HTTPProxyPort 3128

# vi /etc/sysconfig/freshclam
※ FRESHCLAM_DELAYをコメントアウト(自動アップデート設定)
→ファイルが存在しなかったので、スキップ

# freshclam

# systemctl enable clamd@scan
# systemctl start clamd@scan

# vi /etc/cron.daily/clamscan.sh
#!/bin/bash
PATH=/usr/bin:/bin
dnf -y update clamav-server clamav-data clamav-update clamav-filesystem clamav  clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd > /dev/null 2>&1
freshclam > /dev/null
CLAMSCANTMP=`mktemp`
clamdscan /boot  /dev  /etc  /home  /media  /mnt  /opt  /proc  /root  /run  /srv  /sys  /tmp  /usr  /var --remove > $CLAMSCANTMP 2>&1
[ ! -z "$(grep FOUND$ $CLAMSCANTMP)" ] && \
grep FOUND$ $CLAMSCANTMP | mail -s "Virus Found in `hostname`" root
[ -z "$(grep FOUND$ $CLAMSCANTMP)" ] && \
echo "clamdscan normal end" | mail -s "Virus Not Found in `hostname`" root
rm -f $CLAMSCANTMP


# chown root:root /etc/cron.daily/clamscan.sh
# chmod 755 /etc/cron.daily/clamscan.sh

除外ディレクトリの設定
# vi /etc/clamd.d/scan.conf
ExcludePath ^/boot/
ExcludePath ^/proc/
ExcludePath ^/sys/
ExcludePath ^/dev/
ExcludePath ^/etc/shadow
ExcludePath ^/etc/shadow-
ExcludePath ^/etc/gshadow
ExcludePath ^/etc/gshadow-
ExcludePath ^/etc/audit/
ExcludePath ^/etc/security/
ExcludePath ^/etc/selinux/targeted/
ExcludePath ^/etc/selinux/semanage.conf
ExcludePath ^/etc/selinux/config
ExcludePath ^/var/log/audit/

SElinux
# setsebool -P antivirus_can_scan_system 1
# setsebool -P antivirus_use_jit 1

# getsebool -a | grep antiv
antivirus_can_scan_system --> on
antivirus_use_jit --> on

※ 膨大にメモリーを消費する(スワップ発生)
# vi /usr/lib/systemd/system/clamd@.service
[Unit]
Description = clamd scanner (%i) daemon
Documentation=man:clamd(8) man:clamd.conf(5) https://www.clamav.net/documents/
After = syslog.target nss-lookup.target network.target

[Service]
Type = forking
ExecStart = /usr/sbin/clamd -c /etc/clamd.d/%i.conf
# Reload the database
ExecReload=/bin/kill -USR2 $MAINPID
Restart = on-failure
TimeoutStartSec=420
#IOSchedulingPriority = 7
#CPUSchedulingPolicy = other
#CPUSchedulingPriority = 5
MemoryLimit=512M
CPUQuota=30%
#Nice = 19

[Install]
WantedBy = multi-user.target


#---------------------------------------------------------------------------------
# CentOS7にClam AntiVirusを設定してみた。
#---------------------------------------------------------------------------------

# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)

# yum -y install epel-release.noarch
# yum list | grep clam
clamav.x86_64                             0.100.0-2.el7                @epel 
clamav-data.noarch                        0.100.0-2.el7                @epel 
clamav-devel.x86_64                       0.100.0-2.el7                @epel 
clamav-filesystem.noarch                  0.100.0-2.el7                @epel 
clamav-lib.x86_64                         0.100.0-2.el7                @epel 
clamav-scanner-systemd.x86_64             0.100.0-2.el7                @epel 
clamav-server-systemd.x86_64              0.100.0-2.el7                @epel 
clamav-update.x86_64                      0.100.0-2.el7                @epel 
clamd.x86_64                              0.100.0-2.el7                @epel 
clamav-data-empty.noarch                  0.100.0-2.el7                epel   
clamav-milter.x86_64                      0.100.0-2.el7                epel   
clamav-milter-systemd.x86_64              0.100.0-2.el7                epel   
clamav-unofficial-sigs.noarch             3.7.2-1.el7                  epel   
clamsmtp.x86_64                           1.10-12.el7                  epel
※すべてepelを確認。

# yum install clamav-server clamav-data clamav-update clamav-filesystem clamav clamav-scanner clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd

=================================================================================
Package アーキテクチャー バージョン リポジトリー 容量
=================================================================================
インストール中:
clamav x86_64 0.100.0-2.el7 epel 639 k
clamav-server-systemd x86_64 0.100.0-2.el7 epel 25 k
clamav-update x86_64 0.100.0-2.el7 epel 99 k
clamd x86_64 0.100.0-2.el7 epel 118 k
clamav-devel x86_64 0.100.0-2.el7 epel 45 k
clamav-scanner-systemd x86_64 0.100.0-2.el7 epel 25 k

依存性関連でのインストールをします:
clamav-data noarch 0.100.0-2.el7 epel 158 M
clamav-filesystem noarch 0.100.0-2.el7 epel 26 k
clamav-lib x86_64 0.100.0-2.el7 epel 755 k
=================================================================================

# ln -s /etc/clamd.d/scan.conf /etc/clamd.conf
# vi /etc/clamd.conf
#Example
LogFile /var/log/clamd.scan
LogFileMaxSize 2M
LogTime yes
LogRotate yes
LocalSocket /var/run/clamd.scan/clamd.sock
FixStaleSocket yes
ExcludePath ^/proc/
ExcludePath ^/sys/
ExcludePath ^/dev/
User root

# vi /etc/freshclam.conf
#Example
DatabaseDirectory /var/lib/clamav
UpdateLogFile /var/log/freshclam.log
LogFileMaxSize 2M
LogTime yes
LogRotate yes
DatabaseOwner root
DatabaseMirror database.clamav.net
NotifyClamd /etc/clamd.d/scan.conf

# vi /etc/sysconfig/freshclam
※ FRESHCLAM_DELAYをコメントアウト(自動アップデート設定)

# freshclam

# systemctl enable clamd@scan
# systemctl start clamd@scan

# vi /etc/cron.daily/clamscan.sh

#!/bin/bash
PATH=/usr/bin:/bin
yum -y update clamav-server clamav-data clamav-update clamav-filesystem clamav clamav-scanner clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd > /dev/null 2>&1
freshclam > /dev/null
CLAMSCANTMP=`mktemp`
clamdscan /boot  /dev  /etc  /home  /media  /mnt  /opt  /proc  /root  /run  /srv  /sys  /tmp  /usr  /var --remove > $CLAMSCANTMP 2>&1
[ ! -z "$(grep FOUND$ $CLAMSCANTMP)" ] && \
grep FOUND$ $CLAMSCANTMP | mail -s "Virus Found in `hostname`" root
[ -z "$(grep FOUND$ $CLAMSCANTMP)" ] && \
echo "clamdscan normal end" | mail -s "Virus Not Found in `hostname`" root
rm -f $CLAMSCANTMP

# chown root:root /etc/cron.daily/clamscan.sh
# chmod 755 /etc/cron.daily/clamscan.sh

除外ディレクトリの設定
# vi /etc/clamd.d/scan.conf
ExcludePath ^/boot/
ExcludePath ^/proc/
ExcludePath ^/sys/
ExcludePath ^/dev/
ExcludePath ^/etc/shadow
ExcludePath ^/etc/shadow-
ExcludePath ^/etc/gshadow
ExcludePath ^/etc/gshadow-
ExcludePath ^/etc/audit/
ExcludePath ^/etc/security/
ExcludePath ^/etc/selinux/targeted/
ExcludePath ^/etc/selinux/semanage.conf
ExcludePath ^/etc/selinux/config
ExcludePath ^/var/log/audit/

setsebool -P antivirus_can_scan_system 1

→/usr/lib/tmpfiles.d/clamd.scan.confがインストールされている。
# vi /etc/tmpfiles.d/clamd.conf
#Type  Path               Mode  UID   GID   Age  Argument
D /var/run/clamav 0755 root root -

echo "d /var/run/clamav 0755 root root -" > /etc/tmpfiles.d/clamd.conf
systemd-tmpfiles --create clamd.conf
systemctl daemon-reload


まだ、0.100.1は、yumで持ってこれない!!(2018/7/13現在)  ちゃっと様子見
# freshclam
Fri Jul 13 17:02:26 2018 -> ^Your ClamAV installation is OUTDATED!
Fri Jul 13 17:02:26 2018 -> ^Local version: 0.100.0 Recommended version: 0.100.1
Fri Jul 13 17:02:26 2018 -> DON'T PANIC! Read https://www.clamav.net/documents/upgrading-clamav

# clamd --v
ClamAV 0.100.0/24748/Fri Jul 13 13:55:05 2018

# clamdscan -v /root /tmp /etc /opt /var /usr /home
/root: OK
/tmp: OK
/etc: OK
/opt: OK
/var: OK
/usr: OK
/home: OK
----------- SCAN SUMMARY -----------
Infected files: 0
Time: 1099.922 sec (18 m 19 s)

# permission error が多発するばあい。
sudo clamdscan --fdpass /var


SElinux
# setsebool -P antivirus_can_scan_system 1
# setsebool -P antivirus_use_jit 1

# getsebool -a | grep antiv
antivirus_can_scan_system --> on
antivirus_use_jit --> on



Rocky Linux9.8 Docker インストール

# cat /etc/redhat-release Rocky Linux release 9.8 (Blue Onyx) # dnf remove docker docker-client  docker-client-latest  docker-common  docker...