March 27, 2014

Fedora 20 Better Theme

The default theme (Adwaita) that Fedora 20 is shipped is not the best. And beside it has a large window border at the top of each window. A better theme that exists in default rpm repo is greybird. To install

and to change use gnome-tweak-tool (rpm package gnome-tweak-tool)

March 26, 2014

Fedora 20 Install MySQL Server 5.5 and Workbench 6

MySQL Server 5.5

The MySQL packages has been renamed. The now official open source version of MySQL is MariaDB. To install the same version of MySQL on Fedora as in Enterprise Linux, such as RHEL, install these packages.

To start the mysqld.

Set MySQL root password to 'root'.

Finally login and test password.

MySQL Workbench 6

The workbench rpm is orphan, so you need to download and install it manually.

Little bit of searching for installing dependeny packages, with 'yum provides', e.g.

And finally ending up with all required packages.

Then run install of workbench again and start workbench and connect to you localhost.

Fedora 20 How to Install Eclipse

Before Eclipse started with bundling Eclipse into EE, C++, etc bundles. There were pain to install Eclipse and to get all it's plugins right. Then the bundles came. You download a zip file and unzipped and off you go.

But a better way is to have RPM packages of everything. And that is done with Fedora. (That is also done in Ubuntu, but they don't have any modern version of Eclipse available.)

To install Eclipse 4.3.1 (Kepler)

Now you can search and install Eclipse plugin

Fedora 20 Disable Gnome Alt+Tab from Grouping Windows

Most modern Linux distros (and including Windows) now days group window from the same application. I found this not effective and lowers mine productivity.

To disable grouping when Alt-Tab switching, install gnome extension

March 20, 2014

Install and Configure KVM on Fedora 20


To manage the KVM daemon - libvirtd.

Imported directories.

  • Data - /var/lib/libvirt/
  • Configuration - /etc/libvirt/

Graphical manager, to install new virtual machines and control them.

Or the command line way.

And to control the virtual machines, via command line.

March 16, 2014

HTTP Configure LDAP-Based Authentication

In my previous blog I showed you how to set up basic authentication via access file for a private directory. To do the same thing for LDAP, use this configuration instead.


HTTP Configure Private Directories

Create Private Directory

Here we will make things a little more difficult, we are going to create our new directory outside the apache default document root, which means, we will need to manually handle SELinux policy. We will get into detail how to do that soon, but first lets create our new private directory.

Set file permissions.

Ok, here is where things get a little more complicated. Lets first have a look of the SELinux file context of the default document root.

Ok, now we knew how things should look like. Now lets look how things currently look in our new directory.

The thing you always should try first, is to try to restore default SELinux policy. Lets do that.

Ok, so the last part that is missing is the file context. We can set that with semanage (policycoreutils-python package).

And to verify.

Now we only need to restorecon on our new private directory.

Configure Private Directory

Now lets begin to add our new private directory as public and test.

Restart apache and test our new private directory. If things are not working go back and fix it.

Now we are going to add user authentication, but before that you might want to install apache manual.

We will here configure a basic authentication with file containing our user credential.

To create the user credential

And now finally restart and test your new private directory.


March 15, 2014

HTTP Deploy a Basic CGI Application


You have successfully installed apache web server with default configuration.


Copy our CGI script to default directory.

Set file permission

Set SELinux


Open http://<your-host>/cgi-bin/hello.cgi

HTTP Configure a Virtual Host


Virtual hosts are good when you want to server multiple web sites from the same web server.


Install Apache Web Server.

Since I do not have a reliable DNS, we need to hardcode the host name in /etc/hosts on the client.

Initial Configuration

Configure Listen and ServerName, to be able to start the server clean without warnings.

Also verify that firewall (iptables) is configured or stop it 'service iptables stop'.

Now check our installation by restarting apache web server and open url '' from client machine. You should be able to see Apache Welcome Page. If not go back and fix.

Configure Name-Based Virtual Hosting

Now create two virtual host, one for the default host '' and one new ''.

Now create the new document root for ''.

Set file permissions.

Create test web page.

Set SELinux for our new virtual host.


Restart apache web server and test your new virtual host by accessing:

  1. (you should see default apache web server welcome page)
  2. (you should see your 'Hello World' page)

Configure a System to Log to a Remote System.

Example forward all info message to remote host

Restart rsyslog to let changes take effects.

And to test it use logger tool from client.

Open /var/log/messages on server and verify.



Configure a System to Accept Logging from a Remote System


Edit /etc/rsyslog.conf and enable module imudp.

Restart rsyslog to let changes take effects.


Edit /etc/rsyslog.conf and enable module imtcp.

Restart rsyslog to let changes take effects.

Produce and Deliver Reports on System Utilization (Processor, Memory, Disk, and Network).


System Activity Reporter, SAR. To display 5 samples with 2 seconds apart.

-u      Report  CPU  utilization.


vmstat - Report virtual memory statistics. To display 5 samples with 2 seconds apart.


Report file system disk space usage.

-h, --human-readable    Print sizes in human readable format (e.g., 1K 234M 2G)

Statistics for input/output statistics for devices, partitions and network filesystems (NFS). To display 5 samples with 2 seconds apart.

-d     Display the device utilization report.
-N     Display the registered device mapper names for any device mapper devices.  
       Useful for viewing LVM2 statistics.
-k     Display statistics in kilobytes per second instead of blocks per second.  
       Data displayed are valid only with kernels 2.4 and later.


Configure a System to Authenticate Using Kerberos

You can either do this graphically (system-config-authentication) or via command line (authconfig).

When doing it with the command line, it can be hard to remember all the parameter, but with help of '--help' it is easier.

The LDAP parameters

The Kerberos parameter.

And finally SSSD (System Security Services Daemon), which enable cached authentication, which in turn means enabled off-line authentication. Which both can be good and bad. An unstable network connection does not stop you for logging in. But you also need to remember that authentication data might be stale.

Lets put all this together and add --update at the end to update authentication configuration.

March 14, 2014

SSH Port Forwarding

We have 3 machines.

  1. Client (
  2. JBoss (
  3. Apache (

SSH Port Forwardning from localhost:5555 to

Now test your tunnel by opening a web browser from client and enter http://localhost:5555/. The tunnel is:

localhost:5555 ->

Now lets tunnel through apache server ( to jboss server (

The tunnel is now:

localhost:5555 -> ->

So every tunneling begins at the client, that opens the tunnel.

Adding a Static Route to the Route Table


Install the kernel documentation package, if you have not.

The package contains several documentation and you can list them all with 'rpm -ql kernel-doc'.

Display Current Routing

Enabling Kernel Routing

To enable kernel paremeter ip_forward needs to be on.

And the corresponding documentation.

If you are not sure how to add search the system documentation.

Or you can add via CLI, but this will not be permanent.

Disable Ping Request (ICMP Echo) in Linux Kernel


Install the kernel documentation package, if you have not.

The package contains several documentation and you can list them all with 'rpm -ql kernel-doc'.

Test Before

Ok. The machine is responding to ping.

Set Kernel Parameter to Ignore Ping (ICMP echo) Request

Now use kernel configuration tool, sysctl, to first list all parameter that contain ICMP.

To find out what each parameter do read the kernel network ip sysctl documentation.

And to set kernel parameter.

Now test again to ping server and you should not get any respond.

To make the changes permanent.

Network Bonding in RHEL 6


To bind multiple network interfaces together into a single channel is called bonding.

The reason for this is to achieve:

  1. Round robin around network interfaces.
  2. Master - slave for redundancy.
  3. Throughput. Use all at the same time.


RHEL 6 Deployment Guide

IP Aliases in RHEL 6


Assigning multiple IP addresses to a single interface is called IP aliasing. This can be handy if you want a single web server to serve multiple sites.


It is advised to disable NetworkManager.


Show current configuration for eth0.

Add IP alias.

Show new configuration for eth0

To make it persistent edit the following

Now restart network service.


Ping from another machine



March 13, 2014

Build a Simple RPM Package


Install package that contain the rpmbuild tool that create the rpm package.

Install also a convenient development tool for setting up environment.

When building rpm package you should do that with a noon root user. To create a new user.


Change to rpm user and from it's home directory run:

This will create a new empty catalogue structure for your rpm package development.

Creating the Program

We can test run to see that it actually runs.

Creating the RPM Spec File

Now with help of wim, that will create a template spec file, we will create a rpm spec file for our hello rpm package.

Build the RPM

Test the RPM

Query (q) the local package (p) for all it's files (l).

Now switch to root and install the package.

And test it.

And to uninstall it.

Yum Plugins

There are numerous yum plugins. You can search for which are available.

What does yum-plugin-verify do?

"This plugin adds the commands verify, verify-all and verify-rpm. There are also a couple of options. This command works like rpm -V, to verify your installation." [yum info yum-plugin-verify]

For more information about each commands, run 'yum --help'

What does yum-plugin-versionlock do?

"This plugin takes a set of name/versions for packages and excludes all other versions of those packages (including optionally following obsoletes). This allows you to protect packages from being updated by newer versions, for example." [yum info yum-plugin-versionlock]

The yum-plugin-versionlock uses the /etc/yum/pluginconf.d/versionlock.list to lock down specific packages.

The following format is used for locking down. See /usr/share/doc/yum-plugin-versionlock-*/README.


Encrypting Files with GnuPG

Generate private key.

List all public keys.

Export a public key.

Import a public key from "Pelle Petterson".

Encrypt a file for recipient "Pelle Petterson", with public key from "Pelle Petterson".

Decrypt a file, encrypted with your public key.

Using OpenLDAP as Authentication Directory Service in RHEL 6

Installing OpenLDAP

Configure OpenLDAP

Modify domain (olcSuffix) and the LDAP super username (olcRootDN).

Set password for the LDAP super user. To create password use slappasswd.

And add password to configuration file.

Create OpenLDAP Schema

Creat an empty text file /root/, with

Configure OpenLDAP

Add this.

Verify add with search.

Add User and Group OpenLDAP

Configure Client Authentication through LDAP

You can configure this graphically

or you can do it via command line tool authconfig.



March 12, 2014

Blogspot Blogger set Dynamic Width

It is quite silly with fix width layout for HTML pages, which indirectly means a web page will only use a small part of modern laptop or monitors screen. Why not make it dynamic? Let people self decide their size, by simply resizing theirs browser window. Static width does not make sense for me. So this is how I changed this blog. Simple and safe

How to Disable System Beep in Fedora 20

The default setup of Fedora 20 have a quite annoying feature and that is the system beep. The beep sounds when using auto completion in terminal window, but also in firefox when searching in page and not results are found.

To disable Terminal beep.

To disable Firefox beep, when no search result are found in page.

March 11, 2014

Installing RHEL 6 Default Directory Servers, OpenLDAP


In this blog I will show you how to install, configure and test the default directory service in RHEL 6 - OpenLDAP. LDAP directory services are common used for storing authentication credential.

1. Install

2. Configure

The OpenLDAP configuration has been altered in RHEL 6. Previously it was a configuration file /etc/openldap/slapd.conf, but now it is a configuration database located in /etc/openldap/slapd.d/.

Global configuration is stored in /etc/openldap/slapd.d/cn\=config.ldif.

Database specific configuration is stored in /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}bdb.ldif.

We will here change the olcSuffix (the domain for which the LDAP server provides information) and the olcRootDN (the LDAP super username).

Finally we need to generate a password for olcRootDN. To generate the password we use the slappasswd tool. And to add it, we add the directive olcRootPW to the /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}bdb.ldif.

3. Start

And to automatically start OpenLDAP at boot time.

4. Test

To test the installation we perform a simple search (query for you SQL people).

Now we are going to add entries to your directory. To add entries we use the ldapadd tool. The ldapadd expects LDIF (LDAP Data Interchange Format) file.

Finally we test the added entries.