VMWare Tools: Searching for a valid kernel header path…

VMware tools throws:
Searching for a valid kernel header path…
The path “” is not a valid path to the 3.10.0-327.el7.x86_64 kernel headers.
Would you like to change it? [yes]

To prevent VMware tools not to find kernel headers, forget about the version delivered with Workstatio.8 or Fusion.8 which is something like VMwareTools-8.8.6-1035889.tar.gz
Instead download latest VMWare Tools from VMware i.e.: VMwareTools-10.0.5-3228253.tar.gz and

# rpm -qa | grep open-vm-tools
# rpm -e open-vm-tools-desktop-
# rpm -e open-vm-tools-
# yum installl gcc
# yum -y install kernel-devel-`uname -r`
# yum -y install kernel-headers-`uname -r`

Download latest VMWare Tools from VMware i.e.: VMwareTools-10.0.5-3228253.tar.gz

# gunzip VMwareTools*.tar.gz
# tar xvf VMwareTools*.tar
# cd vmware-tools-distrib/
# perl vmware-install.pl 

Works for:
OEL 7.2 + Fusion 8
Centos 7 + Workstation 8

Cisco AnyConnect VPN Client for Linux

Cisco AnyConnect client supports Red Hat Enterprise Linux 6.x (32-bit) and 6.4 (64-bit), Ubuntu 9.x, 10.x, and 11.x (32-bit) and Ubuntu 12.04 & 12.10 (64-bit). It is a standalone tarball package for Linux platforms.

Installing CiscoAnyConnect VPN Client for Linux

Download Full installation package – Linux 64-bit (tar.gz) anyconnect-predeploy-linux-64-4.3.02039-k9.tar.gz.
With Cisco that ain’t easy because Cisco requires a Login & Valid Contract. Luckily I found the AnyConnect client on:
https://www.auckland.ac.nz/en/for/current-students/cs-current-pg/cs-current-pg-support/vpn/cs-cisco-vpn-client-for-linux.html At the time of this writing that is: anyconnect-predeploy-linux-64-3.1.04072-k9.tar

[root@alpha ~]# cd Downloads/
[root@alpha Downloads]# tar xvf anyconnect-predeploy-linux-64-3.1.04072-k9.tar

[root@alpha Downloads]# cd anyconnect-3.1.04072/
[root@alpha anyconnect-3.1.04072]# cd vpn
[root@alpha vpn]# ./vpn_install.sh

Start AnnyConnect client

[root@alpha vpn]# /opt/cisco/anyconnect/bin/vpnui

AnnyConnect says it requires pangox compatibility

/opt/cisco/anyconnect/bin/vpnui: error while loading shared libraries: libpangox-1.0.so.0: cannot open shared object file: No such file or directory

Install pangox-compat (requires EPEL)
[root@alpha Downloads]# wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-8.noarch.rpm
[root@alpha Downloads]# rpm -ivh epel-release-7-8.noarch.rpm
[root@alpha Downloads]# yum -y install pangox-compat
[root@alpha Downloads]# /opt/cisco/anyconnect/bin/vpnui

Setting up a JDBC connection in Glassfish.

Setting up a JDBC connection in Glassfish.


This is one of that kind of things that can be a challenge for beginners but, at last, is really simple, easy and fast to do. Follow these steps.

  1. Be sure that you Glassfish server is stopped before going on.
  2. Download MySQL JDBC driver from Mysql.com. You can find it here. JDBC driver is called MySQL Connector/J. At the moment I write this article current version is 5.1.25
  3. Unzip and extract all files from the file. Locate the jar containing the JDBC driver. Currently this file is called mysql-connector-java-5.1.25-bin.jar and is located at the root of the folder you have just unzipped.
  4. Copy this jar file to $glassfish_install_folder\glassfish\lib
  5. Start Glassfish and go to the admin console, usually located at http://localhost:4848
  6. At left side on your console you will see a tree, and one node called Resources. Open Resources\JDBC\JDBC Connection Pools. Create a connection pool with the following properties:Pool name: MyDatabae
    Resource type: java.sql.Driver (you can choose any other but by now is the simplest option).
    Database Driver Vendor: MySQL. Click on next. Because you choose database driver vendor MySQL you will have already specified the driver classname (com.mysql.jdbc.Driver).
    Initial and Minimum Pool Size Set a zero value on this parameter. You don’t need initially 8 connections to the database in your development machine.Set the next additional properties:

    URL: jdbc:mysql://localhost:3306/booreg
    user: set the user you want to access this database. Notice that all connection will use the same user.
    password: write the password of your user. Notice that password is stored unencrypted.You should see your screen like similar to this two images:

