Wednesday, February 27, 2013

Copy Directory Structure without Files in Linux

If you want to copy the directory structure without any files, you can use following command.
rsync -av --include '*/' --exclude '*' /path/source/dir /path/destination/dir
'rsync' gives you utility to copy directory with files or without files.

If you want to copy the directory structure without any files from one host to another. You can use
rsync -av --include '*/' --exclude '*' /path/source/dir user@host:/path/destination/dir
Examples:
Suppose I want to copy the directory structure of /etc in /root/tmp on same host.
rsync -av --include '*/' --exclude '*' /etc /root/tmp
It will copy all directories of /etc in the /root/tmp without any files.
It will not create directory etc in the /root/tmp. It will start from sub-directories of etc.

Saturday, February 23, 2013

Compile & Run C Program on Linux Terminal



1) Write any C program in text editor and save as filename.c
In following example, I have saved this file on my Desktop.

2) To run this program, you have to compile it first.
$ gcc -o compiled-filename /home/user/Desktop/filename.c 
Where compiled-filename is the name of compiled file, it can be anything.
This will generate a compile copy of your program as a name compiled-filename in same directory where you ran the above command.

3) Now create output copy of your program.
Following command generate a output file of your program in same directory.
$ gcc /home/user/Desktop/filename.c
4) Now run your program.
$ ./a.out 
 or 
$ ./compiled-filename
where a.out is output copy of your program.
Alternatively you can run compiled copy of your program.

Friday, February 22, 2013

Make FTP server secure on Linux : RHEL, CentOS, UBUNTU

To install FTP on Linux Server, click here

1) Open vsftpd.conf (/etc/vsftpd.conf or/etc/vsftpd/vsftpd.conf)
To prevent anonymous log-in, Set anonymous_enable=NO
 In vsftpd.conf, if anonymous_enable=YES, There is no need to put username & password. If you put only hostname and try to log-in, you can log-in. This situation is very dangerous.
For security purpose, Always set this attribute NO. 

2) These are the harmful content for your vsftpd.
If your vsftpd file (/etc/pam.d/vsftpd) has following content, it will allow blank or wrong password. It is a threat for your security.
auth sufficient /lib/security/pam_pwdfile.so pwdfile /home/ftp/passwd
auth required pam_shells.so
account required pam_permit.so
Never make auth sufficient , it should be required always.

Never leave your vsftpd file with above content.

3) Never allow blank or wrong password for ftp user 
Make Sure your vsftpd file has following content

If it is Debian, Ubuntu
auth required pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
@include common-account
@include common-session
@include common-auth
auth required pam_shells.so

If it is CentOS, RHEL
session    optional     pam_keyinit.so    force revoke auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed auth       required pam_shells.so auth include password-auth session include password-auth session    required     pam_loginuid.so account include password-auth

4) When you make any changes in the file vsftpd.conf, make sure you have restarted the vsftpd.

Install FTP on Linux : CentOS, RHEL, UBUNTU

vsftpd Configuration :


1) Install vsftpd using following command :
   If it is Debian based (Ubuntu) Linux
$ sudo apt-get install vsftpd

   If it is RPM based (CentOS, RHEL) Linux
$ sudo yum install vsftpd

2) Make three changes in vsftpd.conf
   (Location of vsftpd.conf - /etc/vsftpd.conf or /etc/vsftpd/vsftpd.conf)

a)Uncomment line chroot_local_user=YES in vsftpd.conf
   This attribute will make jail for user to not move to the parent directory.

b)Define attribute local_root in vsftpd.conf
local_root=/opt/lampp/htdocs

This is the path of the directory where user should be jailed. User can not go to the parent directory.In this example user will be logged in htdocs and can not reach to the parent directory of htdocs. 

c)Allow users to upload file, set
local_enable=YES
write_enable_YES
Now user can log-in to the server by ftp using username and password.

host : IP of the server
username : user of the server except root
password : password of the user

3) To create user for ftp :
 

$ sudo adduser -c 'FTP USER ec2' -m ec2

   Where ec2 is the username for ftp. To set password for this user :
$ sudo passwd ec2

4) FTP works on port 21. you can close the port or stop the service using 
$ service vsftpd stop

   and open the port or start the service using
$ service vsftpd start

