27 May, 2013

User and Group Management

A new user or update default new user information creates with useradd command. Usermod command modifies a user account; it is helpful to add a user to an existing group. Group has two types. The first is primary group of users and another is a secondary group. All information related to user accounts is stored in /etc/passwd, /etc/shadow, and /etc/group files to store user information.
 

The following commands are used to manage users and groups for all operations:
id, useradd, usermod, userdel, groupadd, groupdel, groupmod, passwd

User info

The id command shows information for a said user. It will use like this:
[root@linuxguideco /]# id user1
uid=502(user1) gid=503(user1) groups=503(user1)

Create a user

To create a new user:
[root@linuxguideco /]# useradd -c "User for Training Purpose" user1
 

The recently created user have to assign a password with passwd command for activation of the user. Some useful useradd options include the following:
-c : to sets a comment for the user.
-s : is used to define the default login shell of the user. If default login shell is not used then the system default shell becomes the user’s default login shell.
-r : option is create a user with UID<500 (system account)
-d : option is set the home directory of the user. The default home directory will be created.
-M : the home directory is not created. This is useful when the directory already exists.

Add a new user to existing secondary group

[root@linuxguideco /]# useradd -G group2 user2

[root@linuxguideco /]# grep group2 /etc/group
group2:x:505:user2

Change password of the user

[root@linuxguideco /]# passwd user2
Changing password for user user2.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@linuxguideco /]#

Note that capital G (-G) option add user to a list of groups, only use comma in between groups without space. As shown below example:

[root@linuxguideco /]# useradd -G group3,group4,group5,group6 user3

If we don't specify username, then password will be changed of currently logged in user.

Add a user to a group

To modify user account's settings, we will use usermod command. We can check manual of usermod command with man page for available options. Add a user to a group is one of the useful command with usermod:

[root@linuxguideco /]# usermod -a -G group3 user3

Remove a user from a group

It a trickier to remove a user from a group. We can do that from command line. First of all you need to check a list of groups that your user is a member of:

[root@linuxguideco /]# id -nG user3
group3 group4 group5 group6

After that you need to put all groups with separated by comma to the usermod -G option, except the group which you want the user to be removed. So, to remove the user3 from group6, as shown below:

[root@linuxguideco /]# usermod -G group3,group4,group5 user3
[root@linuxguideco /]#

[root@linuxguideco /]# id -nG user3
group3 group4 group5

Lock and Unlock user accounts

Usermod command uses to lock and unlock user accounts. See shown below to lock out a user:

[root@linuxguideco /]# usermod -L user1

To unlock the user:

[root@linuxguideco /]# usermod -U user1

Delete a user

Userdel command is used to delete a user account. If we use the -r option then the user’s home directory and mail spool are also deleted:

[root@linuxguideco /]# userdel -r user1

Create a new group

To create a new group, as shown below:

[root@linuxguideco /]# groupadd linuxguide


The -r option can be used to create a group with GID<500 (system).


[root@linuxguideco /]# grep linuxguide /etc/grouplinuxguide:x:158:
 
Change a group’s name

Groupmod can be used to change a group name:

[root@linuxguideco /]# groupmod -n linuxtutorial linuxguide

[root@linuxguideco /]# grep linuxtutorial /etc/group
linuxtutorial:x:158:

Delete a group

Groupdel can delete a group:

[root@linuxguideco /]# groupdel linuxtutorial

User must be deleted before deleting a primary group of the user in the home directory, user's group will be same as username.

You can go to manual pages for more info of commands. We will type as shown below:

[root@linuxguideco /]# man adduser

21 May, 2013

Archiving and Compression

ZIP Command Basics

HOW-to zip multiple files

[root@linuxguideco backup]# zip linuxguide_file.zip linuxguide_file1 linuxguide_file2
updating: linuxguide_file1 (deflated 99%)
  adding: linuxguide_file2 (deflated 99%)
[root@linuxguideco backup]#

HOW-to zip a directory and its files recursively