How to mount partition with ntfs file system and read write access


1. Introduction

Purpose of this article is to provide to reader step by step guide, how to mount partition with NTFS file system on the Linux operating system. This article consists of two parts:

mount NTFS file system read only access
mount NTFS file system with read write access


2. Mount NTFS file system with read only access

2.1. NTFS kernel support

Majority of current Linux distributions supports NTFS file system out of the box. To be more specific, support for NTFS file system is more feature of Linux kernel modules rather than Linux distributions. First verify if we have NTFS modules installed on our system.

ls /lib/modules/2.6.18-5-686/kernel/fs/ | grep ntfs

check for NTFS kernel support

NTFS module is presented. Let’s identify NTFS partition.
2.2. Identifying partition with NTFS file system

One simple way to identify NTFS partition is:

fdisk -l | grep NTFS

Identifying partition with NTFS file system

There it is: /dev/sdb1
2.3. Mount NTFS partition

First create a mount point:

mkdir /mnt/ntfs

Then simply use mount command to mount it:

mount -t ntfs /dev/sdb1 /mnt/ntfs

Mount NTFS partition using linux
Now we can access NTFS partition and its files with read write access.
3. Mount NTFS file system with read write access

Mounting NTFS file system with read write access permissions is a bit more complicated. This involves installation of addition software such as fuse and ntfs-3g. In both cases you probably need to use your package management tool such as yum, apt-get, synaptic etc.. and install it from your standard distribution repository. Check for packages ntfs-3g and fuse. We take the other path which consists of manual compilation and installation fuse and ntfs-3g from source code.

3.1. Install addition software

3.1.1. Fuse Install

Download source code from: http://fuse.sourceforge.net/ or https://github.com/libfuse/libfuse

wget http://easynews.dl.sourceforge.net/sourceforge/fuse/fuse-2.7.1.tar.gz

Compile and install fuse source code:
Extract source file:

tar xzf fuse-2.7.1.tar.gz

Compile and install

cd fuse-2.7.1
 ./configure --exec-prefix=/; make; make install

Compile and install fuse source code

3.1.2. ntfs-3g install

Download source code from: http://www.ntfs-3g.org/index.html#download

wget http://www.ntfs-3g.org/ntfs-3g-1.1120.tgz

Extract source file:

tar xzf ntfs-3g-1.1120.tgz

Compile and install ntfs-3g source code
NOTE: Make sure that you have pkg-config package installed, otherwise you get this error message:

checking for pkg-config… no
checking for FUSE_MODULE… configure: error: FUSE >= 2.6.0 was not found. Either it’s not fully
installed (e.g. fuse, fuse-utils, libfuse, libfuse2, libfuse-dev, etc packages) or files from an old
version are still present. See FUSE at http://fuse.sf.net/

cd ntfs-3g-1.1120
 ./configure; make; make install

Compile and install ntfs-3g source code

3.2. Mount ntfs partition with read write access

mount -t ntfs-3g /dev/sdb1 /mnt/ntfs/

NOTE: ntfs-3g recommends to have at least kernel version 2.6.20 and higher.

linuxconfig.org~# mount -t ntfs-3g /dev/sdb1 /mnt/ntfs/
WARNING: Deficient Linux kernel detected. Some driver features are
not available (swap file on NTFS, boot from NTFS by LILO), and
unmount is not safe unless it’s made sure the ntfs-3g process
naturally terminates after calling ‘umount’. If you wish this
message to disappear then you should upgrade to at least kernel
version 2.6.20, or request help from your distribution to fix
the kernel problem. The below web page has more information:

SSH: packet_write_wait: Broken pipe

SSH won’t establish connection for specific user.

