Clamd FAILED :: Starting Clam AntiVirus Daemon: LibClamAV Error: cl_cvdhead: Can't read CVD header in /var/clamav/daily.cld

If you are getting following error while restarting the clamd
--------------------------------------

Stopping Clam AntiVirus Daemon:                            [FAILED]
Starting Clam AntiVirus Daemon: LibClamAV Error: cl_cvdhead: Can't read CVD header in /var/clamav/daily.cld
LibClamAV Error: cli_loaddbdir(): error parsing header of /var/clamav/daily.cld
ERROR: Malformed database
                                                           [FAILED]
--------------------------------------


That means the DBs are corrupted. Do this:
--------------
cd /usr/share/clamav/
--------------
Empty the content of these 3 files:
daily.cvd
main.cld
mirrors.dat
Then run this command to download fresh copies for your DBs:

/etc/cron.daily/freshclam

Although this is not necessary, but restart clamd:

Code:
/scripts/restartsrv_clamd
Hope this helps!

Run FTP on multiple ports (Proftpd & Pure-FTPD)

In many cases you don't want to allow default FTP port which is 21 and need to set FTP on different port OR you want both for FTP. Here I am specifying the steps to configure FTP on multiple ports and I am using custom port number 8226 here for FTP:

Pro-FTPD

in pro-ftpd, its quite simple and you just need to specify the different port in "/etc/pure-ftpd.conf" as given below:
---------------------
Port                            8226
PassivePorts    30000 50000
---------------------

On my testing server I've added these lines above following line which works fine:
---------------------
# Umask 022 is a good standard umask to prevent new dirs and files
---------------------

Once you are done with the changes, restart the service:
---------------------
/etc/init.d/proftpd restart
---------------------