[root@linuxguideco /]# zip -r /backup/linuxguide.zip linuxguide

sample output
[root@linuxguideco backup]# ls -l
total 36976
-rw-r--r-- 1 root root 37816934 May 12 11:23 linuxguide.zip

HOW-to unzip a *.zip compressed file

[root@linuxguideco backup]# unzip linuxguide.zip


To see a output during unzip pass the -v option as shown below.
[root@linuxguideco backup]# unzip -v linuxguide.zip

sample output
[root@linuxguideco backup]# unzip -v linuxguide.zip
Archive:  linuxguide.zip
 Length   Method    Size  Ratio   Date   Time   CRC-32    Name
--------  ------  ------- -----   ----   ----   ------    ----
    0  Stored        0   0%  05-12-13 11:17  00000000  linuxguide/
    856   Defl:N      628  54%  02-23-12 18:34  de237f42  linuxguide/rmt
   1498  Defl:N      685  54%  05-12-13 11:07  f93e84c3  linuxguide/updatesd
    -skip-
    118  Defl:N      102  14%  05-12-13 11:07  ad292c9a  linuxguide/cups
    354  Defl:N      201  43%  05-12-13 11:07  3a5bd10d  linuxguide/tmpwatch
  --------          -------  ---                            -------
190712477         37281378  81%                            3037 files

HOW-to list a content of zip file with uncompressing it

[root@linuxguideco backup]# unzip -l linuxguide.zip

sample output
Archive:  linuxguide.zip
      Length     Date   Time    Name
      --------    ----   ----    ----
          0  05-12-13 11:17   linuxguide/
       223  05-12-13 11:07   linuxguide/nmptra
       877  05-12-13 11:07   linuxguide/mon
      -skip-
       296  05-12-13 11:07   linuxguide/ntpd
       418  05-12-13 11:07   linuxguide/akewha
       078  08-29-12 16:28   linuxguide/wat
       137  05-12-13 11:07   linuxguide/mlocat
       --------                   -------
       190712477                   3037 files


Zip command advanced compression

There are 10 levels of compression by zip command provided.


Level 0 (zero) is the lowest level where there is the archive file without compression.
Level 1 performs little compression. But it will be very fast.
Level 6 is the default level compression.
Level 9 is the maximum compression. It will be slower compared to the default level. In my opinion, if you compress a large file, you should always use level 9.

In the example below, I have level 0 (zero), level 1, default level 6 and level 9 compression to the same directory. See the compressed file size.


[root@linuxguideco /]# zip /backup/linuxguide_file.zip /linuxguide_file
updating: linuxguide_file (deflated 99%)

[root@linuxguideco /]# zip -0 /backup/linuxguide_file-0.zip /linuxguide_file
  adding: linuxguide_file (stored 0%)

[root@linuxguideco /]# zip -1 /backup/linuxguide_file-1.zip /linuxguide_file
  adding: linuxguide_file (deflated 97%)

[root@linuxguideco /]# zip -6 /backup/linuxguide_file-6.zip /linuxguide_file
  adding: linuxguide_file (deflated 99%)

[root@linuxguideco /]# zip -9 /backup/linuxguide_file-9.zip /linuxguide_file
  adding: linuxguide_file (deflated 99%)


[root@linuxguideco backup]# ls -lhtr
total 2.7M
-rw-r--r-- 1 root root 1.3M May 14 05:44 linuxguide_file
-rw-r--r-- 1 root root 1.3M May 14 05:39 linuxguide_file-0.zip
-rw-r--r-- 1 root root  41K May 14 05:40 linuxguide_file-1.zip
-rw-r--r-- 1 root root  13K May 14 05:40 linuxguide_file-6.zip
-rw-r--r-- 1 root root  12K May 14 05:41 linuxguide_file-9.zip
-rw-r--r-- 1 root root  13K May 14 05:42 linuxguide_file.zip
[root@linuxguideco backup]#

Validate a Zip Archive

Sometimes you may want to validate a zip archive without extracting. To test the validity of the zip file, pass the option -t as shown below.