pdeneef@semarang:~# ssh -vvv user@hostname
OpenSSH_6.9p1, LibreSSL 2.1.7
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug2: ssh_connect: needpriv 0
Authenticated to hostname ([ip.add.re.s]:22).
debug1: channel 0: new [client-session]
debug3: ssh_session2_open: channel_new: 0
debug2: channel 0: send open
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
packet_write_wait: Connection to ip.add.re.s: Broken pipe

Remove and recreate user

 $ userdel -r username
$ useradd username
$ passwd username

Retry eting up SSH connection:

pdeneef@semarang:~# ssh user@hostname
user@hostname's password: 
Last failed login: Fri Nov  6 00:42:53 CET 2015 from fromhostname on ssh:notty
There were 2 failed login attempts since the last successful login.
-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory
[jforces@one ~]$ 


Web Application/RESTful service


mvn archetype:generate -DarchetypeArtifactId=jersey-quickstart-webapp \
                -DarchetypeGroupId=org.glassfish.jersey.archetypes -DinteractiveMode=false \
                -DgroupId=com.welgg -DartifactId=jointforces -Dpackage=com.welgg.jointforces \

Upon deployment attempt in Glasfish you may get: “An error has occurred Error occurred during deployment: Exception while loading the app : CDI deployment failure:WELD-001408: Unsatisfied dependencies for type Set<Service> with qualifiers @Default at injection point [BackedAnnotatedParameter] Parameter 1 of [BackedAnnotatedConstructor] @Inject com.google.common.util.concurrent.ServiceManager(Set<Service>) at com.google.common.util.concurrent.ServiceManager.<init>(ServiceManager.java:0) . Please see server.log for more details.

Modify important version numbers in pom.xml

  • maven-compiler-plugin: 3.1
  • jersey.version: 2.19

Sample App

mvn -B archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes  -DgroupId=nl.welgg.sample   -DartifactId=sample

Replace generated pom.xml
Replace generated App.java

mvn install
java -cp .\target\sample-1.0-SNAPSHOT.jar nl.welgg.sample.App

Make Eclipse ready

mvn eclicpse:eclipse -DdownloadSources
del .project
del .classpath
del .settings
mvn install

Import in Eclipse

Screen Shot 03-21-16 at 02.09 PM


To only allow specified users using FTP

Edit /etc/vsftpd/vsftpd.conf. Add towards the bottom of the file:


Create vsftpd.allowed_users

#To allow just some users to login:
#In the file /etc/vsftpd.allowed_users add the username of the users that can login.
#The not allowed users will get an error that they can't login before they type their password.

Restart VSFTPD

$ service vsftpd restart

VSFTPD errors 550, 553

Errors at get and put on commandline and inside FTP Client

ftp> get hello.txt
Response: 550 Failed to open file.
Error: Critical file transfer error

ftp> put hello.txt
Response: 553 Could not create file.
Error: Critical file transfer error

Most likely caused by SE Linux

Check SE status

[root@one ~]# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      28

If status is enforcing

[root@one ~]# setenforce 0

[root@one ~]# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   permissive
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      28

Retry ftp and check if problems magically gone away. If so,

[root@one ~]# setenforce 1

[root@one ~]# getsebool -a | grep ftp
ftp_home_dir --> off
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> off
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off

[root@one ~]# setsebool -P ftp_home_dir on

[root@one ~]# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      28

Installing MySQL on Linux Using the MySQL Yum Repository

Install Guide


$ service mysqld start

$ ps ax | grep mysql
 4396 ?        Ss     0:00 /bin/bash /usr/bin/mysql-systemd-start post
 5160 pts/2    S+     0:00 /bin/systemctl start mysqld.service

$ mysql
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

After you installed MySQL-community-server 5.7 from fresh on linux, you will need to find the temporary password from /var/log/mysqld.log to login as root.

grep ‘temporary password’ /var/log/mysqld.log
Run mysql_secure_installation to change new password

When running into error 13 or 12, change SELinux and re-install

SE Linux


$ yum remove mysql spullen

$ sestatus

$ edit se linux configuration to disable SELinux

$ yum -y install mysql-community-server

$ service mysqld start

$ ps ax | grep mysql
 14059 ?        Ss     0:00 /bin/sh /usr/bin/mysqld_safe
14208 ?        Sl     0:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
14294 pts/0    S+     0:00 mysql
14585 pts/1    S+     0:00 grep --color=auto mysql