make sure it is working through following command:
---------------------
root@[~]# netstat -lpn | grep ftp
tcp        0      0 :::8226                     :::*                        LISTEN      854817/proftpd: (ac 
tcp        0      0 :::21                       :::*                        LISTEN      854817/proftpd: (ac 
---------------------

Now try connecting with both ports and it should work.

Pure-FTPD

Pure-FTPD configuration is bit lengthy but it is always recommended to use pure-ftp instead as Pure-FTPd is generally regarded as faster FTP than Pro FTPd. So here is the configuration for running pure-ftpd on multiple ports

1. Make a copy of default pure-ftpd.conf file
---------------------
cp -p /etc/pure-ftpd.conf /etc/pure-ftpd-8226.conf
---------------------

2. Edit the file /etc/pure-ftpd-8226.conf
---------------------
vi /etc/pure-ftpd-8226.conf
---------------------

3. Find and replace the lines
---------------------
# Bind 127.0.0.1,21
With
Bind 0.0.0.0,8226
---------------------

4. Now make a copy of the start-up script and run with the new config as a separate service:
---------------------
cp -p /etc/rc.d/init.d/pure-ftpd /etc/rc.d/init.d/pure-ftpd-8226
---------------------

5. Edit the /etc/rc.d/init.d/pure-ftpd-31 to load with the new config.
---------------------
vi /etc/rc.d/init.d/pure-ftpd-31
---------------------

6. Find and replace the lines
---------------------
$DAEMONIZE $fullpath /etc/pure-ftpd.conf -O clf:/var/log/xferlog $OPTIONS –daemonize
With
$DAEMONIZE $fullpath /etc/pure-ftpd-8226.conf -O clf:/var/log/xferlog $OPTIONS –daemonize
---------------------

7. Now start the new service.
---------------------
/etc/init.d/pure-ftpd-8226 start
---------------------
Done, now make sure that both ports are working
---------------------
root@vault [~]# netstat -lpn | grep ftp
tcp        0      0 0.0.0.0:6497                0.0.0.0:*                   LISTEN      7589/pure-ftpd (SER 
tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      23093/pure-ftpd (SER
---------------------
Note :: 
# If you want to stop serving port 21 for FTP with pure-ftpd, simply stop the default service:
---------------------
/etc/init.d/pure-ftpd stop
---------------------
and restart another start-up script
---------------------
/etc/init.d/pure-ftpd-8226 restart
---------------------
That's it.

# The another important thing is that you need to allow passive port range in custom conf file (/etc/pure-ftpd-8226.conf), simply remove the comment (#) in front of below line:
---------------------
PassivePorts    30000 50000
---------------------
# Make sure that passive port range (30000:50000) and custom port (8226) is open in firewall if you have any

I hope this post will make your work easier :-) 



How To Create OpenVZ Virtual Machines (VPS)

How do I create OpenVZ virtual machine (VPS) to run CentOS or Debian as VPS?

OpenVZ comes with a template for each VPS or virtual machine. OpenVZ provides templates for all leading Linux distributions. You need to download those templates in order to create a VPS. Visit this page to grab templates for vps.

Download Ubuntu Linux VPS

Type the following commands to download precreated Ubuntu Linux template:

# cd /vz/template/cache
# wget http://download.openvz.org/template/precreated/ubuntu-9.04-x86_64.tar.gz

Download CentOS 64 bit template:

# cd /vz/template/cache
# wget http://download.openvz.org/template/precreated/centos-5-x86_64.tar.gz

Create VPS

Now you’ve download the template for your virtual machine. You can just start a VPS based on the template you have just downloaded, by typing the following commands: [10 is VPS ID you can use as per your requirement]

vzctl create 10 –ostemplate ubuntu-9.04-x86_64
vzctl set 10 –onboot yes –save

*** Set IP for VPS ***
vzctl set 10 –ipadd 192.168.1.5 –save

*** Set Nameservers IP for VPS ***
vzctl set 10 –nameserver 192.168.1.111 –save
vzctl set 10 –nameserver 192.168.1.111 –save

*** Set Hostname IP for VPS ***
vzctl set 10 –hostname ourlinuxblog.wordpress.com –save

*** Set Disk quota for VPS (10G min [soft] and 11G max hard limit) ***
vzctl set 10 –diskspace 10G:11G –save

*** Okay lets the vps ***
vzctl start 10

*** Set root user password for VPS ***
vzctl exec 10 passwd

vzctl is used to create and set various vps properties such as memory, disk usage and much more. Where,

* create 10 : Your VPS ID.
* –ostemplate ubuntu-9.04-x86_64 : VPS template.
* –config vps.ubuntu: Save configuration.
* set 10 : Set various option for VPS ID # 10.
* –onboot yes : Make sure VPS boots automatically after a reboot.
* –save : Save changes to config file.

Common OpenVZ Admin Tasks

vzctl act as a master tool for various tasks:

How Do I Set VPS Name to ourlinuxblog.wordpress.com ?

# vzctl set 10 –hostname ourlinuxblog.wordpress.com –save

How Do I Set VPS IP Address?

# vzctl set 10 –ipadd 74.86.48.99 –save

How Do I Set VPS DNS Name Servers?

# vzctl set 10 –nameserver 10.0.1.11 –save

How Do I Set Disk Quota?

# vzctl set 10 –diskspace SoftLimitG:HardLimitG –save

# vzctl set 10 –diskspace 10G:12G –save

How Do I Stop / Start / Restart VPS Servers?

# vzctl start 10
# vzctl restart 10
# vzctl stop 10

How Do I Run a Command For VPS?

You can run command as follows

# vzctl exec 10 w
# vzctl exec 10 df
# vzctl exec 10 date
# vzctl exec 10 ps aux

How Do I Login Into VPS Server (container)?

# vzctl enter 10

How Do I Delete VPS?

Type the following command to delete VPS:

# vzctl destroy 10

How to check command history by date/time

If you want to check history of the command by date and time, you need to set following export path on the server

root@server [~]# export HISTTIMEFORMAT='%F %T '

then you will get the output of history command like given below:

root@layang [/tmp]# history | grep ls
31 2010-10-24 18:33:45 ls
33 2010-10-24 18:33:45 ls
36 2010-10-24 18:33:45 ls
64 2010-10-24 18:33:45 ls

Thats it :o)

cPanel :: Unable to locate clamd

If you are not able to restart clamd on cpanel server and getting following error:

root@hazel [~]# /scripts/restartsrv_clamd
Unable to locate clamd

Please follow the steps as given below:

# Red Hat Enterprise Linux 5 / i386:
rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
# Red Hat Enterprise Linux 5 / x86_64:
rpm -Uhv http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS//rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm

Then install it through yum:

yum install clamd

And finally restart clamd service:

/scripts/restartsrv_clamd

That's it.

Install yum

This article is specific to CentOS, however the packages required for yum here are the same on other flavors

The scripts shown below install all the packages upon which yum depends for a 386 distro (Need separate 64 bit instructions)

Please note - that the version numbers of the packages WILL change as later releases come out, it is up to you to ensure that the packages used are the latest. If you find a package in this script has become deprecated, please update this page with the latest package so others do not have to search for it as well.

CentOS 4 i386

rpm -Uvh http://mirror.centos.org/centos-4/4/os/i386/CentOS/RPMS/gmp-4.1.4-3.i386.rpm
rpm -Uvh http://mirror.centos.org/centos-4/4/os/i386/CentOS/RPMS/readline-4.3-13.i386.rpm
rpm -Uvh http://mirror.centos.org/centos-4/4/os/i386/CentOS/RPMS/python-2.3.4-14.7.el4.i386.rpm
rpm -Uvh http://mirror.centos.org/centos-4/4/os/i386/CentOS/RPMS/libxml2-2.6.16-12.6.i386.rpm
rpm -Uvh http://mirror.centos.org/centos-4/4/os/i386/CentOS/RPMS/libxml2-python-2.6.16-12.6.i386.rpm
rpm -Uvh http://mirror.centos.org/centos-4/4/os/i386/CentOS/RPMS/expat-1.95.7-4.i386.rpm
rpm -Uvh http://mirror.centos.org/centos-4/4/os/i386/CentOS/RPMS/python-elementtree-1.2.6-5.el4.centos.i386.rpm
rpm -Uvh http://mirror.centos.org/centos-4/4/os/i386/CentOS/RPMS/sqlite-3.3.6-2.i386.rpm
rpm -Uvh http://mirror.centos.org/centos-4/4/os/i386/CentOS/RPMS/python-sqlite-1.1.7-1.2.1.i386.rpm
rpm -Uvh http://mirror.centos.org/centos-4/4/os/i386/CentOS/RPMS/elfutils-libelf-0.97.1-5.i386.rpm
rpm -Uvh http://mirror.centos.org/centos-4/4/os/i386/CentOS/RPMS/elfutils-0.97.1-5.i386.rpm
rpm -Uvh http://mirror.centos.org/centos-4/4/os/i386/CentOS/RPMS/rpm-4.3.3-26_nonptl.i386.rpm
rpm -Uvh http://mirror.centos.org/centos-4/4/os/i386/CentOS/RPMS/rpm-python-4.3.3-32_nonptl.i386.rpm
rpm -Uvh http://mirror.centos.org/centos-4/4/os/i386/CentOS/RPMS/python-urlgrabber-2.9.8-2.noarch.rpm
rpm -Uvh ftp://ftp.pbone.net/mirror/ftp.centos.org/4.8/os/alpha/CentOS/RPMS/centos-yumconf-4-4.5.noarch.rpm
rpm -Uvh http://mirror.centos.org/centos-4/4/os/i386/CentOS/RPMS/yum-metadata-parser-1.0-8.el4.centos.i386.rpm
rpm -Uvh http://mirror.centos.org/centos-4/4/os/i386/CentOS/RPMS/yum-2.4.3-4.el4.centos.noarch.rpm
yum -y update

Note: CentOS 4 i386 updated 20 September 2010
[edit] CentOS 4 X86_64

rpm -Uvh http://mirror.centos.org/centos/4/os/x86_64/CentOS/RPMS/gmp-4.1.4-3.x86_64.rpm
rpm -Uvh http://mirror.centos.org/centos/4/os/x86_64/CentOS/RPMS/readline-4.3-13.x86_64.rpm
rpm -Uvh http://mirror.centos.org/centos/4/os/x86_64/CentOS/RPMS/python-2.3.4-14.7.el4.x86_64.rpm
rpm -Uvh http://mirror.centos.org/centos/4/os/x86_64/CentOS/RPMS/libxml2-2.6.16-12.x86_64.rpm
rpm -Uvh http://mirror.centos.org/centos/4/os/x86_64/CentOS/RPMS/libxml2-python-2.6.16-12.x86_64.rpm
rpm -Uvh http://mirror.centos.org/centos/4/os/x86_64/CentOS/RPMS/expat-1.95.7-4.x86_64.rpm
rpm -Uvh http://mirror.centos.org/centos/4/os/x86_64/CentOS/RPMS/python-elementtree-1.2.6-5.el4.centos.x86_64.rpm
rpm -Uvh http://mirror.centos.org/centos/4/os/x86_64/CentOS/RPMS/sqlite-3.3.6-2.x86_64.rpm
rpm -Uvh http://mirror.centos.org/centos/4/os/x86_64/CentOS/RPMS/python-sqlite-1.1.7-1.2.1.x86_64.rpm
rpm -Uvh http://mirror.centos.org/centos/4/os/x86_64/CentOS/RPMS/elfutils-libelf-0.97.1-5.x86_64.rpm
rpm -Uvh http://mirror.centos.org/centos/4/os/x86_64/CentOS/RPMS/elfutils-0.97.1-5.x86_64.rpm
rpm -Uvh http://mirror.centos.org/centos/4/os/x86_64/CentOS/RPMS/rpm-4.3.3-26_nonptl.x86_64.rpm
rpm -Uvh http://mirror.centos.org/centos/4/os/x86_64/CentOS/RPMS/rpm-python-4.3.3-26_nonptl.x86_64.rpm
rpm -Uvh http://mirror.centos.org/centos/4/os/x86_64/CentOS/RPMS/python-urlgrabber-2.9.8-2.noarch.rpm
rpm -Uvh ftp://ftp.pbone.net/mirror/ftp.centos.org/4.8/os/alpha/CentOS/RPMS/centos-yumconf-4-4.5.noarch.rpm
rpm -Uvh http://mirror.centos.org/centos/4/os/x86_64/CentOS/RPMS/yum-metadata-parser-1.0-8.el4.centos.x86_64.rpm
rpm -Uvh http://mirror.centos.org/centos/4/os/x86_64/CentOS/RPMS/yum-2.4.3-4.el4.centos.noarch.rpm
yum -y update

Note: CentOS 4 X86_64 updated 20 September 2010
[edit] CentOS 5 i386

rpm -Uvh http://mirror.centos.org/centos-5/5/os/i386/CentOS/elfutils-libs-0.137-3.el5.i386.rpm
rpm -Uvh http://mirror.centos.org/centos-5/5/os/i386/CentOS/gmp-4.1.4-10.el5.i386.rpm
rpm -Uvh http://mirror.centos.org/centos-5/5/os/i386/CentOS/readline-5.1-3.el5.i386.rpm
rpm -Uvh http://mirror.centos.org/centos-5/5/os/i386/CentOS/python-2.4.3-27.el5.i386.rpm
rpm -Uvh http://mirror.centos.org/centos-5/5/os/i386/CentOS/python-iniparse-0.2.3-4.el5.noarch.rpm
rpm -Uvh http://mirror.centos.org/centos-5/5/os/i386/CentOS/libxml2-2.6.26-2.1.2.8.i386.rpm
rpm -Uvh http://mirror.centos.org/centos-5/5/os/i386/CentOS/libxml2-python-2.6.26-2.1.2.8.i386.rpm
rpm -Uvh http://mirror.centos.org/centos-5/5/os/i386/CentOS/expat-1.95.8-8.3.el5_4.2.i386.rpm
rpm -Uvh http://mirror.centos.org/centos-5/5/os/i386/CentOS/python-elementtree-1.2.6-5.i386.rpm
rpm -Uvh http://mirror.centos.org/centos-5/5/os/i386/CentOS/sqlite-3.3.6-5.i386.rpm
rpm -Uvh http://mirror.centos.org/centos-5/5/os/i386/CentOS/python-sqlite-1.1.7-1.2.1.i386.rpm
rpm -Uvh http://mirror.centos.org/centos-5/5/os/i386/CentOS/elfutils-0.137-3.el5.i386.rpm
rpm -Uvh http://mirror.centos.org/centos-5/5/os/i386/CentOS/rpm-python-4.4.2.3-18.el5.i386.rpm
rpm -Uvh http://mirror.centos.org/centos-5/5/os/i386/CentOS/m2crypto-0.16-6.el5.6.i386.rpm
rpm -Uvh http://mirror.centos.org/centos-5/5/os/i386/CentOS/python-urlgrabber-3.1.0-5.el5.noarch.rpm
rpm -Uvh http://mirror.centos.org/centos-5/5/os/i386/CentOS/yum-metadata-parser-1.1.2-3.el5.centos.i386.rpm
wget http://mirror.centos.org/centos-5/5/os/i386/CentOS/yum-fastestmirror-1.1.16-14.el5.centos.1.noarch.rpm
wget http://mirror.centos.org/centos-5/5/os/i386/CentOS/yum-3.2.22-26.el5.centos.noarch.rpm
rpm -Uvh yum-*.rpm
yum -y update

Note: Updated 3 September 2010 by David Rummel

* Changed to make it work as one big copy&paste command. (Hint: If it doesn't work later on, look for updated packages)

* If you get some complaints about rpm and maybe popt, you might need to use the --nodeps option to get the dependencies right.

[edit] CentOS 5 x86_64

rpm -Uvh http://mirror.centos.org/centos/5/os/x86_64/CentOS/gmp-4.1.4-10.el5.x86_64.rpm
rpm -Uvh http://mirror.centos.org/centos/5/os/x86_64/CentOS/readline-5.1-3.el5.x86_64.rpm
rpm -Uvh http://mirror.centos.org/centos/5/os/x86_64/CentOS/python-2.4.3-27.el5.x86_64.rpm
rpm -Uvh http://mirror.centos.org/centos/5/os/x86_64/CentOS/libxml2-2.6.26-2.1.2.8.x86_64.rpm
rpm -Uvh http://mirror.centos.org/centos/5/os/x86_64/CentOS/libxml2-python-2.6.26-2.1.2.8.x86_64.rpm
rpm -Uvh http://mirror.centos.org/centos/5/os/x86_64/CentOS/expat-1.95.8-8.3.el5_4.2.x86_64.rpm
rpm -Uvh http://mirror.centos.org/centos/5/os/x86_64/CentOS/python-elementtree-1.2.6-5.x86_64.rpm
rpm -Uvh http://mirror.centos.org/centos/5/os/x86_64/CentOS/sqlite-3.3.6-5.x86_64.rpm
rpm -Uvh http://mirror.centos.org/centos/5/os/x86_64/CentOS/python-sqlite-1.1.7-1.2.1.x86_64.rpm
rpm -Uvh http://mirror.centos.org/centos/5/os/x86_64/CentOS/elfutils-libelf-0.137-3.el5.x86_64.rpm
rpm --nodeps -Uvh http://mirror.centos.org/centos/5/os/x86_64/CentOS/elfutils-0.137-3.el5.x86_64.rpm
rpm --nodeps -Uvh http://mirror.centos.org/centos/5/os/x86_64/CentOS/rpm-4.4.2.3-18.el5.x86_64.rpm
rpm -Uvh http://mirror.centos.org/centos/5/os/x86_64/CentOS/rpm-python-4.4.2.3-18.el5.x86_64.rpm
rpm -Uvh http://mirror.centos.org/centos/5/os/x86_64/CentOS/m2crypto-0.16-6.el5.6.x86_64.rpm
rpm -Uvh http://mirror.centos.org/centos/5/os/x86_64/CentOS/python-urlgrabber-3.1.0-5.el5.noarch.rpm
rpm -Uvh http://mirror.centos.org/centos/5/os/x86_64/CentOS/yum-metadata-parser-1.1.2-3.el5.centos.x86_64.rpm
rpm -Uvh http://mirror.centos.org/centos/5/os/x86_64/CentOS/python-iniparse-0.2.3-4.el5.noarch.rpm
rpm --nodeps -Uvh http://mirror.centos.org/centos/5/os/x86_64/CentOS/yum-fastestmirror-1.1.16-14.el5.centos.1.noarch.rpm
rpm -Uvh http://mirror.centos.org/centos/5/os/x86_64/CentOS/yum-3.2.22-26.el5.centos.noarch.rpm
yum -y update


Please note that sometime you may get dependencies failed error that time just use rpm --nodeps.

For exa :: rpm --nodeps -Uvh http://mirror.centos.org/centos/5/os/x86_64/CentOS/rpm-python-4.4.2.3-18.el5.x86_64.rpm

(28)No space left on device: Couldn't create accept lock

On a cPanel dedicated server, apache server failed to start. So, while checking the apache logs found this:
==> /usr/local/apache/logs/error_log <==

[Sat Dec 20 01:12:27 2008]
[notice] suEXEC mechanism enabled (wrapper: /usr/local/apache/bin/suexec)

[Sat Dec 20 01:12:27 2008]
[warn] pid file /usr/local/apache/logs/httpd.pid overwritten -- Unclean shutdown of previous Apache run?

[Sat Dec 20 01:12:27 2008]
[emerg] (28)No space left on device: Couldn't create accept lock
Solution:
First of all make sure your server is not out of space. This can be checked with the command:
root# df –h
Now, to check how many semaphores are currently in use the command is:
root# ipcs -s
When the apache (httpd) is stopped, to kill the semaphores ID the command is:
root# ipcrm –s 
To kill all the semaphores ID , you can achieve this by doing it in a for loop, the command is:
root# for semid in `ipcs -s | grep nobody | cut -f2 -d" "`; do ipcrm -s $semid; done
Note: “nobody” is apache user.
Now start apache with the command:
root# service httpd restart
This has fixed the issue for us.