[root@linuxguideco backup]# unzip -t linuxguide_file.zip
Archive:  linuxguide_file.zip
    testing: linuxguide_file          OK
No errors detected in compressed data of linuxguide_file.zip.


HOW-to unzip a file

[root@linuxguideco backup]# unzip linuxguide_file-9.zip
Archive:  linuxguide_file-9.zip
  inflating: linuxguide_file
[root@linuxguideco backup]#

Zip files password protection

Pass the option -P to the zip command to assign a password to the zip file.

[root@linuxguideco backup]# zip -P mysecurepwd linuxguide_file-protected.zip linuxguide_file
  adding: linuxguide_file (deflated 99%)
[root@linuxguideco backup]#

[root@linuxguideco backup]# unzip linuxguide_file-protected.zip
Archive:  linuxguide_file-protected.zip
[linuxguide_file-protected.zip] linuxguide_file password:
  inflating: linuxguide_file
[root@linuxguideco backup]#
 

The above option is good if you use the command in a shell-script for background work. On the other hand, if you perform the compression on the interactive command line, you do not want to be seen in the password history. So it will use the option -e as shown below to assign a password.

[root@linuxguideco backup]# zip -e linuxguide_file-protected.zip linuxguide_file
Enter password:
Verify password:
  adding: linuxguide_file (deflated 99%)
[root@linuxguideco backup]#

When you unzip a password protected file, it will ask for the password, as shown below.

[root@linuxguideco backup]# unzip linuxguide_file-protected.zip
Archive:  linuxguide_file-protected.zip
[linuxguide_file-protected.zip] linuxguide_file password:
  inflating: linuxguide_file
[root@linuxguideco backup]#


Tar command (tape archive)

tar command is used to convert a group of files into an archive.


The following command created a single archive backup file /backup/abc.tar. This archive will contain all the files and subdirectories.

[root@linuxguideco backup]# tar cvf /backup/abc.tar /abc/

sample output
/abc/abcnss_compat
/abc/abcpamc
/abc/abccap
-skip-
/abc/iptables/abcip6
/abc/iptables/abci
/abc/iptables/policy
[root@linuxguideco backup]#

option t will display all the files from the tar archive.

[root@linuxguideco backup]# tar tvf /backup/abc.tar


drwxr-xr-x root/root    0 2013-04-01 19:35:45 abc/
-rwxr-xr-x root/root     36468 2013-01-08 18:33:16 abc/abcnss
-rwxr-xr-x root/root     9868 2013-01-09 10:30:33 abc/abcpamc
-rw-r--r-- root/root       390824 2009-03-25 06:52:17 abc/abcgobject
-skip-
-rwxr-xr-x root/root      5312 2012-10-30 21:07:16 abc/abcipt_ah
-rwxr-xr-x root/root      8432 2012-10-30 21:07:16 abc/abcip6
-rwxr-xr-x root/root      6932 2012-10-30 21:07:16 abc/abcipL
-rwxr-xr-x root/root     10420 2012-10-30 21:07:16 abc/abcip6
[root@linuxguideco backup]#

x option to extract the files from the tar archive as shown below. This will extract the contents of the current directory location where the command is run.

[root@linuxguideco backup]# tar xvf /backup/abc.tar

abc.tar will be extracted.

[root@linuxguideco backup]# du -hsc /abc.tar
127M    /abc.tar
127M    total

HOW-to gzip with tar

Add option z to the tar command when dealing with tar.gz compressed file.

[root@linuxguideco backup]# tar cvfz /backup/linuxg.tar.gz /linuxguide

linuxguide/abc.tar
[root@linuxguideco tmp]#

option x will extract all the files from the tar archive.

[root@linuxguideco backup]# tar xvfz /backup/linuxg.tar.gz

option t will display all the files from the tar archive.

[root@linuxguideco backup]# tar tvfz /backup/linuxg.tar.gz

[root@linuxguideco backup]# du -hsc linuxg.tar.gz
60M     linuxg.tar.gz
60M     total