5) If you are using CentOS/RHEL servers, Add following line in your iptables file 
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

Path of iptables file :/etc/sysconfig/iptables

   Save and close the file & Restart the iptables. 
$ service iptables restart

6) To prevent anonymous log-in, Set anonymous_enable=NO
 In vsftpd.conf, if anonymous_enable=YES, There is no need to put username & password. If you put only hostname and try to log-in, you can log-in.
For security purpose, make sure you have set this attribute NO.

7) By default root user can not log-in by ftp but log-in through sftp.

8) When you make any changes in the file vsftpd.conf, make sure you have restarted the vsftpd.

Friday, February 15, 2013

oDesk Screenshot Time Hack


We all want to know when oDesk is going to take next screenshot.

I am NOT going to tell you any illegal method or force you to install any software.
It is all about simple and easy calculation.
I can't tell you the exact time but you can judge it after reading this.

Here I want to share with you some facts about oDesk, may be you already know this but please read once more.

 In every hour, oDesk takes only 6 screenshots.

  Every screenshot is taken in 10 min time interval. 
   It means 00 minute to 09 minute, only one screenshot is taken.
   After that 10 min to 19 minute only one screen shot will be taken.

  If you do not understand above point, Let me explain you with an example.
  Suppose it is 10:00 am, Now between 10:00 am and 11:00 am, 
only six screenshots will be taken by odesk.
   If first screen shot is taken on 10:02, 
it means next 07 minutes (till 10:09), no screenshot  will be taken.
   The second screenshot will be taken between 10:10 and 10:19.
   The third screen shot will be taken between 10:20 and 10:29

 If your screenshot is taken on XX:00 min, 
now the next screen shot will be taken between XX:10 and XX:19.
 It means you have at least nine minutes to do some other work.
Screenshot will not be taken in these 9 minutes.

 It does not depend on your system clock. Do not change the time.

 To check oDesk's screenshot system, check work diary of oDesk. 
Now you will understand everything. click here

We are NOT able to know the exact time when the next screenshot will be taken, but we can know How long the next screenshot will NOT be taken.

Google Chrome can not be run as root



Chrome Error in Linux
Google Chrome can not be run as root




1. First, Remove all chrome(stable/unstable) from synaptic package manager, Ubuntu software center or command line.
   Make your system chrome free.

2. Now download new chrome from Here . 

3. If it is deb file it means you are using debian Linux, if it is RPM it means you are using RPM (Red hat package Manager) Linux

4. Install the file.
   If you want to install it using command line, follow this.
   For Debian
   $ dpkg -i chrome_file_name.deb
   For RPM
   $ rpm -ivh chrome_file_name.rpm

5. Open /opt/google/chrome/google-chrome and find following line
  exec -a "$0" "$HERE/chrome" "$@"

6. Now replace above line with following line
  exec -a "$0" "$HERE/chrome" "$@" --user-data-dir
  
Now try to open chrome. You will not face the error anymore.

7. If you replace the line with following line
  exec -a "$0" "$HERE/chrome" "$@" --user-data-dir $HOME
  it will open root directory structure in chrome while opening new window.


Install or Upgrade Latest version of Mozilla Firefox On Ubuntu






Download latest stable version of firefox.
click here

If there is a directory name 'firefox' in /usr/lib, Rename it to old.
$ mv /usr/lib/firefox /usr/lib/firefox_old

 Extract your downloaded compress file and put it in /usr/lib
$ tar -xvf  firefox-new-version.tar.gz
$ mv  firefox-new-version /usr/lib

Now open it and make a link of filename 'firefox'.
   To make link, right click on the file and click 'Make Link'

 Now put this link file into /usr/bin and make sure it's name is 'firefox'.
$ sudo ln -s /usr/lib/firefox-new-version/firefox /usr/bin

 Now open firefox, it will open the latest version.

 Now you don't have to upgrade every time for latest version.
   Once you put the latest version , firefox is upgraded automatically, if it gets internet connection.

 If you want to know that your version is updated or not.
   In firefox menu, click on Help -> About firefox.
   If your version is not updated, it starts upgrading.

But above step does not help you in upgrading, if your version is too much old.
   Example: you are using 6 or 7 and current version is 15.

Enjoy firefox on Ubuntu