Note: Using gzip is faster when compared to bzip2.

HOW-to use bzip2 with tar

Add option j to the tar command when dealing with tar.bz2 compressed file.

[root@linuxguideco backup]# tar cvfj /backup/linuxg.tar.bz2 /linuxguide
/tmp/linuxguide/abc.tar
[root@linuxguideco tmp]#

option x will extract all the files from the tar archive.

[root@linuxguideco backup]# tar xvfj /backup/linuxg.tar.bz2

option t will display all the files from the tar archive.

[root@linuxguideco backup]# tar tvfj /backup/linuxg.tar.bz2

Note: Using bzip2 gives higher level of compression when compared to gzip.


In the end, we will summarize this topic what we've learnt from it. Highlights of the article is mentioned below: 

how to zip multiple files
zip a directory and its files recursively
unzip a *.zip compressed file
unzip a zip file with v option
list a content of zip file with l option
zip command with advanced compression
validate a zip archive with t option
zip files with password protection
tar (tape archive) command
how to use gzip and bzip2 with tar

We've prepared it and hope it would be helpful for Linux learners.

13 May, 2013

Linux Network Configuration

Here i am explaining the Linux network configuration and important network files descriptions are explained below:

>> The purpose of /etc/hosts configuration file is to resolve hostnames, there is no other way to resolve hostnames. It also resolves on small networks with no DNS server. This file contains a line specifying the IP address of the loopback device (127.0.0.1) as localhost.localdomain.

[root@linuxguideco ~]# vim /etc/hosts

sample outputs

# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1          localhost.localdomain localhost
::1                    localhost6.localdomain6 localhost6
192.168.1.3      linuxguideco

>> The /etc/resolv.conf configuration file specifies the IP addresses of DNS servers and the search domain. To setup DNS servers, edit /etc/resolv.conf, enter

[root@linuxguideco ~]# vim /etc/resolv.conf

sample outputs

nameserver 8.8.8.8
nameserver 8.8.4.4
search localdomain

>> The /etc/sysconfig/network configuration file contains routing and host information for all network interfaces.

[root@linuxguideco ~]# vim /etc/sysconfig/network

sample outputs

NETWORKING=yes
NETWORKING_IPV6=no
#HOSTNAME=localhost.localdomain
HOSTNAME=linuxguideco
GATEWAY=192.168.1.1

>> Each network interface has a corresponding interface configuration script. To configure ethernet interface, edit /etc/sysconfig/network-scripts/ifcfg-eth0, enter

[root@linuxguideco /]# cd /etc/sysconfig/network-scripts

[root@linuxguideco network-scripts]# ls -la | grep ifcfg-

sample outputs

-rw-r--r--  3 root root   244 Oct 15  2010 ifcfg-eth0
-rw-r--r--  3 root root   141 Oct 15  2010 ifcfg-eth1
-rw-r--r--  1 root root   254 Oct 13  2010 ifcfg-lo

>> Edit configuration file of NIC for which you want to set a static IPs. In this example, I will configure a static IP address for eth0 and use the Internet Protocol Version 4.

[root@linuxguideco network-scripts]# vim ifcfg-eth0

sample outputs

Below sample specifies static IP configuration to set parameters below according to your settings.

# Intel Corporation 82574L Gigabit Network Connection
DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.1.255
HWADDR=00:0C:29:E8:EF:34
IPADDR=192.168.1.3
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=yes

>> Save the configuration file and exit. To apply changes, we need to bring the network interface down and back up, type the following command

[root@linuxguideco network-scripts]# /etc/init.d/network restart

Or,

[root@linuxguideco network-scripts]# service network restart

[root@linuxguideco network-scripts]# chkconfig network on


After above steps network files will be configured successfully.


Disable IP Version 6

Disable Internet Protocol version-6 if you don't need it.

edit the configuration file /etc/sysctl.conf, enter

[root@linuxguideco network-scripts]# vim /etc/sysctl.conf

add following lines at last in the config file.

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1


save / exit the file and reload it with following command.

[root@linuxguideco /]# sysctl -p


After reload IP version 6 will be disabled.

10 May, 2013

Linux Basic Commands

For those who are unsure how to use linux commands. We begin truly learning Linux. So, open a terminal, if you use windows, open PuTTY, and log in to the server.

First, we start with pwd command which means Print Working Directory. This command shows you where you are in the file system. It will help to knowing the file system and help to learn everything else.

pwd command
[root@linuxguideco home]# pwd
/home

man command
This command brings up the online unix manual. It can be used for each of the commands and can see the manual of the given command.

[root@linuxguideco /]# man ls (ls command manual)

cal command
cal commands shows the current month calendar

[root@linuxguideco /]# cal
     April 2013
Su Mo Tu We Th Fr Sa
    1  2  3  4  5  6
 7  8  9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

‘cal ’ will display calendar for specified month and year.

[root@linuxguideco /]# cal 01 1990
    January 1990
Su Mo Tu We Th Fr Sa
    1  2  3  4  5  6
 7  8  9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

date command
This command will display current date and time.

[root@linuxguideco /]# date
Mon Apr 29 13:01:31 PKT 2013

This command will only display current time.

[root@linuxguideco /]# date +%T
13:03:08

whoami command
This command shows current logged in user.

[root@linuxguideco /]# whoami
root

id command
id command shows user and groups (UID and GID) of current user.

[root@linuxguideco /]# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)

[root@linuxguideco bin]# id root
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)


du command
shows the total size used by the files.
[root@linuxguideco guide]# du -c /dev

shows the directory size
[root@linuxguideco guide]# du -s /dev
96      /dev

shows directory size with human understanding.
[root@linuxguideco guide]# du -hs /dev
96K      /dev

df command shows free disk space.
[root@linuxguideco guide]# df


ls command
To show the current directory list.

[root@linuxguideco /]# ls
bin  boot  dev  etc  home  lib  media  misc  mnt  net  opt  proc  root  sbin  selinux  srv  sys  tmp  usr  var

[root@linuxguideco /]# ls -l
drwxr-xr-x   2 root root  4096 Apr 12 10:13 bin

[root@linuxguideco /]# ls -al
drwxr-xr-x  23 root root  4096 Apr 30 14:51 .
drwxr-xr-x  23 root root  4096 Apr 30 14:51 ..
-rw-------   1 root root    19 Apr 12 17:53 .bash_history
drwxr-xr-x   2 root root  4096 Apr 12 10:13 bin

cd command
for changing the directory.

[root@linuxguideco /]# cd /usr/
[root@linuxguideco usr]#

one step back to the directory.

[root@linuxguideco usr]# cd ..
[root@linuxguideco /]#

go to previous working directory

[root@linuxguideco usr]# cd -
/
go to current login user home directory

[root@linuxguideco /]# cd ~
[root@linuxguideco ~]#

mkdir command
Create a folder on root partition.
[root@linuxguideco /]# mkdir /guide

create a folder in /guide
[root@linuxguideco /]# mkdir /guide/test

create multiple folder in multiple directories with single command
[root@linuxguideco /]# mkdir /usr/dir1 /var/dir2 /etc/dir3

create multiple folder in same directory
[root@linuxguideco /]# mkdir dir11 dir12 dir13

cp command
copy a file in directory
[root@linuxguideco guide]# cp file /guide2

copy a file from /guide/file to /guide2/dir
[root@linuxguideco guide]# cp /guide/file /guide2/dir

copy a directory with -r option
[root@linuxguideco guide]# cp -r dir6 dir7

copy a file from /guide/file1 paste in /usr with file2 name
[root@linuxguideco guide]# cp /guide/file1 /usr/file2

rm command
remove a file
[root@linuxguideco guide]# rm file

remove a file with forcefully option
[root@linuxguideco guide]# rm -f file

remove a directory without -r option, it will appear an error
[root@linuxguideco /]# rm guide
rm: cannot remove directory `guide': Is a directory

remove a directory with -r option
[root@linuxguideco /]# rm -r guide

remove a directory with -r option
[root@linuxguideco /]# rm -rf guide

move command
Move /usr/dir1 to /opt/ with different name
[root@linuxguideco /]# mv /usr/dir1 /opt/dir2

Rename the folder name mydir to dir
[root@linuxguideco /]# mv /usr/mydir /usr/dir

Rename the file1 name with file2
[root@linuxguideco /]# mv file1 file2

For reading a file on terminal

[root@linuxguideco etc]# cat /etc/grub.conf

commands
read a file page by page with less command
[root@linuxguideco /]# less /etc/grub.conf

read a file page by page with more command
[root@linuxguideco /]# more /etc/grub.conf

read first ten lines of grub.conf
[root@linuxguideco /]# head /etc/grub.conf

read last ten lines of grub.conf
[root@linuxguideco /]# tail /etc/grub.conf

read first 12 lines with -n option
[root@linuxguideco /]# head -n 12 /etc/grub.conf

read last 13 lines with -n option
[root@linuxguideco /]# last -n 13 /etc/grub.conf

copy the contents of /etc/grub.conf in /guide/file
[root@linuxguideco /]# cat /etc/grub.conf > /guide/file

Append the contents of /guide/file in /guide2/file
[root@linuxguideco /]# cat /guide/file >> /guide2/file

merging two commands with pipe sign output of the first command is input of second command
[root@linuxguideco /]# cat /usr/apache2/conf/httpd.conf | more

count the total lines of httpd.conf
[root@linuxguideco /]# cat /usr/apache2/conf/httpd.conf | wc -l
479

show only conf words in httpd.conf
[root@linuxguideco /]# cat /usr/apache2/conf/httpd.conf | grep conf

flush the contents of file
[root@linuxguideco /]# cat /dev/null > /guide/file
 

help commands
[root@linuxguideco guide]# man mkdir
[root@linuxguideco guide]# info mkdir
[root@linuxguideco guide]# mkdir --help
[root@linuxguideco guide]# apropos "partition"

I hope these basic commands will surely help out to Linux beginner users.

07 May, 2013

Linux Directory Structure

There are different directory structures by different distributions. Here we are discussing about the Linux Filesystem Hierarchy Standard (FHS).

    /bin _ directorey contains single_user mode / essential UNIX commands.

    /boot _ kernel file is stored in it and it helps to run during booting the machine.

    /dev _ the dev directory contains device files on system.

    /etc _ All system files and configurations used in this directory. Networking, NFS, and mail are example of subsystems. Includes mount disks and processes to run on startup, etc.

    /etc/rc.d _ directory contains a shell scripts. these scripts are run on bootup at different run levels.

    /etc/rc.d/init.d _ contains rpm-based system (binary), most of the initialization scripts themselves run in this directory.

    /etc/profile.d _ contains scripts that are run by /etc/profile upon login.

    /etc/rc.d/rc*.d _ ''*'' shows run levels, it contains files for services to be started and stopped at that run level.

    /etc/skel _ contains several example or skeleton initialization shells.

    /etc/X11 _ contains X Window system configuration files.

    /home _ contains individual users home directories.

    /lib _ consists standard shared library files.

    /lib/modules _ modular device driver files, most with .o extensions.

    /mnt _ in this direcotry we can mount devices such as cd_rom, hard_drives etc.

    /proc _ all running processes show in the directory and provides a number of system statistics.

    /root _ home directory for root.

    /sbin _ location of binaries used for system administration, configuration, and monitoring.

    /tmp _ direcoty stores temporary files. It specifically designed for programs and users to store tmp files.

    /usr _ this is main directory containing a number of subdirectory with documentation, libraries, programs, etc.

    /usr/bin _ directory contains most user commands. Should not contain binaries necessary for booting the system, which go in /bin.

    /usr/doc _ location of miscellaneous documentation.

    /usr/include _ standard location of include files used in C programs such as stdio.h

    /usr/info _ primary location of the GNU info system files.

    /usr/lib _ contains library files (libc.a) searched by the linker when programs are compiled.

    /usr/local/bin _ directory another place to look for comon executables.

    /usr/man _ location of manual page files.

    /usr/sbin _ other commands used by superuser for system administration.

    /usr/share _ contains subdirectories where many installed programs have configured, setup and auxiliary files.

    /usr/src _ location of source programs used to build system. Source code for programs of all types are often unpacked in this directory.

    /usr/src/linux _ contains the kernel sources.

    /var _ directory contains administrative files such as log files used by various utilities.

    /var/log/packages _ directory contains files and has detailed information on an installed package in slackware.

    /var/log/scripts _ package installation scripts are stored here.

    /var/spool _ in this directory, mail that has not yet been picked up, etc.


02 May, 2013

UNIX History



In 1969, a team of developers in the Bell Labs laboratories started working on a solution for the software problem for security department in USA army, to address these compatibility issues. They got the solution and they develop the new OS. This operating system was simple and elegant written in the C programming language not in assembly code. They named their project UNIX. The code recycling features was also made which were very important. Due to this, all commercially available computer systems were written in a code. UNIX made this special code and named kernel to the code. This kernel is only that needs to be adapted for every specific system and forms the base of the UNIX system. All other functions and operating system were built around this kernel and written in a language C. This language was especially developed for creating the UNIX system. It was much easier to develop an operating system that could run on many different types of hardware using the technique. The software vendors were quick to adapt, since they could sell ten times more software almost effortlessly. UNIX did a great deal to help users become compatible with different systems. More things became possible to do and more hardware and software vendors added support for UNIX to their products. UNIX was initially found only in very large environments with mainframes and minicomputers. But smaller computers were being developed and end of the 80's, many people had home computers. Initially they were all terribly slow, so most people ran MS DOS or Windows 3.1 on their home PCs. So we say that UNIX is the mother of IT. They opened their source for all. Redhat, Apple, Sun and IBM are called UNIX family/open source family.

In the 90s home PCs were finally powerful enough to run a full blown UNIX. Linus Torvalds, a young man studying computer science at the University of Helsinki, thought it would be a good idea to have some sort of freely available academic version of UNIX should be, and quickly began code.
He began to ask questions, seek answers and solutions to it on their PC UNIX would help. Below is one of his first posts in comp.os.minix, 1991:

From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Newsgroups: comp.os.minix
Subject: Gcc-1.40 and a posix-question
Message-ID: <1991Jul3.100050.9886@klaava.Helsinki.FI>
Date: 3 Jul 91 10:00:50 GMT
Hello netlanders,
Due to a project I'm working on (in minix), I'm interested in the posix standard definition. Could somebody please point me to a (preferably) machine-readable format of the latest posix rules? Ftp-sites would be nice.

From the start, it was Linus' goal with a free system that was completely prepared to have the origin of UNIX. Therefore, it is always asked for POSIX standard UNIX POSIX standard. In those days plug-and-play was not invented yet, but so many people were interested in having a UNIX system of their own, it was just a small problem. New driver for all kinds of new materials and ever-increasing speed. Almost once was a new material is available, someone bought and tested Linux, releasing more free code for an ever wider range of hardware. These programmers do not stop on their PC and each piece of equipment is useful for Linux. At the time, the people nerds were called, but that did not matter to them as long as the supported hardware list grew longer. Many thanks to these people, Linux is now not only ideal to run on a new PC, but it is also the system of choice for an ever wider range of hardware would be useless if Linux did not exist.

Linus’ post after two years, there were 12000 Linux users. The project, popular with hobby has continued to grow while within the bounds of the POSIX standard. All the features of UNIX were added over the next two years, which is in the mature operating system Linux has become today. Linux is a full UNIX clone, fit for use on workstations and mid-range and high-end servers. Today, a majority of the key players is to have the hardware and software market each have their team of Linux developers, is your local dealer that you can even buy pre-installed Linux systems with official support. Also there is still a lot of hard and software, which is not supported.