<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8354993350047125632</id><updated>2011-12-20T20:02:16.619-08:00</updated><title type='text'>faysalmicrotech</title><subtitle type='html'>No Rights Just Human Rights</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://faysalmicrotech.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8354993350047125632/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://faysalmicrotech.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>faysal76</name><uri>http://www.blogger.com/profile/02525014504583845189</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8354993350047125632.post-8832496475578379130</id><published>2010-11-11T04:51:00.000-08:00</published><updated>2010-11-11T04:51:10.829-08:00</updated><title type='text'>Wolvix-The Linux  for home users</title><content type='html'>&lt;img alt=" " class="float_left" src="http://wolvix.org/img/features.png" /&gt;     Wolvix is a desktop oriented GNU/Linux distribution based on Slackware. It features the Xfce desktop    environment and a comprehensive selection of development, graphics, multimedia, network and office    applications. It's mainly targeted at home users and strives to provide a balance between everyday    computing tasks, creativity, work and enjoyment. &lt;br /&gt;Using Wolvix does not require more than basic computer skills, but installing and administering    the system might require more knowledge than some of the &lt;a href="http://distrowatch.com/"&gt;other     GNU/Linux distributions&lt;/a&gt;. Much like Slackware, Wolvix sometimes requires you to roll up your sleves and    get your hands dirty. So if the thought of using the &lt;a href="http://www.linuxcommand.org/"&gt;command line&lt;/a&gt;    and reading &lt;a href="http://www.slackbook.org/"&gt;documentation&lt;/a&gt; scares you, you might be better off using    another distribution. &lt;br /&gt;By default Wolvix only includes &lt;a href="http://www.gtk.org/"&gt;GTK+&lt;/a&gt; applications, this is not because    the developers hate &lt;a href="http://trolltech.com/products/qt/"&gt; Qt&lt;/a&gt; programs, it's mainly an    aesthetic choice. The Qt widget looks out-of-place under Xfce, which use GTK+ and there are     &lt;a href="http://gnomefiles.org/"&gt;pleny of great GTK+ applications&lt;/a&gt; to choose from. &lt;br /&gt;Wolvix does not strictly follow the 'one-application-per-task' mantra that some other distributions do.    In Wolvix you will sometimes find that there are two, or perhaps even three applications that basically     does the same thing. One reason for this is that some application fill each other out in functionality.     Another reason is choice; we all have different preferences, my preferred text editor is not necessarily    the one you prefer. There is of course a balance to this, the goal is not to create a    &lt;a href="http://en.wikipedia.org/wiki/Software_bloat"&gt;bloated&lt;/a&gt; distribution, but some times one    application is simply not enough.  &lt;br /&gt;Though Wolvix is fast and has a low memory footprint, it's not specifically developed for old computers, as    it features modern software; which has modern hardware requirements. But it should perform well on    systems which are not the latest and greatest. You should get acceptable performance from Wolvix and    most of it's applications on a computer     with a 700Mhz &lt;a href="http://en.wikipedia.org/wiki/Cpu"&gt;CPU&lt;/a&gt; and 256MB     &lt;a href="http://en.wikipedia.org/wiki/RAM"&gt;RAM&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8354993350047125632-8832496475578379130?l=faysalmicrotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://wolvix.org/about.php' title='Wolvix-The Linux  for home users'/><link rel='replies' type='application/atom+xml' href='http://faysalmicrotech.blogspot.com/feeds/8832496475578379130/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://faysalmicrotech.blogspot.com/2010/11/wolvix-linux-for-home-users.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8354993350047125632/posts/default/8832496475578379130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8354993350047125632/posts/default/8832496475578379130'/><link rel='alternate' type='text/html' href='http://faysalmicrotech.blogspot.com/2010/11/wolvix-linux-for-home-users.html' title='Wolvix-The Linux  for home users'/><author><name>faysal76</name><uri>http://www.blogger.com/profile/02525014504583845189</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8354993350047125632.post-2901831707336712046</id><published>2010-11-11T04:45:00.000-08:00</published><updated>2010-11-11T04:53:16.035-08:00</updated><title type='text'>An index of BASH command for Linux</title><content type='html'>&lt;pre&gt;adduser  Add a user to the system&lt;br /&gt;  addgroup Add a group to the system&lt;br /&gt;  &lt;a href="http://ss64.com/bash/alias.html"&gt;alias&lt;/a&gt;    Create an alias •&lt;br /&gt;  apropos  Search Help manual pages (man -k)&lt;br /&gt;  &lt;a href="http://ss64.com/bash/apt-get.html"&gt;apt-get&lt;/a&gt;  Search for and install software packages (Debian/Ubuntu)&lt;br /&gt;  &lt;a href="http://ss64.com/bash/aptitude.html"&gt;aptitude&lt;/a&gt; Search for and install software packages (Debian/Ubuntu)&lt;br /&gt;  &lt;a href="http://ss64.com/bash/aspell.html"&gt;aspell&lt;/a&gt;   Spell Checker&lt;br /&gt;  &lt;a href="http://ss64.com/bash/awk.html"&gt;awk&lt;/a&gt;      Find and Replace text, database sort/validate/index&lt;br /&gt;b&lt;br /&gt;  &lt;a href="http://ss64.com/bash/basename.html"&gt;basename&lt;/a&gt; Strip directory and suffix from filenames&lt;br /&gt;  bash     GNU Bourne-Again SHell &lt;br /&gt;  &lt;a href="http://ss64.com/bash/bc.html"&gt;bc&lt;/a&gt;       Arbitrary precision calculator language &lt;br /&gt;  &lt;a href="http://ss64.com/bash/bg.html"&gt;bg&lt;/a&gt;       Send to background&lt;br /&gt;  &lt;a href="http://ss64.com/bash/break.html"&gt;break&lt;/a&gt;    Exit from a loop •&lt;br /&gt;  &lt;a href="http://ss64.com/bash/builtin.html"&gt;builtin&lt;/a&gt;  Run a shell builtin&lt;br /&gt;  &lt;a href="http://www.bzip.org/"&gt;bzip2&lt;/a&gt;    Compress or decompress named file(s)&lt;br /&gt;c&lt;br /&gt;  &lt;a href="http://ss64.com/bash/cal.html"&gt;cal&lt;/a&gt;      Display a calendar&lt;br /&gt;  &lt;a href="http://ss64.com/bash/case.html"&gt;case&lt;/a&gt;     Conditionally perform a command&lt;br /&gt;  &lt;a href="http://ss64.com/bash/cat.html"&gt;cat&lt;/a&gt;      Display the contents of a file&lt;br /&gt;  &lt;a href="http://ss64.com/bash/cd.html"&gt;cd&lt;/a&gt;       Change Directory&lt;br /&gt;  &lt;a href="http://ss64.com/bash/cfdisk.html"&gt;cfdisk&lt;/a&gt;   Partition table manipulator for Linux&lt;br /&gt;  &lt;a href="http://ss64.com/bash/chgrp.html"&gt;chgrp&lt;/a&gt;    Change group ownership&lt;br /&gt;  &lt;a href="http://ss64.com/bash/chmod.html"&gt;chmod&lt;/a&gt;    Change access permissions&lt;br /&gt;  &lt;a href="http://ss64.com/bash/chown.html"&gt;chown&lt;/a&gt;    Change file owner and group&lt;br /&gt;  &lt;a href="http://ss64.com/bash/chroot.html"&gt;chroot&lt;/a&gt;   Run a command with a different root directory&lt;br /&gt;  &lt;a href="http://ss64.com/bash/chkconfig.html"&gt;chkconfig&lt;/a&gt; System services (runlevel)&lt;br /&gt;  &lt;a href="http://ss64.com/bash/cksum.html"&gt;cksum&lt;/a&gt;    Print CRC checksum and byte counts&lt;br /&gt;  clear    Clear terminal screen&lt;br /&gt;  &lt;a href="http://ss64.com/bash/cmp.html"&gt;cmp&lt;/a&gt;      Compare two files&lt;br /&gt;  &lt;a href="http://ss64.com/bash/comm.html"&gt;comm&lt;/a&gt;     Compare two sorted files line by line&lt;br /&gt;  &lt;a href="http://ss64.com/bash/command.html"&gt;command&lt;/a&gt;  Run a command - ignoring shell functions •&lt;br /&gt;  &lt;a href="http://ss64.com/bash/continue.html"&gt;continue&lt;/a&gt; Resume the next iteration of a loop •&lt;br /&gt;  &lt;a href="http://ss64.com/bash/cp.html"&gt;cp&lt;/a&gt;       Copy one or more files to another location&lt;br /&gt;  &lt;a href="http://ss64.com/bash/cron.html"&gt;cron&lt;/a&gt;     Daemon to execute scheduled commands&lt;br /&gt;  &lt;a href="http://ss64.com/bash/crontab.html"&gt;crontab&lt;/a&gt;  Schedule a command to run at a later time&lt;br /&gt;  &lt;a href="http://ss64.com/bash/csplit.html"&gt;csplit&lt;/a&gt;   Split a file into context-determined pieces&lt;br /&gt;  &lt;a href="http://ss64.com/bash/cut.html"&gt;cut&lt;/a&gt;      Divide a file into several parts&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;a name='more'&gt;&lt;/a&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;d&lt;br /&gt;  &lt;a href="http://ss64.com/bash/date.html"&gt;date&lt;/a&gt;     Display or change the date &amp;amp; time&lt;br /&gt;  &lt;a href="http://ss64.com/bash/dc.html"&gt;dc&lt;/a&gt;       Desk Calculator&lt;br /&gt;  &lt;a href="http://ss64.com/bash/dd.html"&gt;dd&lt;/a&gt;       Convert and copy a file, write disk headers, boot records&lt;br /&gt;  &lt;a href="http://ss64.com/bash/ddrescue.html"&gt;ddrescue&lt;/a&gt; Data recovery tool&lt;br /&gt;  &lt;a href="http://ss64.com/bash/declare.html"&gt;declare&lt;/a&gt;  Declare variables and give them attributes •&lt;br /&gt;  &lt;a href="http://ss64.com/bash/df.html"&gt;df&lt;/a&gt;       Display free disk space&lt;br /&gt;  &lt;a href="http://ss64.com/bash/diff.html"&gt;diff&lt;/a&gt;     Display the differences between two files&lt;br /&gt;  &lt;a href="http://ss64.com/bash/diff3.html"&gt;diff3&lt;/a&gt;    Show differences among three files&lt;br /&gt;  &lt;a href="http://ss64.com/bash/dig.html"&gt;dig&lt;/a&gt;      DNS lookup&lt;br /&gt;  &lt;a href="http://ss64.com/bash/dir.html"&gt;dir&lt;/a&gt;      Briefly list directory contents&lt;br /&gt;  &lt;a href="http://ss64.com/bash/dircolours.html"&gt;dircolors&lt;/a&gt; Colour setup for `ls'&lt;br /&gt;  &lt;a href="http://ss64.com/bash/dirname.html"&gt;dirname&lt;/a&gt;  Convert a full pathname to just a path&lt;br /&gt;  &lt;a href="http://ss64.com/bash/dirs.html"&gt;dirs&lt;/a&gt;     Display list of remembered directories&lt;br /&gt;  &lt;a href="http://ss64.com/bash/dmesg.html"&gt;dmesg&lt;/a&gt;    Print kernel &amp;amp; driver messages &lt;br /&gt;  &lt;a href="http://ss64.com/bash/du.html"&gt;du&lt;/a&gt;       Estimate file space usage&lt;br /&gt;e&lt;br /&gt;  &lt;a href="http://ss64.com/bash/echo.html"&gt;echo&lt;/a&gt;     Display message on screen •&lt;br /&gt;  &lt;a href="http://ss64.com/bash/egrep.html"&gt;egrep&lt;/a&gt;    Search file(s) for lines that match an extended expression&lt;br /&gt;  &lt;a href="http://ss64.com/bash/eject.html"&gt;eject&lt;/a&gt;    Eject removable media&lt;br /&gt;  &lt;a href="http://ss64.com/bash/enable.html"&gt;enable&lt;/a&gt;   Enable and disable builtin shell commands •&lt;br /&gt;  &lt;a href="http://ss64.com/bash/env.html"&gt;env&lt;/a&gt;      Environment variables&lt;br /&gt;  ethtool  Ethernet card settings&lt;br /&gt;  &lt;a href="http://ss64.com/bash/eval.html"&gt;eval&lt;/a&gt;     Evaluate several commands/arguments&lt;br /&gt;  &lt;a href="http://ss64.com/bash/exec.html"&gt;exec&lt;/a&gt;     Execute a command&lt;br /&gt;  &lt;a href="http://ss64.com/bash/exit.html"&gt;exit&lt;/a&gt;     Exit the shell&lt;br /&gt;  &lt;a href="http://en.wikipedia.org/wiki/Expect"&gt;expect&lt;/a&gt;   Automate arbitrary applications accessed over a terminal&lt;br /&gt;  &lt;a href="http://ss64.com/bash/expand.html"&gt;expand&lt;/a&gt;   Convert tabs to spaces&lt;br /&gt;  &lt;a href="http://ss64.com/bash/export.html"&gt;export&lt;/a&gt;   Set an environment variable&lt;br /&gt;  &lt;a href="http://ss64.com/bash/expr.html"&gt;expr&lt;/a&gt;     Evaluate expressions&lt;br /&gt;f&lt;br /&gt;  &lt;a href="http://ss64.com/bash/false.html"&gt;false&lt;/a&gt;    Do nothing, unsuccessfully&lt;br /&gt;  &lt;a href="http://ss64.com/bash/fdformat.html"&gt;fdformat&lt;/a&gt; Low-level format a floppy disk&lt;br /&gt;  &lt;a href="http://ss64.com/bash/fdisk.html"&gt;fdisk&lt;/a&gt;    Partition table manipulator for Linux&lt;br /&gt;  &lt;a href="http://ss64.com/bash/fg.html"&gt;fg&lt;/a&gt;       Send job to foreground &lt;br /&gt;  &lt;a href="http://ss64.com/bash/fgrep.html"&gt;fgrep&lt;/a&gt;    Search file(s) for lines that match a fixed string&lt;br /&gt;  file     Determine file type&lt;br /&gt;  &lt;a href="http://ss64.com/bash/find.html"&gt;find&lt;/a&gt;     Search for files that meet a desired criteria&lt;br /&gt;  &lt;a href="http://ss64.com/bash/fmt.html"&gt;fmt&lt;/a&gt;      Reformat paragraph text&lt;br /&gt;  &lt;a href="http://ss64.com/bash/fold.html"&gt;fold&lt;/a&gt;     Wrap text to fit a specified width.&lt;br /&gt;  &lt;a href="http://ss64.com/bash/for.html"&gt;for&lt;/a&gt;      Expand &lt;var&gt;words&lt;/var&gt;, and execute &lt;var&gt;commands&lt;/var&gt;&lt;br /&gt;  format   Format disks or tapes&lt;br /&gt;  free     Display memory usage&lt;br /&gt;  &lt;a href="http://ss64.com/bash/fsck.html"&gt;fsck&lt;/a&gt;     File system consistency check and repair&lt;br /&gt;  ftp      File Transfer Protocol&lt;br /&gt;  &lt;a href="http://ss64.com/bash/function.html"&gt;function&lt;/a&gt; Define Function Macros&lt;br /&gt;  &lt;a href="http://ss64.com/bash/fuser.html"&gt;fuser&lt;/a&gt;    Identify/kill the process that is accessing a file&lt;br /&gt;g&lt;br /&gt;  &lt;a href="http://ss64.com/bash/awk.html"&gt;gawk&lt;/a&gt;     Find and Replace text within file(s)&lt;br /&gt;  &lt;a href="http://ss64.com/bash/getopts.html"&gt;getopts&lt;/a&gt;  Parse positional parameters&lt;br /&gt;  &lt;a href="http://ss64.com/bash/grep.html"&gt;grep&lt;/a&gt;     Search file(s) for lines that match a given pattern&lt;br /&gt;  &lt;a href="http://ss64.com/bash/groups.html"&gt;groups&lt;/a&gt;   Print group names a user is in&lt;br /&gt;  &lt;a href="http://ss64.com/bash/gzip.html"&gt;gzip&lt;/a&gt;     Compress or decompress named file(s)&lt;br /&gt;h&lt;br /&gt;  &lt;a href="http://ss64.com/bash/hash.html"&gt;hash&lt;/a&gt;     Remember the full pathname of a name argument&lt;br /&gt;  &lt;a href="http://ss64.com/bash/head.html"&gt;head&lt;/a&gt;     Output the first part of file(s)&lt;br /&gt;  help     Display help for a built-in command •&lt;br /&gt;  &lt;a href="http://ss64.com/bash/history.html"&gt;history&lt;/a&gt;  Command History&lt;br /&gt;  &lt;a href="http://ss64.com/bash/hostname.html"&gt;hostname&lt;/a&gt; Print or set system name&lt;br /&gt;i&lt;br /&gt;  &lt;a href="http://ss64.com/bash/id.html"&gt;id&lt;/a&gt;       Print user and group id's&lt;br /&gt;  &lt;a href="http://ss64.com/bash/if.html"&gt;if&lt;/a&gt;       Conditionally perform a command&lt;br /&gt;  &lt;a href="http://ss64.com/bash/ifconfig.html"&gt;ifconfig&lt;/a&gt; Configure a network interface&lt;br /&gt;  &lt;a href="http://ss64.com/bash/ifup.html"&gt;ifdown&lt;/a&gt;   Stop a network interface &lt;br /&gt;  &lt;a href="http://ss64.com/bash/ifup.html"&gt;ifup&lt;/a&gt;     Start a network interface up&lt;br /&gt;  &lt;a href="http://ss64.com/bash/import.html"&gt;import&lt;/a&gt;   Capture an X server screen and save the image to file&lt;br /&gt;  &lt;a href="http://ss64.com/bash/install.html"&gt;install&lt;/a&gt;  Copy files and set attributes&lt;br /&gt;j&lt;br /&gt;  &lt;a href="http://ss64.com/bash/jobs.html"&gt;jobs&lt;/a&gt;     List active jobs •&lt;br /&gt;  &lt;a href="http://ss64.com/bash/join.html"&gt;join&lt;/a&gt;     Join lines on a common field&lt;br /&gt;k&lt;br /&gt;  &lt;a href="http://ss64.com/bash/kill.html"&gt;kill&lt;/a&gt;     Stop a process from running&lt;br /&gt;  &lt;a href="http://ss64.com/bash/killall.html"&gt;killall&lt;/a&gt;  Kill processes by name&lt;br /&gt;l&lt;br /&gt;  &lt;a href="http://ss64.com/bash/less.html"&gt;less&lt;/a&gt;     Display output one screen at a time&lt;br /&gt;  &lt;a href="http://ss64.com/bash/let.html"&gt;let&lt;/a&gt;      Perform arithmetic on shell variables •&lt;br /&gt;  &lt;a href="http://ss64.com/bash/ln.html"&gt;ln&lt;/a&gt;       Make links between files&lt;br /&gt;  &lt;a href="http://ss64.com/bash/local.html"&gt;local&lt;/a&gt;    Create variables •&lt;br /&gt;  &lt;a href="http://ss64.com/bash/locate.html"&gt;locate&lt;/a&gt;   Find files&lt;br /&gt;  &lt;a href="http://ss64.com/bash/logname.html"&gt;logname&lt;/a&gt;  Print current login name&lt;br /&gt;  &lt;a href="http://ss64.com/bash/logout.html"&gt;logout&lt;/a&gt;   Exit a login shell •&lt;br /&gt;  &lt;a href="http://ss64.com/bash/look.html"&gt;look&lt;/a&gt;     Display lines beginning with a given string&lt;br /&gt;  &lt;a href="http://ss64.com/bash/lpc.html"&gt;lpc&lt;/a&gt;      Line printer control program&lt;br /&gt;  &lt;a href="http://ss64.com/bash/lpr.html"&gt;lpr&lt;/a&gt;      Off line print&lt;br /&gt;  lprint   Print a file&lt;br /&gt;  lprintd  Abort a print job&lt;br /&gt;  lprintq  List the print queue&lt;br /&gt;  &lt;a href="http://ss64.com/bash/lprm.html"&gt;lprm&lt;/a&gt;     Remove jobs from the print queue&lt;br /&gt;  &lt;a href="http://ss64.com/bash/ls.html"&gt;ls&lt;/a&gt;       List information about file(s)&lt;br /&gt;  &lt;a href="http://ss64.com/bash/lsof.html"&gt;lsof&lt;/a&gt;     List open files&lt;br /&gt;m&lt;br /&gt;  make     Recompile a group of programs&lt;br /&gt;  &lt;a href="http://ss64.com/bash/man.html"&gt;man&lt;/a&gt;      Help manual&lt;br /&gt;  &lt;a href="http://ss64.com/bash/mkdir.html"&gt;mkdir&lt;/a&gt;    Create new folder(s)&lt;br /&gt;  &lt;a href="http://ss64.com/bash/mkfifo.html"&gt;mkfifo&lt;/a&gt;   Make FIFOs (named pipes)&lt;br /&gt;  mkisofs  Create an hybrid ISO9660/JOLIET/HFS filesystem&lt;br /&gt;  &lt;a href="http://ss64.com/bash/mknod.html"&gt;mknod&lt;/a&gt;    Make block or character special files&lt;br /&gt;  &lt;a href="http://ss64.com/bash/more.html"&gt;more&lt;/a&gt;     Display output one screen at a time&lt;br /&gt;  &lt;a href="http://ss64.com/bash/mount.html"&gt;mount&lt;/a&gt;    Mount a file system&lt;br /&gt;  &lt;a href="http://ss64.com/bash/mtools.html"&gt;mtools&lt;/a&gt;   Manipulate MS-DOS files&lt;br /&gt;  &lt;a href="http://ss64.com/bash/mtr.html"&gt;mtr&lt;/a&gt;      Network diagnostics (traceroute/ping)&lt;br /&gt;  &lt;a href="http://ss64.com/bash/mv.html"&gt;mv&lt;/a&gt;       Move or rename files or directories&lt;br /&gt;  &lt;a href="http://ss64.com/bash/mmv.html"&gt;mmv&lt;/a&gt;      Mass Move and rename (files)&lt;br /&gt;n&lt;br /&gt;  netstat  Networking information&lt;br /&gt;  &lt;a href="http://ss64.com/bash/nice.html"&gt;nice&lt;/a&gt;     Set the priority of a command or job&lt;br /&gt;  &lt;a href="http://ss64.com/bash/nl.html"&gt;nl&lt;/a&gt;       Number lines and write files&lt;br /&gt;  &lt;a href="http://ss64.com/bash/nohup.html"&gt;nohup&lt;/a&gt;    Run a command immune to hangups&lt;br /&gt;  &lt;a href="http://ss64.com/bash/notify-send.html"&gt;notify-send&lt;/a&gt;  Send desktop notifications&lt;br /&gt;  &lt;a href="http://ss64.com/bash/nslookup.html"&gt;nslookup&lt;/a&gt; Query Internet name servers interactively&lt;br /&gt;o&lt;br /&gt;  &lt;a href="http://ss64.com/bash/open.html"&gt;open&lt;/a&gt;     Open a file in its default application&lt;br /&gt;  &lt;a href="http://ss64.com/bash/op.html"&gt;op&lt;/a&gt;       Operator access &lt;br /&gt;p&lt;br /&gt;  &lt;a href="http://ss64.com/bash/passwd.html"&gt;passwd&lt;/a&gt;   Modify a user password&lt;br /&gt;  &lt;a href="http://ss64.com/bash/paste.html"&gt;paste&lt;/a&gt;    Merge lines of files&lt;br /&gt;  pathchk  Check file name portability&lt;br /&gt;  &lt;a href="http://ss64.com/bash/ping.html"&gt;ping&lt;/a&gt;     Test a network connection&lt;br /&gt;  &lt;a href="http://ss64.com/bash/pkill.html"&gt;pkill&lt;/a&gt;    Stop processes from running&lt;br /&gt;  &lt;a href="http://ss64.com/bash/popd.html"&gt;popd&lt;/a&gt;     Restore the previous value of the current directory&lt;br /&gt;  &lt;a href="http://ss64.com/bash/pr.html"&gt;pr&lt;/a&gt;       Prepare files for printing&lt;br /&gt;  printcap Printer capability database&lt;br /&gt;  printenv Print environment variables&lt;br /&gt;  &lt;a href="http://ss64.com/bash/printf.html"&gt;printf&lt;/a&gt;   Format and print data •&lt;br /&gt;  &lt;a href="http://ss64.com/bash/ps.html"&gt;ps&lt;/a&gt;       Process status&lt;br /&gt;  &lt;a href="http://ss64.com/bash/pushd.html"&gt;pushd&lt;/a&gt;    Save and then change the current directory&lt;br /&gt;  &lt;a href="http://ss64.com/bash/pwd.html"&gt;pwd&lt;/a&gt;      Print Working Directory&lt;br /&gt;q&lt;br /&gt;  &lt;a href="http://ss64.com/bash/quota.html"&gt;quota&lt;/a&gt;    Display disk usage and limits&lt;br /&gt;  &lt;a href="http://ss64.com/bash/quotacheck.html"&gt;quotacheck&lt;/a&gt; Scan a file system for disk usage&lt;br /&gt;  &lt;a href="http://ss64.com/bash/quotactl.html"&gt;quotactl&lt;/a&gt; Set disk quotas&lt;br /&gt;r&lt;br /&gt;  &lt;a href="http://ss64.com/bash/ram.html"&gt;ram&lt;/a&gt;      ram disk device&lt;br /&gt;  &lt;a href="http://ss64.com/bash/rcp.html"&gt;rcp&lt;/a&gt;      Copy files between two machines&lt;br /&gt;  &lt;a href="http://ss64.com/bash/read.html"&gt;read&lt;/a&gt;     Read a line from standard input •&lt;br /&gt;  readarray Read from stdin into an array variable •&lt;br /&gt;  &lt;a href="http://ss64.com/bash/readonly.html"&gt;readonly&lt;/a&gt; Mark variables/functions as readonly&lt;br /&gt;  reboot   Reboot the system&lt;br /&gt;  &lt;a href="http://ss64.com/bash/rename.html"&gt;rename&lt;/a&gt;   Rename files&lt;br /&gt;  renice   Alter priority of running processes &lt;br /&gt;  remsync  Synchronize remote files via email&lt;br /&gt;  &lt;a href="http://ss64.com/bash/return.html"&gt;return&lt;/a&gt;   Exit a shell function&lt;br /&gt;  &lt;a href="http://ss64.com/bash/rev.html"&gt;rev&lt;/a&gt;      Reverse lines of a file&lt;br /&gt;  &lt;a href="http://ss64.com/bash/rm.html"&gt;rm&lt;/a&gt;       Remove files&lt;br /&gt;  &lt;a href="http://ss64.com/bash/rmdir.html"&gt;rmdir&lt;/a&gt;    Remove folder(s)&lt;br /&gt;  &lt;a href="http://ss64.com/bash/rsync.html"&gt;rsync&lt;/a&gt;    Remote file copy (Synchronize file trees)&lt;br /&gt;s&lt;br /&gt;  &lt;a href="http://ss64.com/bash/screen.html"&gt;screen&lt;/a&gt;   Multiplex terminal, run remote shells via ssh&lt;br /&gt;  &lt;a href="http://ss64.com/bash/scp.html"&gt;scp&lt;/a&gt;      Secure copy (remote file copy)&lt;br /&gt;  &lt;a href="http://ss64.com/bash/sdiff.html"&gt;sdiff&lt;/a&gt;    Merge two files interactively&lt;br /&gt;  &lt;a href="http://ss64.com/bash/sed.html"&gt;sed&lt;/a&gt;      Stream Editor&lt;br /&gt;  &lt;a href="http://ss64.com/bash/select.html"&gt;select&lt;/a&gt;   Accept keyboard input&lt;br /&gt;  &lt;a href="http://ss64.com/bash/seq.html"&gt;seq&lt;/a&gt;      Print numeric sequences&lt;br /&gt;  &lt;a href="http://ss64.com/bash/set.html"&gt;set&lt;/a&gt;      Manipulate shell variables and functions&lt;br /&gt;  sftp     Secure File Transfer Program&lt;br /&gt;  &lt;a href="http://ss64.com/bash/shift.html"&gt;shift&lt;/a&gt;    Shift positional parameters&lt;br /&gt;  &lt;a href="http://ss64.com/bash/shopt.html"&gt;shopt&lt;/a&gt;    Shell Options&lt;br /&gt;  &lt;a href="http://ss64.com/bash/shutdown.html"&gt;shutdown&lt;/a&gt; Shutdown or restart linux&lt;br /&gt;  &lt;a href="http://ss64.com/bash/sleep.html"&gt;sleep&lt;/a&gt;    Delay for a specified time&lt;br /&gt;  &lt;a href="http://ss64.com/bash/slocate.html"&gt;slocate&lt;/a&gt;  Find files&lt;br /&gt;  &lt;a href="http://ss64.com/bash/sort.html"&gt;sort&lt;/a&gt;     Sort text files&lt;br /&gt;  &lt;a href="http://ss64.com/bash/source.html"&gt;source&lt;/a&gt;   Run commands from a file `.'&lt;br /&gt;  &lt;a href="http://ss64.com/bash/split.html"&gt;split&lt;/a&gt;    Split a file into fixed-size pieces&lt;br /&gt;  &lt;a href="http://ss64.com/bash/ssh.html"&gt;ssh&lt;/a&gt;      Secure Shell client (remote login program)&lt;br /&gt;  strace   Trace system calls and signals&lt;br /&gt;  &lt;a href="http://ss64.com/bash/su.html"&gt;su&lt;/a&gt;       Substitute user identity&lt;br /&gt;  &lt;a href="http://ss64.com/bash/sudo.html"&gt;sudo&lt;/a&gt;     Execute a command as another user&lt;br /&gt;  &lt;a href="http://ss64.com/bash/sum.html"&gt;sum&lt;/a&gt;      Print a checksum for a file&lt;br /&gt;  &lt;a href="http://ss64.com/bash/suspend.html"&gt;suspend&lt;/a&gt;  Suspend execution of this shell •&lt;br /&gt;  &lt;a href="http://ss64.com/bash/symlink.html"&gt;symlink&lt;/a&gt;  Make a new name for a file&lt;br /&gt;  &lt;a href="http://ss64.com/bash/sync.html"&gt;sync&lt;/a&gt;     Synchronize data on disk with memory&lt;br /&gt;t&lt;br /&gt;  &lt;a href="http://ss64.com/bash/tail.html"&gt;tail&lt;/a&gt;     Output the last part of files&lt;br /&gt;  &lt;a href="http://ss64.com/bash/tar.html"&gt;tar&lt;/a&gt;      Tape ARchiver&lt;br /&gt;  &lt;a href="http://ss64.com/bash/tee.html"&gt;tee&lt;/a&gt;      Redirect output to multiple files&lt;br /&gt;  &lt;a href="http://ss64.com/bash/test.html"&gt;test&lt;/a&gt;     Evaluate a conditional expression&lt;br /&gt;  &lt;a href="http://ss64.com/bash/time.html"&gt;time&lt;/a&gt;     Measure Program running time&lt;br /&gt;  &lt;a href="http://ss64.com/bash/times.html"&gt;times&lt;/a&gt;    User and system times&lt;br /&gt;  &lt;a href="http://ss64.com/bash/touch.html"&gt;touch&lt;/a&gt;    Change file timestamps&lt;br /&gt;  &lt;a href="http://ss64.com/bash/top.html"&gt;top&lt;/a&gt;      List processes running on the system&lt;br /&gt;  &lt;a href="http://ss64.com/bash/traceroute.html"&gt;traceroute&lt;/a&gt; Trace Route to Host&lt;br /&gt;  trap     Run a command when a signal is set(bourne)&lt;br /&gt;  &lt;a href="http://ss64.com/bash/tr.html"&gt;tr&lt;/a&gt;       Translate, squeeze, and/or delete characters&lt;br /&gt;  &lt;a href="http://ss64.com/bash/true.html"&gt;true&lt;/a&gt;     Do nothing, successfully&lt;br /&gt;  &lt;a href="http://ss64.com/bash/tsort.html"&gt;tsort&lt;/a&gt;    Topological sort&lt;br /&gt;  &lt;a href="http://ss64.com/bash/tty.html"&gt;tty&lt;/a&gt;      Print filename of terminal on stdin&lt;br /&gt;  &lt;a href="http://ss64.com/bash/type.html"&gt;type&lt;/a&gt;     Describe a command •&lt;br /&gt;u&lt;br /&gt;  &lt;a href="http://ss64.com/bash/ulimit.html"&gt;ulimit&lt;/a&gt;   Limit user resources •&lt;br /&gt;  &lt;a href="http://ss64.com/bash/umask.html"&gt;umask&lt;/a&gt;    Users file creation mask&lt;br /&gt;  umount   Unmount a device&lt;br /&gt;  &lt;a href="http://ss64.com/bash/alias.html"&gt;unalias&lt;/a&gt;  Remove an alias •&lt;br /&gt;  &lt;a href="http://ss64.com/bash/uname.html"&gt;uname&lt;/a&gt;    Print system information&lt;br /&gt;  &lt;a href="http://ss64.com/bash/unexpand.html"&gt;unexpand&lt;/a&gt; Convert spaces to tabs&lt;br /&gt;  &lt;a href="http://ss64.com/bash/uniq.html"&gt;uniq&lt;/a&gt;     Uniquify files&lt;br /&gt;  &lt;a href="http://ss64.com/bash/units.html"&gt;units&lt;/a&gt;    Convert units from one scale to another&lt;br /&gt;  &lt;a href="http://ss64.com/bash/unset.html"&gt;unset&lt;/a&gt;    Remove variable or function names&lt;br /&gt;  &lt;a href="http://ss64.com/bash/unshar.html"&gt;unshar&lt;/a&gt;   Unpack shell archive scripts&lt;br /&gt;  &lt;a href="http://ss64.com/bash/until.html"&gt;until&lt;/a&gt;    Execute commands (until error)&lt;br /&gt;  &lt;a href="http://ss64.com/bash/useradd.html"&gt;useradd&lt;/a&gt;  Create new user account&lt;br /&gt;  &lt;a href="http://ss64.com/bash/usermod.html"&gt;usermod&lt;/a&gt;  Modify user account&lt;br /&gt;  &lt;a href="http://ss64.com/bash/users.html"&gt;users&lt;/a&gt;    List users currently logged in&lt;br /&gt;  &lt;a href="http://ss64.com/bash/uuencode.html"&gt;uuencode&lt;/a&gt; Encode a binary file &lt;br /&gt;  &lt;a href="http://ss64.com/bash/uuencode.html"&gt;uudecode&lt;/a&gt; Decode a file created by uuencode&lt;br /&gt;v&lt;br /&gt;  v        Verbosely list directory contents (`ls -l -b')&lt;br /&gt;  vdir     Verbosely list directory contents (`ls -l -b')&lt;br /&gt;  &lt;a href="http://ss64.com/bash/vi.html"&gt;vi&lt;/a&gt;       Text Editor&lt;br /&gt;  &lt;a href="http://ss64.com/bash/vmstat.html"&gt;vmstat&lt;/a&gt;   Report virtual memory statistics&lt;br /&gt;w&lt;br /&gt;  &lt;a href="http://ss64.com/bash/watch.html"&gt;watch&lt;/a&gt;    Execute/display a program periodically&lt;br /&gt;  &lt;a href="http://ss64.com/bash/wc.html"&gt;wc&lt;/a&gt;       Print byte, word, and line counts&lt;br /&gt;  &lt;a href="http://ss64.com/bash/whereis.html"&gt;whereis&lt;/a&gt;  Search the user's $path, man pages and source files for a program&lt;br /&gt;  &lt;a href="http://ss64.com/bash/which.html"&gt;which&lt;/a&gt;    Search the user's $path for a program file&lt;br /&gt;  &lt;a href="http://ss64.com/bash/while.html"&gt;while&lt;/a&gt;    Execute commands&lt;br /&gt;  &lt;a href="http://ss64.com/bash/who.html"&gt;who&lt;/a&gt;      Print all usernames currently logged in&lt;br /&gt;  &lt;a href="http://ss64.com/bash/whoami.html"&gt;whoami&lt;/a&gt;   Print the current user id and name (`id -un')&lt;br /&gt;  Wget     Retrieve web pages or files via HTTP, HTTPS or FTP&lt;br /&gt;  &lt;a href="http://ss64.com/bash/write.html"&gt;write&lt;/a&gt;    Send a message to another user &lt;br /&gt;x&lt;br /&gt;  &lt;a href="http://ss64.com/bash/xargs.html"&gt;xargs&lt;/a&gt;    Execute utility, passing constructed argument list(s)&lt;br /&gt;  &lt;a href="http://ss64.com/bash/xdg-open.html"&gt;xdg-open&lt;/a&gt; Open a file or URL in the user's preferred application.&lt;br /&gt;  &lt;a href="http://ss64.com/bash/yes.html"&gt;yes&lt;/a&gt;      Print a string until interrupted&lt;br /&gt;  &lt;a href="http://ss64.com/bash/source.html"&gt;.&lt;/a&gt;        Run a command script in the current shell&lt;br /&gt;  &lt;a href="http://ss64.com/bash/rem.html"&gt;###&lt;/a&gt;      Comment / Remark&lt;br /&gt;&lt;/pre&gt;Commands marked • are bash &lt;i&gt;built-ins&lt;/i&gt;, these are available under all shells.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8354993350047125632-2901831707336712046?l=faysalmicrotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://faysalmicrotech.blogspot.com/feeds/2901831707336712046/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://faysalmicrotech.blogspot.com/2010/11/index-of-bash-command-for-linux.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8354993350047125632/posts/default/2901831707336712046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8354993350047125632/posts/default/2901831707336712046'/><link rel='alternate' type='text/html' href='http://faysalmicrotech.blogspot.com/2010/11/index-of-bash-command-for-linux.html' title='An index of BASH command for Linux'/><author><name>faysal76</name><uri>http://www.blogger.com/profile/02525014504583845189</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8354993350047125632.post-1841684479187815408</id><published>2009-11-04T01:32:00.000-08:00</published><updated>2009-11-04T01:32:09.974-08:00</updated><title type='text'>Building a LAMP Server</title><content type='html'>This document will walk you through the installation of what is known as a "LAMP" system:  &lt;b&gt;Linux&lt;/b&gt;, &lt;b&gt;Apache&lt;/b&gt;, &lt;b&gt;MySQL&lt;/b&gt; and &lt;b&gt;PHP&lt;/b&gt;. Depending on who you talk to, the &lt;b&gt;P&lt;/b&gt; also stands for &lt;b&gt;Perl&lt;/b&gt; or  &lt;b&gt;Python&lt;/b&gt;, but in general, it is assumed to be PHP. I run &lt;a href="http://www.centos.org/"&gt;CentOS&lt;/a&gt; on my servers; these directions were written for CentOS/Red Hat/Fedora. I have had requests for SuSE (another RPM-based distribution) as well as Debian-based systems, so I will work on variants of these directions for those distributions in the future (donations might help speed that process up!). The main difference between the distributions is in the paths to the startup scripts.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Red Hat systems used &lt;code&gt;/etc/rc.d/init.d&lt;/code&gt; and SuSE uses &lt;code&gt;/etc/init.d&lt;/code&gt;.&lt;br /&gt;&lt;div class="accent"&gt;If you are not comfortable with trying this procedure yourself, I am  available for hire to install LAMP systems, or assist you with any other Linux-based projects.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;If you need an SSL-enabled server, I have a &lt;b&gt; &lt;a href="http://lamphowto.com/lampssl.html"&gt;LAMP with SSL howto&lt;/a&gt;&lt;/b&gt; as well.&lt;br /&gt;I designed this document so you can just copy/paste each line or block of commands into your shell session and it will "just work" for you. This avoids tedious typing, and  the inevitable typos or missed steps that result.  &lt;b&gt;These commands work properly via copy/paste. If you are having problems and you are not using copy/paste, please re-check your typing before sending me an email saying "It doesn't work."&lt;/b&gt;&lt;br /&gt;&lt;div class="command"&gt;Text in a "command" box like this one is a literal Linux commandline, and should be typed or pasted exactly as written. &lt;br /&gt;&lt;/div&gt;&lt;div class="boldaccent"&gt;One note: many &lt;b&gt;many&lt;/b&gt; people have followed these directions as written, and have not had any problems.&lt;br /&gt;If you are having a problem, chances are it's something you are doing (or not doing), something different&lt;br /&gt;about your computer, etc.&lt;br /&gt;&lt;br /&gt;It is probably &lt;b&gt;NOT&lt;/b&gt; this procedure. :)&lt;br /&gt;&lt;/div&gt;&lt;div class="title"&gt;Initial Steps&lt;br /&gt;&lt;/div&gt;&lt;div class="accent"&gt;PLEASE BE AWARE THAT A SOURCE-BASED INSTALLATION LIKE THIS ONE IS NOT NEEDED FOR A BASIC LAMP SERVER! You should only be doing a source-based installation if you need to alter settings in one or more components of the  LAMP stack (e.g., you need a feature in PHP that isn't in the default RPM). If you are just getting started with LAMP, use the binaries provided by your distribution - it is much simpler, and a lot easier to upgrade later.&lt;br /&gt;&lt;/div&gt;Most out-of-the-box Red Hat Linux installations will have one or more of the LAMP components installed via RPM files. I personally believe in installing things like this from  source, so I get the most control over what's compiled in, what's left out, etc.  But  source code installs can wreak havoc if overlaid on top of RPM installs, as the two most  likely won't share the same directories, etc.&lt;br /&gt;If you have not yet installed your Linux OS, or just for future reference, do not choose to install Apache, PHP, or MySQL during the system installation. Then you can immediately proceed with the source-based install listed here.&lt;br /&gt;Note: to install applications from source code, you will need a C++ compiler (gcc++) installed. This is generally taken care of, but I've had enough queries about it that I've added this note to avoid getting more! You can use your distribution's install CDs to get the proper  version of the compiler. Or, if you are using an RPM based distro, you can use a site like  &lt;a href="http://www.rpmfind.net/"&gt;http://www.rpmfind.net/&lt;/a&gt; to locate the correct RPM  version for your system. (You will obviously not be able to use/rebuild a source RPM to get  the compiler installed, as you need the compiler to build the final binary RPM!) On a Fedora system, you can do this command:&lt;br /&gt;&lt;div class="command"&gt;su - root&lt;br /&gt;yum install gcc gcc-c++&lt;br /&gt;&lt;/div&gt;&lt;div class="title"&gt;Log in as &lt;code&gt;root&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;Because we will be installing software to directories that "regular" users don't have write access to, and also possibly uninstalling RPM versions of some applications, we'll  log in as &lt;code&gt;root&lt;/code&gt;.  The only steps that &lt;i&gt;need&lt;/i&gt; &lt;code&gt;root&lt;/code&gt; access are the actual  installation steps, but by doing the &lt;code&gt;configure&lt;/code&gt; and &lt;code&gt;make&lt;/code&gt; steps as &lt;code&gt;root&lt;/code&gt;,  the source code will also be inaccessible to "regular" users.&lt;br /&gt;If you do not have direct access (via keyboard) to the server, &lt;b&gt;PLEASE&lt;/b&gt; use &lt;a href="http://www.openssh.com/"&gt;Secure Shell (SSH)&lt;/a&gt; to access the server and not &lt;code&gt;telnet&lt;/code&gt;!! Whenever you use &lt;code&gt;telnet&lt;/code&gt; (or plain FTP for that matter), you are transmitting your username, password, and all session information in "plain text". This means that anyone who can access a machine someplace between your PC and your server can snoop your session and get your info. Use encryption wherever possible!&lt;br /&gt;&lt;div class="command"&gt;su - root&lt;br /&gt;&lt;/div&gt;&lt;div class="title"&gt;Remove RPM Versions of the Applications&lt;br /&gt;&lt;/div&gt;Before we start with our source code install, we need to remove all the existing RPM files for these products. To find out what RPMs are already installed, use the RPM query command:&lt;br /&gt;&lt;div class="command"&gt;rpm -qa&lt;br /&gt;&lt;/div&gt;in conjunction with &lt;code&gt;grep&lt;/code&gt; to filter your results:&lt;br /&gt;&lt;div class="command"&gt;rpm -qa | grep -i apache&lt;br /&gt;rpm -qa | grep -i httpd&lt;br /&gt;rpm -qa | grep -i php&lt;br /&gt;rpm -qa | grep -i mysql &lt;br /&gt;&lt;/div&gt;&lt;div class="info"&gt;The 'httpd' search is in case you have Apache2 installed via RPM.&lt;br /&gt;&lt;/div&gt;To remove the RPMs generated by these commands, do&lt;br /&gt;&lt;div class="command"&gt;rpm -e &lt;i&gt;filename&lt;/i&gt;&lt;br /&gt;&lt;/div&gt;for each RPM you found in the query. If you have any content in your MySQL database already, the RPM removal step should not delete the database files. When you reinstall MySQL, you should be able to move all those files to your new MySQL data directory and have access to them all again.&lt;br /&gt;&lt;div class="title"&gt;Get the Source Code for all Applications&lt;br /&gt;&lt;/div&gt;We want to put all our source code someplace central, so it's not getting mixed up in someone's home directory, etc.&lt;br /&gt;&lt;div class="command"&gt;cd /usr/local/src&lt;br /&gt;&lt;/div&gt;One way application source code is distributed is in what are known as "tarballs." The &lt;code&gt;tar&lt;/code&gt; command is usually associated with making tape backups - &lt;code&gt;tar&lt;/code&gt; stands for &lt;b&gt;T&lt;/b&gt;ape &lt;b&gt;AR&lt;/b&gt;chive. It's also a handy way to pack up multiple files for easy distribution.  Use the &lt;code&gt;man tar&lt;/code&gt; command to learn more about how to use this very flexible tool.&lt;br /&gt;At the time of updating this, the current versions of all the components we'll use are:&lt;br /&gt;&lt;div class="info"&gt;MySQL - 4.1.22 &lt;br /&gt;Apache - 1.3.37&lt;br /&gt;PHP - 4.4.6&lt;br /&gt;&lt;/div&gt;&lt;div class="boldaccent"&gt;Please note: these are the &lt;b&gt;only&lt;/b&gt; versions of these that I have set up myself, and verified these steps against. If you use another version of any component, especially a newer version, this HOWTO may not be accurate, and I won't be able to provide free support under those circumstances. Paid support and assistance is &lt;b&gt;always&lt;/b&gt; available however.&lt;br /&gt;&lt;/div&gt;&lt;div class="command"&gt;wget http://www.php.net/distributions/php-4.4.6.tar.gz&lt;br /&gt;wget http://apache.oregonstate.edu/httpd/apache_1.3.37.tar.gz &lt;br /&gt;&lt;/div&gt;There may be an Apache mirror closer to you - check their &lt;a href="http://httpd.apache.org/download.cgi"&gt;mirror page&lt;/a&gt; for other sources. Then insert the URL you get in place of the above for the &lt;code&gt;wget&lt;/code&gt; command.&lt;br /&gt;For MySQL, go to &lt;a href="http://dev.mysql.com/downloads/mysql/4.0.html"&gt;http://www.mysql.com/&lt;/a&gt; and  choose an appropriate mirror to get the newest MySQL version (v4.1.22).&lt;br /&gt;&lt;div class="title"&gt;Unpack the Source Code&lt;br /&gt;&lt;/div&gt;&lt;div class="command"&gt;tar zxf php-4.4.6.tar.gz&lt;br /&gt;tar zxf apache_1.3.37.tar.gz&lt;br /&gt;tar zxf mysql-4.1.22.tar.gz &lt;br /&gt;&lt;/div&gt;This should leave you with the following directories:&lt;br /&gt;&lt;div class="info"&gt;/usr/local/src/php-4.4.6&lt;br /&gt;/usr/local/src/apache_1.3.37&lt;br /&gt;/usr/local/src/mysql-4.1.22&lt;br /&gt;&lt;/div&gt;&lt;div class="title"&gt;Build and Install MySQL&lt;br /&gt;&lt;/div&gt;First, we create the group and user that "owns" MySQL.  For security purposes, we don't want MySQL running as &lt;code&gt;root&lt;/code&gt; on the system.  To be able to easily identify MySQL processes in &lt;code&gt;top&lt;/code&gt; or a &lt;code&gt;ps&lt;/code&gt; list, we'll make a user and group named &lt;code&gt;&lt;b&gt;mysql&lt;/b&gt;&lt;/code&gt;:&lt;br /&gt;&lt;div class="command"&gt;groupadd mysql&lt;br /&gt;useradd -g mysql -c "MySQL Server" mysql &lt;br /&gt;&lt;/div&gt;If you get any messages about the group or user already existing, that's fine. The goal is just to make sure we have them on the system.&lt;br /&gt;What the &lt;code&gt;useradd&lt;/code&gt; command is doing is creating a user &lt;code&gt;mysql&lt;/code&gt; in the group &lt;code&gt;mysql&lt;/code&gt; with the "name" of MySQL Server.  This way when it's showed in various user and process watching apps, you'll be able to tell what it is right away.&lt;br /&gt;Now we'll change to the "working" directory where the source code is, change the file 'ownership' for the source tree (this prevents build issues in  reported in some cases where the packager's username was included on the source  and you aren't using the exact same name to compile with!) and start building.&lt;br /&gt;The &lt;code&gt;&lt;b&gt;configure&lt;/b&gt;&lt;/code&gt; command has many options you can specify.   I have listed some fairly common ones; if you'd like to see others, do:&lt;br /&gt;&lt;div class="command"&gt;./configure --help | less&lt;br /&gt;&lt;/div&gt;to see them all.  Read the &lt;a href="http://www.mysql.com/documentation/index.html"&gt;documentation on the MySQL website&lt;/a&gt; for a more detailed explanation of each option.&lt;br /&gt;&lt;div class="command"&gt;cd /usr/local/src/mysql-4.1.22 &lt;br /&gt;&lt;br /&gt;chown -R root.root *&lt;br /&gt;&lt;br /&gt;make clean&lt;br /&gt;&lt;br /&gt;./configure \&lt;br /&gt;--prefix=/usr/local/mysql \&lt;br /&gt;--localstatedir=/usr/local/mysql/data \&lt;br /&gt;--disable-maintainer-mode \&lt;br /&gt;--with-mysqld-user=mysql \&lt;br /&gt;--with-unix-socket-path=/tmp/mysql.sock \&lt;br /&gt;--without-comment \&lt;br /&gt;--without-debug \&lt;br /&gt;--without-bench &lt;br /&gt;&lt;/div&gt;&lt;div class="info"&gt;18-Jul-2005: If you are installing MySQL 4.0.x on Fedora Core 4, there is a problem with LinuxThreads that prevents MySQL from compiling properly. Installing on Fedora Core 3 works fine though. Thanks to Kevin Spencer for bringing this to my attention. There is a workaround listed at  &lt;a href="http://bugs.mysql.com/bug.php?id=9497"&gt;http://bugs.mysql.com/bug.php?id=9497&lt;/a&gt;. Thanks to Collin Campbell for that link. Another solution can be found at &lt;a href="http://bugs.mysql.com/bug.php?id=2173"&gt;http://bugs.mysql.com/bug.php?id=2173&lt;/a&gt;. Thanks to Kaloyan Raev for that one.&lt;br /&gt;&lt;/div&gt;Now comes the long part, where the source code is actually compiled and then installed. Plan to get some coffee or take a break while this step runs. It could be 10-15 minutes or more, depending on your system's free memory, load average, etc.&lt;br /&gt;&lt;div class="command"&gt;make &amp;amp;&amp;amp; make install &lt;br /&gt;&lt;/div&gt;&lt;div class="title"&gt;Configure MySQL&lt;br /&gt;&lt;/div&gt;MySQL is "installed" but we have a few more steps until it's actually "done" and ready to start.  First run the script which actually sets up MySQL's  internal database (named, oddly enough, &lt;code&gt;mysql&lt;/code&gt;).&lt;br /&gt;&lt;div class="command"&gt;./scripts/mysql_install_db &lt;br /&gt;&lt;/div&gt;Then we want to set the proper ownership for the MySQL directories and data files, so that only MySQL (and &lt;code&gt;root&lt;/code&gt;) can do anything with them.&lt;br /&gt;&lt;div class="command"&gt;chown -R root:mysql  /usr/local/mysql&lt;br /&gt;chown -R mysql:mysql /usr/local/mysql/data &lt;br /&gt;&lt;/div&gt;Copy the default configuration file for the expected size of the database (small, medium, large, huge)&lt;br /&gt;&lt;div class="command"&gt;cp support-files/my-medium.cnf /etc/my.cnf&lt;br /&gt;chown root:sys /etc/my.cnf&lt;br /&gt;chmod 644 /etc/my.cnf &lt;br /&gt;&lt;/div&gt;&lt;div class="info"&gt;If you get an error message about the &lt;code&gt;data&lt;/code&gt; directory not existing, etc., something went wrong in the &lt;code&gt;mysql_install_db&lt;/code&gt; step above.  Go back and review that; make sure you didn't get some sort of error message when you ran it, etc.&lt;br /&gt;&lt;/div&gt;Now we have to tell the system where to find some of the dynamic libraries that MySQL will need to run.  We use dynamic libraries instead of static to keep the memory usage of the MySQL program itself to a minimum.&lt;br /&gt;&lt;div class="command"&gt;echo "/usr/local/mysql/lib/mysql" &amp;gt;&amp;gt; /etc/ld.so.conf&lt;br /&gt;ldconfig &lt;br /&gt;&lt;/div&gt;Now create a startup script, which enables MySQL auto-start each  time your server is restarted.&lt;br /&gt;&lt;div class="command"&gt;cp ./support-files/mysql.server /etc/rc.d/init.d/mysql&lt;br /&gt;chmod +x /etc/rc.d/init.d/mysql&lt;br /&gt;/sbin/chkconfig --level 3 mysql on &lt;br /&gt;&lt;/div&gt;Then set up symlinks for all the MySQL binaries, so they can be run  from anyplace without having to include/specify long paths, etc.&lt;br /&gt;&lt;div class="command"&gt;cd /usr/local/mysql/bin&lt;br /&gt;for file in *; do ln -s /usr/local/mysql/bin/$file /usr/bin/$file; done &lt;br /&gt;&lt;/div&gt;&lt;div class="title"&gt;MySQL Security Issues&lt;br /&gt;&lt;/div&gt;First, we will assume that only applications on the same server will be allowed to access the database (i.e., not a program running on a physically separate server).  So we'll tell MySQL not to even  listen on port 3306 for TCP connections like it does by default.&lt;br /&gt;Edit &lt;code&gt;/etc/my.cnf&lt;/code&gt; and uncomment the &lt;br /&gt;&lt;div class="info"&gt;skip-networking&lt;br /&gt;&lt;/div&gt;line (delete the leading &lt;code&gt;#&lt;/code&gt;).&lt;br /&gt;For more security info, check this &lt;a href="http://www.securityfocus.com/infocus/1726"&gt;great tutorial&lt;/a&gt;  over at &lt;a href="http://www.securityfocus.com/"&gt;SecurityFocus&lt;/a&gt;.&lt;br /&gt;&lt;div class="title"&gt;Start MySQL&lt;br /&gt;&lt;/div&gt;First, test the linked copy of the startup script in the normal server runlevel start directory, to make sure the symlink was properly set up:&lt;br /&gt;&lt;div class="command"&gt;cd ~&lt;br /&gt;/etc/rc.d/rc3.d/S90mysql start &lt;br /&gt;&lt;/div&gt;If you ever want to manually start or stop the MySQL server, use these commands:&lt;br /&gt;&lt;div class="command"&gt;/etc/rc.d/init.d/mysql start&lt;br /&gt;/etc/rc.d/init.d/mysql stop &lt;br /&gt;&lt;/div&gt;Let's "test" the install to see what version of MySQL we're running now:&lt;br /&gt;&lt;div class="command"&gt;mysqladmin version&lt;br /&gt;&lt;/div&gt;It should answer back with the version we've just installed...&lt;br /&gt;Now we'll set a password for the MySQL &lt;code&gt;root&lt;/code&gt; user (note that the MySQL &lt;code&gt;root&lt;/code&gt; user is &lt;b&gt;not&lt;/b&gt; the same as the system &lt;code&gt;root&lt;/code&gt; user, and &lt;b&gt;definitely&lt;/b&gt; should not have the same password as the system &lt;code&gt;root&lt;/code&gt; user!).&lt;br /&gt;&lt;div class="command"&gt;mysqladmin -u root password &lt;i&gt;new-password&lt;/i&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="info"&gt;(obviously, insert your own password in the above command instead of the "new-password" string!)&lt;br /&gt;&lt;/div&gt;You're done!  MySQL is now installed and running on your server.  It is highly recommended that you read about MySQL security and lock down your server as much as possible.  The MySQL site has info at &lt;a href="http://www.mysql.com/doc/en/Privilege_system.html"&gt;http://www.mysql.com/doc/en/Privilege_system.html&lt;/a&gt;.&lt;br /&gt;&lt;div class="title"&gt;Test MySQL&lt;br /&gt;&lt;/div&gt;To run a quick test, use the command line program &lt;code&gt;mysql&lt;/code&gt;:&lt;br /&gt;&lt;div class="command"&gt;mysql -u root -p&lt;br /&gt;&lt;/div&gt;and enter your new &lt;code&gt;root&lt;/code&gt; user password when prompted.  You will then see the MySQL prompt:&lt;br /&gt;&lt;div class="info"&gt;mysql&amp;gt;&lt;br /&gt;&lt;/div&gt;First, while we're in here, we'll take care of another security issue and delete the sample database &lt;code&gt;test&lt;/code&gt; and all default accounts except for the MySQL root user. Enter each of these lines at the &lt;code&gt;mysql&amp;gt;&lt;/code&gt; prompt:&lt;br /&gt;&lt;div class="command"&gt;drop database test;&lt;br /&gt;use mysql;&lt;br /&gt;delete from db;&lt;br /&gt;delete from user where not (host="localhost" and user="root");&lt;br /&gt;flush privileges; &lt;br /&gt;&lt;/div&gt;As another security measure, I like to change the MySQL administrator account  name from &lt;code&gt;root&lt;/code&gt; to something harder to guess.  This will make it that much harder for someone who gains shell access to your server to take control of MySQL.&lt;br /&gt;&lt;div class="boldaccent"&gt;MAKE SURE YOU REMEMBER THIS NEW NAME, AND USE IT WHEREVER&lt;br /&gt;YOU SEE "root" IN OTHER DIRECTIONS, WEBSITES, ETC.&lt;br /&gt;&lt;br /&gt;ONCE YOU DO THIS STEP, THE USERNAME "root" WILL CEASE TO&lt;br /&gt;EXIST IN YOUR MYSQL CONFIGURATION!&lt;br /&gt;&lt;/div&gt;&lt;div class="command"&gt;update user set user="sqladmin" where user="root";&lt;br /&gt;flush privileges; &lt;br /&gt;&lt;/div&gt;Now, on with the "standard" testing... First, create a new database:&lt;br /&gt;&lt;div class="command"&gt;create database foo;&lt;br /&gt;&lt;/div&gt;You should see the result:&lt;br /&gt;&lt;div class="info"&gt;Query OK, 1 row affected (0.04 sec)&lt;br /&gt;&lt;br /&gt;mysql&amp;gt; &lt;br /&gt;&lt;/div&gt;Delete the database:&lt;br /&gt;&lt;div class="command"&gt;drop database foo;&lt;br /&gt;&lt;/div&gt;You should see the result:&lt;br /&gt;&lt;div class="info"&gt;Query OK, 0 rows affected (0.06 sec)&lt;br /&gt;&lt;br /&gt;mysql&amp;gt; &lt;br /&gt;&lt;/div&gt;To exit from &lt;code&gt;mysql&lt;/code&gt; enter &lt;code&gt;\q&lt;/code&gt;:&lt;br /&gt;&lt;div class="command"&gt;\q&lt;br /&gt;&lt;/div&gt;&lt;div class="title"&gt;Build and Install Apache (with DSO support)&lt;br /&gt;&lt;/div&gt;The advantage to building Apache with support for dynamically loaded modules is that in the future, you can add functionality to your webserver by just compiling and installing modules, and restarting the webserver. If the features were compiled into Apache, you would need to rebuild Apache from scratch every time you wanted to add or update a module (like PHP).  Your Apache binary is also smaller, which means more efficient memory usage.&lt;br /&gt;The downside to dynamic modules is a slight performance hit compared to having  the modules compiled in.&lt;br /&gt;&lt;div class="command"&gt;cd /usr/local/src/apache_1.3.37&lt;br /&gt;&lt;br /&gt;make clean&lt;br /&gt;&lt;br /&gt;./configure \&lt;br /&gt;--prefix=/usr/local/apache \&lt;br /&gt;--enable-shared=max \&lt;br /&gt;--enable-module=rewrite \&lt;br /&gt;--enable-module=so&lt;br /&gt;&lt;br /&gt;make &amp;amp;&amp;amp; make install &lt;br /&gt;&lt;/div&gt;&lt;div class="title"&gt;Build and Install PHP&lt;br /&gt;&lt;/div&gt;This section has only been tested with PHP v4.x. If you are trying to build PHP 5.x, I do not have experience with this yet, and do not provide free support for you to get it working. Please note that there are &lt;b&gt;many&lt;/b&gt; options which can be selected when compiling PHP. Some will have library dependencies, meaning certain software may need to be already installed on your server before you start building PHP. You can use the command&lt;br /&gt;&lt;div class="command"&gt;./configure --help | less&lt;br /&gt;&lt;/div&gt;once you change into the PHP source directory.  This will show you a list of all possible configuration switches.  For more information on what these switches are, please check the &lt;a href="http://www.php.net/manual/en/configure.php"&gt;PHP website documentation&lt;/a&gt;.&lt;br /&gt;&lt;div class="command"&gt;cd /usr/local/src/php-4.4.6&lt;br /&gt;&lt;br /&gt;./configure \&lt;br /&gt;--with-apxs=/usr/local/apache/bin/apxs \&lt;br /&gt;--disable-debug \&lt;br /&gt;--enable-ftp \&lt;br /&gt;--enable-inline-optimization \&lt;br /&gt;--enable-magic-quotes \&lt;br /&gt;--enable-mbstring \&lt;br /&gt;--enable-mm=shared \&lt;br /&gt;--enable-safe-mode \&lt;br /&gt;--enable-track-vars \&lt;br /&gt;--enable-trans-sid \&lt;br /&gt;--enable-wddx=shared \&lt;br /&gt;--enable-xml \&lt;br /&gt;--with-dom \&lt;br /&gt;--with-gd \&lt;br /&gt;--with-gettext \&lt;br /&gt;--with-mysql=/usr/local/mysql \&lt;br /&gt;--with-regex=system \&lt;br /&gt;--with-xml \&lt;br /&gt;--with-zlib-dir=/usr/lib&lt;br /&gt;&lt;br /&gt;make &amp;amp;&amp;amp; make install&lt;br /&gt;&lt;br /&gt;cp php.ini-dist /usr/local/lib/php.ini &lt;br /&gt;&lt;/div&gt;I like to keep my config files all together in &lt;code&gt;/etc&lt;/code&gt;. I set up a symbolic link like this:&lt;br /&gt;&lt;div class="command"&gt;ln -s /usr/local/lib/php.ini /etc/php.ini&lt;br /&gt;&lt;/div&gt;Then I can just open &lt;code&gt;/etc/php.ini&lt;/code&gt; in my editor to make changes.&lt;br /&gt;Recommended reading on securing your PHP installation is &lt;a href="http://www.securityfocus.com/infocus/1706"&gt;this article&lt;/a&gt; at &lt;a href="http://www.securityfocus.com/"&gt;SecurityFocus.com&lt;/a&gt;.&lt;br /&gt;&lt;div class="title"&gt;Edit the Apache Configuration File (&lt;code&gt;httpd.conf&lt;/code&gt;)&lt;br /&gt;&lt;/div&gt;I like to keep all my configuration files together in &lt;code&gt;/etc&lt;/code&gt;, so I set up a symbolic link from the actual location to &lt;code&gt;/etc&lt;/code&gt;:&lt;br /&gt;&lt;div class="command"&gt;ln -s /usr/local/apache/conf/httpd.conf /etc/httpd.conf&lt;br /&gt;&lt;/div&gt;Now open &lt;code&gt;/etc/httpd.conf&lt;/code&gt; in your favorite text editor, and set all the basic Apache options in accordance with &lt;a href="http://httpd.apache.org/docs/install.html#trad_install"&gt;the official Apache instructions&lt;/a&gt; (beyond the scope of this HOWTO).&lt;br /&gt;Also recommended is the article on &lt;a href="http://www.securityfocus.com/infocus/1694"&gt;securing Apache&lt;/a&gt;.&lt;br /&gt;To ensure your PHP files are properly interpreted, and not just downloaded as text files, remove the &lt;code&gt;#&lt;/code&gt; at the beginning of the lines which read:&lt;br /&gt;&lt;div class="info"&gt;#AddType application/x-httpd-php .php&lt;br /&gt;#AddType application/x-httpd-php-source .phps &lt;br /&gt;&lt;/div&gt;If the AddType lines above don't exist, manually enter them (without the leading &lt;code&gt;#&lt;/code&gt; of course) after the line&lt;br /&gt;&lt;div class="info"&gt;AddType application/x-tar .tgz &lt;br /&gt;&lt;/div&gt;or anyplace within the &lt;code&gt;&lt;ifmodule mod_mime.c=""&gt;&lt;/ifmodule&gt;&lt;/code&gt; section of &lt;code&gt;httpd.conf&lt;/code&gt;.&lt;br /&gt;If you wish to use other/additional extensions/filetypes for your PHP scripts instead of just &lt;code&gt;.php&lt;/code&gt;, add them to the &lt;code&gt;AddType&lt;/code&gt; directive:&lt;br /&gt;&lt;div class="info"&gt;AddType application/x-httpd-php .php &lt;b&gt;.foo&lt;/b&gt;&lt;br /&gt;AddType application/x-httpd-php-source .phps &lt;b&gt;.phtmls&lt;/b&gt; &lt;br /&gt;&lt;/div&gt;An example: if you wanted every single HTML page to be parsed and processed like a PHP script, just add &lt;code&gt;.htm&lt;/code&gt; and &lt;code&gt;.html&lt;/code&gt;:&lt;br /&gt;&lt;div class="info"&gt;AddType application/x-httpd-php .php &lt;b&gt;.htm .html&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;There will be a bit of a performance loss if every single HTML page is being checked for PHP code even if it doesn't contain any. But if you want to use PHP but be "stealthy" about it, you can use this trick.&lt;br /&gt;Add &lt;code&gt;index.php&lt;/code&gt; to the list of valid Directory Index files so that your "default page" in a directory can be named &lt;code&gt;index.php&lt;/code&gt;.&lt;br /&gt;&lt;div class="info"&gt;&lt;ifmodule mod_dir.c=""&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DirectoryIndex &lt;b&gt;index.php&lt;/b&gt; index.htm index.html&lt;br /&gt;&lt;/ifmodule&gt; &lt;br /&gt;&lt;/div&gt;You can add anything else you want here too. If you want &lt;code&gt;foobar.baz&lt;/code&gt; to be a valid directory index page, just add the &lt;code&gt;.baz&lt;/code&gt; filetype to the &lt;code&gt;AddType&lt;/code&gt; line, and add &lt;code&gt;foobar.baz&lt;/code&gt; to the &lt;code&gt;DirectoryIndex&lt;/code&gt; line.&lt;br /&gt;&lt;div class="title"&gt;Start Apache&lt;br /&gt;&lt;/div&gt;We want to set Apache up with a normal start/stop script in &lt;code&gt;/etc/rc.d/init.d&lt;/code&gt; so it can be auto-started and controlled like other system daemons.  Set up a symbolic link for the &lt;code&gt;apachectl&lt;/code&gt; utility (installed automatically as part of Apache):&lt;br /&gt;&lt;div class="command"&gt;ln -s /usr/local/apache/bin/apachectl /etc/rc.d/init.d/apache&lt;br /&gt;&lt;/div&gt;Then set up auto-start for runlevel 3 (where the server will go by default):&lt;br /&gt;&lt;div class="command"&gt;ln -s /etc/rc.d/init.d/apache /etc/rc.d/rc3.d/S90apache&lt;br /&gt;&lt;/div&gt;Then start the daemon:&lt;br /&gt;&lt;div class="command"&gt;/etc/rc.d/init.d/apache start&lt;br /&gt;&lt;/div&gt;You can check that it's running properly by doing:&lt;br /&gt;&lt;div class="command"&gt;ps -ef&lt;br /&gt;&lt;/div&gt;and look for the &lt;code&gt;httpd&lt;/code&gt; processes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8354993350047125632-1841684479187815408?l=faysalmicrotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://faysalmicrotech.blogspot.com/feeds/1841684479187815408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://faysalmicrotech.blogspot.com/2009/11/building-lamp-server.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8354993350047125632/posts/default/1841684479187815408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8354993350047125632/posts/default/1841684479187815408'/><link rel='alternate' type='text/html' href='http://faysalmicrotech.blogspot.com/2009/11/building-lamp-server.html' title='Building a LAMP Server'/><author><name>faysal76</name><uri>http://www.blogger.com/profile/02525014504583845189</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8354993350047125632.post-3568296903936316667</id><published>2009-10-22T03:55:00.000-07:00</published><updated>2009-10-22T03:55:05.690-07:00</updated><title type='text'>VSFTP for CentOS</title><content type='html'>&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The File Transfer Protocol (FTP) is used as one of the most common means of copying files between servers over the Internet. Most web based download sites use the built in FTP capabilities of web browsers and therefore most server oriented operating systems usually include an FTP server application as part of the software suite. Linux is no exception.&lt;br /&gt;&lt;br /&gt;This chapter will show you how to convert your Linux box into an FTP server using the default Very Secure FTP Daemon (VSFTPD) package included in Fedora.&lt;br /&gt;FTP Overview&lt;br /&gt;&lt;br /&gt;FTP relies on a pair of TCP ports to get the job done. It operates in two connection channels as I'll explain:&lt;br /&gt;&lt;br /&gt;FTP Control Channel, TCP Port 21: All commands you send and the ftp server's responses to those commands will go over the control connection, but any data sent back (such as "ls" directory lists or actual file data in either direction) will go over the data connection.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;FTP Data Channel, TCP Port 20: This port is used for all subsequent data transfers between the client and server.&lt;br /&gt;&lt;br /&gt;In addition to these channels, there are several varieties of FTP.&lt;br /&gt;Types of FTP&lt;br /&gt;&lt;br /&gt;From a networking perspective, the two main types of FTP are active and passive. In active FTP, the FTP server initiates a data transfer connection back to the client. For passive FTP, the connection is initiated from the FTP client. These are illustrated in Figure 15-1.&lt;br /&gt;Figure 15-1 Active And Passive FTP Illustrated&lt;br /&gt;&lt;br /&gt;Image:Ftp.gif&lt;br /&gt;&lt;br /&gt;From a user management perspective there are also two types of FTP: regular FTP in which files are transferred using the username and password of a regular user FTP server, and anonymous FTP in which general access is provided to the FTP server using a well known universal login method.&lt;br /&gt;&lt;br /&gt;Take a closer look at each type.&lt;br /&gt;Active FTP&lt;br /&gt;&lt;br /&gt;The sequence of events for active FTP is:&lt;br /&gt;&lt;br /&gt;1. Your client connects to the FTP server by establishing an FTP control connection to port 21 of the server. Your commands such as 'ls' and 'get' are sent over this connection.&lt;br /&gt;2. Whenever the client requests data over the control connection, the server initiates data transfer connections back to the client. The source port of these data transfer connections is always port 20 on the server, and the destination port is a high port (greater than 1024) on the client.&lt;br /&gt;3. Thus the ls listing that you asked for comes back over the port 20 to high port connection, not the port 21 control connection. &lt;br /&gt;&lt;br /&gt;FTP active mode therefore transfers data in a counter intuitive way to the TCP standard, as it selects port 20 as it's source port (not a random high port that's greater than 1024) and connects back to the client on a random high port that has been pre-negotiated on the port 21 control connection.&lt;br /&gt;&lt;br /&gt;Active FTP may fail in cases where the client is protected from the Internet via many to one NAT (masquerading). This is because the firewall will not know which of the many servers behind it should receive the return connection.&lt;br /&gt;Passive FTP&lt;br /&gt;&lt;br /&gt;Passive FTP works differently:&lt;br /&gt;&lt;br /&gt;1. Your client connects to the FTP server by establishing an FTP control connection to port 21 of the server. Your commands such as ls and get are sent over that connection.&lt;br /&gt;2. Whenever the client requests data over the control connection, the client initiates the data transfer connections to the server. The source port of these data transfer connections is always a high port on the client with a destination port of a high port on the server. &lt;br /&gt;&lt;br /&gt;Passive FTP should be viewed as the server never making an active attempt to connect to the client for FTP data transfers. Because client always initiates the required connections, passive FTP works better for clients protected by a firewall.&lt;br /&gt;&lt;br /&gt;As Windows defaults to active FTP, and Linux defaults to passive, you'll probably have to accommodate both forms when deciding upon a security policy for your FTP server.&lt;br /&gt;Regular FTP&lt;br /&gt;&lt;br /&gt;By default, the VSFTPD package allows regular Linux users to copy files to and from their home directories with an FTP client using their Linux usernames and passwords as their login credentials.&lt;br /&gt;&lt;br /&gt;VSFTPD also has the option of allowing this type of access to only a group of Linux users, enabling you to restrict the addition of new files to your system to authorized personnel.&lt;br /&gt;&lt;br /&gt;The disadvantage of regular FTP is that it isn't suitable for general download distribution of software as everyone either has to get a unique Linux user account or has to use a shared username and password. Anonymous FTP allows you to avoid this difficulty.&lt;br /&gt;Anonymous FTP&lt;br /&gt;&lt;br /&gt;Anonymous FTP is the choice of Web sites that need to exchange files with numerous unknown remote users. Common uses include downloading software updates and MP3s and uploading diagnostic information for a technical support engineers' attention. Unlike regular FTP where you login with a preconfigured Linux username and password, anonymous FTP requires only a username of anonymous and your email address for the password. Once logged in to a VSFTPD server, you automatically have access to only the default anonymous FTP directory (/var/ftp in the case of VSFTPD) and all its subdirectories.&lt;br /&gt;&lt;br /&gt;As seen in Chapter 6, "Installing Linux Software", using anonymous FTP as a remote user is fairly straight forward. VSFTPD can be configured to support user-based and or anonymous FTP in its configuration file which you'll see later.&lt;br /&gt;Problems With FTP And Firewalls&lt;br /&gt;&lt;br /&gt;FTP frequently fails when the data has to pass through a firewall, because firewalls are designed to limit data flows to predictable TCP ports and FTP uses a wide range of unpredictable TCP ports. You have a choice of methods to overcome this.&lt;br /&gt;&lt;br /&gt;Note: The Appendix II, "Codes, Scripts, and Configurations", contains examples of how to configure the VSFTPD Linux firewall to function with both active and passive FTP.&lt;br /&gt;Client Protected By A Firewall Problem&lt;br /&gt;&lt;br /&gt;Typically firewalls don't allow any incoming connections at all, which frequently blocks active FTP from functioning. With this type of FTP failure, the active FTP connection appears to work when the client initiates an outbound connection to the server on port 21. The connection then appears to hang, however, as soon as you use the ls, dir, or get commands. The reason is that the firewall is blocking the return connection from the server to the client (from port 20 on the server to a high port on the client). If a firewall allows all outbound connections to the Internet, then passive FTP clients behind a firewall will usually work correctly as the clients initiate all the FTP connections.&lt;br /&gt;&lt;br /&gt;* Solution &lt;br /&gt;&lt;br /&gt;Table 15-1 shows the general rules you'll need to allow FTP clients through a firewall:&lt;br /&gt;Table 15-1 Client Protected by Firewall - Required Rules for FTP&lt;br /&gt;Method Source Address Source Port Destination Address Destination Port Connection Type&lt;br /&gt;Allow outgoing control connections to server&lt;br /&gt;Control Channel FTP client / network High1 FTP server2 21 New&lt;br /&gt;FTP server2 21 FTP client/ network High Established3&lt;br /&gt;Allow the client to establish data channels to remote server&lt;br /&gt;Active FTP FTP server 2 20 FTP client / network High New&lt;br /&gt;FTP client / network High FTP server 2 20 Established3&lt;br /&gt;Passive FTP FTP client / network High FTP server 2 High New&lt;br /&gt;FTP server 2 High FTP client / network High Established 3&lt;br /&gt;&lt;br /&gt;1 Greater than 1024. &lt;br /&gt;&lt;br /&gt;2 In some cases, you may want to allow all Internet users to have access, not just a specific client server or network. &lt;br /&gt;&lt;br /&gt;3 Many home-based firewall/routers automatically allow traffic for already established connections. This rule may not be necessary in all cases. &lt;br /&gt;&lt;br /&gt;Server Protected By A Firewall Problem&lt;br /&gt;&lt;br /&gt;Typically firewalls don't let any connections come in at all. When a an incorrectly configured firewall protects an FTP server, the FTP connection from the client doesn't appear to work at all for both active and passive FTP.&lt;br /&gt;&lt;br /&gt;* Solution &lt;br /&gt;&lt;br /&gt;Table 15-2 Rules needed to allow FTP servers through a firewall.&lt;br /&gt;Method Source Address Source Port Destination Address Destination Port Connection Type&lt;br /&gt;Allow incoming control connections to server&lt;br /&gt;Control Channel FTP client / network 2 High1 FTP server 21 New&lt;br /&gt;FTP server 21 FTP client / network 2 High Established3&lt;br /&gt;Allow server to establish data channel to remote client&lt;br /&gt;Active FTP FTP server 20 FTP client / network 2 High New&lt;br /&gt;FTP client / network 2 High FTP server 20 Established3&lt;br /&gt;Passive FTP FTP client / network 2 High FTP server High New&lt;br /&gt;FTP server High FTP client / network 2 High Established 3&lt;br /&gt;&lt;br /&gt;1 Greater than 1024.&lt;br /&gt;2 In some cases, you may want to allow all Internet users to have access, not just a specific client server or network.&lt;br /&gt;3Many home-based firewall/routers automatically allow traffic for already established connections. This rule may not be necessary in all cases. &lt;br /&gt;&lt;br /&gt;How To Download And Install VSFTPD&lt;br /&gt;&lt;br /&gt;Most Linux software products are available in a precompiled package format. Downloading and installing packages isn't hard. If you need a refresher, Chapter 6, "Installing Linux Software", covers how to do this in detail. It is best to use the latest version of VSFTPD.&lt;br /&gt;&lt;br /&gt;When searching for the file, remember that the VSFTPD packages' filename usually starts with the word vsftpd followed by a version number, as in vsftpd-1.2.1-5.i386.rpm for Redhat/Fedora or vsftpd_2.0.4-0ubuntu4_i386.deb for Ubuntu.&lt;br /&gt;How To Get VSFTPD Started&lt;br /&gt;&lt;br /&gt;With Fedora, Redhat, Ubunbtu and Debian You can start, stop, or restart VSFTPD after booting by using these commands:&lt;br /&gt;&lt;br /&gt;[root@bigboy tmp]# /etc/init.d/vsftpd start&lt;br /&gt;[root@bigboy tmp]# /etc/init.d/vsftpd stop&lt;br /&gt;[root@bigboy tmp]# /etc/init.d/vsftpd restart&lt;br /&gt;&lt;br /&gt;With Redhat / Fedora you can configure VSFTPD to start at boot you can use the chkconfig command.&lt;br /&gt;&lt;br /&gt;[root@bigboy tmp]# chkconfig vsftpd on&lt;br /&gt;&lt;br /&gt;With Ubuntu / Debian the sysv-rc-conf command can be used like this:&lt;br /&gt;&lt;br /&gt;root@u-bigboy:/tmp# sysv-rc-conf on&lt;br /&gt;&lt;br /&gt;Note: In RedHat Linux version 8.0 and earlier, VSFTPD operation is controlled by the xinetd process, which is covered in Chapter 16, "Telnet, TFTP, and xinetd". You can find a full description of how to configure these versions of Linux for VSFTPD in Appendix III, "Fedora Version Differences."&lt;br /&gt;&lt;br /&gt;Testing the Status of VSFTPD&lt;br /&gt;&lt;br /&gt;You can always test whether the VSFTPD process is running by using the netstat -a command which lists all the TCP and UDP ports on which the server is listening for traffic. This example shows the expected output.&lt;br /&gt;&lt;br /&gt;[root@bigboy root]# netstat -a | grep ftp&lt;br /&gt;tcp 0 0 *:ftp *:* LISTEN&lt;br /&gt;[root@bigboy root]#&lt;br /&gt;&lt;br /&gt;If VSFTPD wasn't running, there would be no output at all.&lt;br /&gt;The vsftpd.conf File&lt;br /&gt;&lt;br /&gt;VSFTPD only reads the contents of its vsftpd.conf configuration file only when it starts, so you'll have to restart VSFTPD each time you edit the file in order for the changes to take effect. The file may be located in either the /etc or the /etc/vsftpd directories depending on your Linux distribution.&lt;br /&gt;&lt;br /&gt;This file uses a number of default settings you need to know about.&lt;br /&gt;&lt;br /&gt;* VSFTPD runs as an anonymous FTP server. Unless you want any remote user to log into to your default FTP directory using a username of anonymous and a password that's the same as their email address, I would suggest turning this off. The configuration file's anonymous_enable directive can be set to no to disable this feature. You'll also need to simultaneously enable local users to be able to log in by removing the comment symbol (#) before the local_enable instruction.&lt;br /&gt;* If you enable anonymous FTP with VSFTPD, remember to define the root directory that visitors will visit. This is done with the anon_root directive. &lt;br /&gt;&lt;br /&gt;anon_root=/data/directory&lt;br /&gt;&lt;br /&gt;* VSFTPD allows only anonymous FTP downloads to remote users, not uploads from them. This can be changed by modifying the anon_upload_enable directive shown later.&lt;br /&gt;* VSFTPD doesn't allow anonymous users to create directories on your FTP server. You can change this by modifying the anon_mkdir_write_enable directive.&lt;br /&gt;* VSFTPD logs FTP access to the /var/log/vsftpd.log log file. You can change this by modifying the xferlog_file directive.&lt;br /&gt;* By default VSFTPD expects files for anonymous FTP to be placed in the /var/ftp directory. You can change this by modifying the anon_root directive. There is always the risk with anonymous FTP that users will discover a way to write files to your anonymous FTP directory. You run the risk of filling up your /var partition if you use the default setting. It is best to make the anonymous FTP directory reside in its own dedicated partition. &lt;br /&gt;&lt;br /&gt;The configuration file is fairly straight forward as you can see in the snippet below where we enable anonymous FTP and individual accounts simultaneously.&lt;br /&gt;&lt;br /&gt;# Allow anonymous FTP?&lt;br /&gt;anonymous_enable=YES&lt;br /&gt;...&lt;br /&gt;# The directory which vsftpd will try to change&lt;br /&gt;# into after an anonymous login. (Default = /var/ftp)&lt;br /&gt;anon_root=/data/directory&lt;br /&gt;...&lt;br /&gt;# Uncomment this to allow local users to log in.&lt;br /&gt;local_enable=YES&lt;br /&gt;...&lt;br /&gt;# Uncomment this to enable any form of FTP write command.&lt;br /&gt;# (Needed even if you want local users to be able to upload files)&lt;br /&gt;write_enable=YES&lt;br /&gt;...&lt;br /&gt;# Uncomment to allow the anonymous FTP user to upload files. This only&lt;br /&gt;# has an effect if global write enable is activated. Also, you will&lt;br /&gt;# obviously need to create a directory writable by the FTP user.&lt;br /&gt;#anon_upload_enable=YES&lt;br /&gt;...&lt;br /&gt;# Uncomment this if you want the anonymous FTP user to be able to create&lt;br /&gt;# new directories.&lt;br /&gt;#anon_mkdir_write_enable=YES&lt;br /&gt;...&lt;br /&gt;# Activate logging of uploads/downloads.&lt;br /&gt;xferlog_enable=YES&lt;br /&gt;...&lt;br /&gt;# You may override where the log file goes if you like.&lt;br /&gt;# The default is shown below.&lt;br /&gt;xferlog_file=/var/log/vsftpd.log&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;To activate or deactivate a feature, remove or add the # at the beginning of the appropriate line.&lt;br /&gt;Other vsftpd.conf Options&lt;br /&gt;&lt;br /&gt;There are many other options you can add to this file:&lt;br /&gt;&lt;br /&gt;* Limiting the maximum number of client connections (max_clients)&lt;br /&gt;* Limiting the number of connections by source IP address (max_per_ip)&lt;br /&gt;* The maximum rate of data transfer per anonymous login. (anon_max_rate)&lt;br /&gt;* The maximum rate of data transfer per non-anonymous login. (local_max_rate) &lt;br /&gt;&lt;br /&gt;Descriptions on this and more can be found in the vsftpd.conf man pages.&lt;br /&gt;FTP Security Issues&lt;br /&gt;&lt;br /&gt;FTP has a number of security drawbacks, but you can overcome them in some cases. You can restrict an individual Linux user's access to non-anonymous FTP, and you can change the configuration to not display the FTP server's software version information, but unfortunately, though very convenient, FTP logins and data transfers are not encrypted.&lt;br /&gt;The /etc/vsftpd.ftpusers File&lt;br /&gt;&lt;br /&gt;For added security, you may restrict FTP access to certain users by adding them to the list of users in the /etc/vsftpd.ftpusers file. The VSFTPD package creates this file with a number of entries for privileged users that normally shouldn't have FTP access. As FTP doesn't encrypt passwords, thereby increasing the risk of data or passwords being compromised, it is a good idea to let these entries remain and add new entries for additional security.&lt;br /&gt;Anonymous Upload&lt;br /&gt;&lt;br /&gt;If you want remote users to write data to your FTP server, then you should create a write-only directory within /var/ftp/pub. This will allow your users to upload but not access other files uploaded by other users. The commands you need are:&lt;br /&gt;&lt;br /&gt;[root@bigboy tmp]# mkdir /var/ftp/pub/upload&lt;br /&gt;[root@bigboy tmp]# chmod 722 /var/ftp/pub/upload&lt;br /&gt;&lt;br /&gt;FTP Greeting Banner&lt;br /&gt;&lt;br /&gt;Change the default greeting banner in the vsftpd.conf file to make it harder for malicious users to determine the type of system you have. The directive in this file is.&lt;br /&gt;&lt;br /&gt;ftpd_banner= New Banner Here&lt;br /&gt;&lt;br /&gt;Using SCP As Secure Alternative To FTP&lt;br /&gt;&lt;br /&gt;One of the disadvantages of FTP is that it does not encrypt your username and password. This could make your user account vulnerable to an unauthorized attack from a person eavesdropping on the network connection. Secure Copy (SCP) and Secure FTP (SFTP) provide encryption and could be considered as an alternative to FTP for trusted users. SCP does not support anonymous services, however, a feature that FTP does support.&lt;br /&gt;Troubleshooting FTP&lt;br /&gt;&lt;br /&gt;You should always test your FTP installation by attempting to use an FTP client to log in to your FTP server to transfer sample files.&lt;br /&gt;&lt;br /&gt;The most common sources of day-to-day failures are incorrect usernames and passwords.&lt;br /&gt;&lt;br /&gt;Initial setup failures could be caused by firewalls along the path between the client and server blocking some or all types of FTP traffic. Typical symptoms of this are either connection timeouts or the ability to use the ls command to view the contents of a directory without the ability to either upload or download files. Follow the firewall rule guidelines to help overcome this problem. Connection problems could also be the result of typical network issues outlined in Chapter 4, "Simple Network Troubleshooting".&lt;br /&gt;Tutorial&lt;br /&gt;&lt;br /&gt;FTP has many uses, one of which is allowing numerous unknown users to download files. You have to be careful, because you run the risk of accidentally allowing unknown persons to upload files to your server. This sort of unintended activity can quickly fill up your hard drive with illegal software, images, and music for the world to download, which in turn can clog your server's Internet access and drive up your bandwidth charges.&lt;br /&gt;FTP Users with Only Read Access to a Shared Directory&lt;br /&gt;&lt;br /&gt;In this example, anonymous FTP is not desired, but a group of trusted users need to have read only access to a directory for downloading files. Here are the steps:&lt;br /&gt;&lt;br /&gt;1) Disable anonymous FTP. Comment out the anonymous_enable line in the vsftpd.conf file like this:&lt;br /&gt;&lt;br /&gt;# Allow anonymous FTP?&lt;br /&gt;anonymous_enable=NO&lt;br /&gt;&lt;br /&gt;2) Enable individual logins by making sure you have the local_enable line uncommented in the vsftpd.conf file like this:&lt;br /&gt;&lt;br /&gt;# Uncomment this to allow local users to log in.&lt;br /&gt;local_enable=YES&lt;br /&gt;&lt;br /&gt;3) Start VSFTP.&lt;br /&gt;&lt;br /&gt;[root@bigboy tmp]# service vsftpd start&lt;br /&gt;&lt;br /&gt;4) Create a user group and shared directory. In this case, use /home/ftp-users and a user group name of ftp-users for the remote users&lt;br /&gt;&lt;br /&gt;[root@bigboy tmp]# groupadd ftp-users&lt;br /&gt;[root@bigboy tmp]# mkdir /home/ftp-docs&lt;br /&gt;&lt;br /&gt;5) Make the directory accessible to the ftp-users group.&lt;br /&gt;&lt;br /&gt;[root@bigboy tmp]# chmod 750 /home/ftp-docs&lt;br /&gt;[root@bigboy tmp]# chown root:ftp-users /home/ftp-docs&lt;br /&gt;&lt;br /&gt;6) Add users, and make their default directory /home/ftp-docs&lt;br /&gt;&lt;br /&gt;[root@bigboy tmp]# useradd -g ftp-users -d /home/ftp-docs user1&lt;br /&gt;[root@bigboy tmp]# useradd -g ftp-users -d /home/ftp-docs user2&lt;br /&gt;[root@bigboy tmp]# useradd -g ftp-users -d /home/ftp-docs user3&lt;br /&gt;[root@bigboy tmp]# useradd -g ftp-users -d /home/ftp-docs user4&lt;br /&gt;[root@bigboy tmp]# passwd user1&lt;br /&gt;[root@bigboy tmp]# passwd user2&lt;br /&gt;[root@bigboy tmp]# passwd user3&lt;br /&gt;[root@bigboy tmp]# passwd user4&lt;br /&gt;&lt;br /&gt;7) Copy files to be downloaded by your users into the /home/ftp-docs directory&lt;br /&gt;&lt;br /&gt;8) Change the permissions of the files in the /home/ftp-docs directory for read only access by the group&lt;br /&gt;&lt;br /&gt;[root@bigboy tmp]# chown root:ftp-users /home/ftp-docs/*&lt;br /&gt;[root@bigboy tmp]# chmod 740 /home/ftp-docs/*&lt;br /&gt;&lt;br /&gt;Users should now be able to log in via FTP to the server using their new usernames and passwords. If you absolutely don't want any FTP users to be able to write to any directory, then you should set the write_enable line in your vsftpd.conf file to no: &lt;br /&gt;&lt;br /&gt;write_enable = NO&lt;br /&gt;&lt;br /&gt;Remember, you must restart VSFTPD for the configuration file changes to take effect.&lt;br /&gt;Sample Login Session To Test Functionality&lt;br /&gt;&lt;br /&gt;Here is a simple test procedure you can use to make sure everything is working correctly:&lt;br /&gt;&lt;br /&gt;1) Check for the presence of a test file on the ftp client server.&lt;br /&gt;&lt;br /&gt;[root@smallfry tmp]# ll&lt;br /&gt;total 1&lt;br /&gt;-rw-r--r-- 1 root root 0 Jan 4 09:08 testfile&lt;br /&gt;[root@smallfry tmp]#&lt;br /&gt;&lt;br /&gt;2) Connect to bigboy via FTP&lt;br /&gt;&lt;br /&gt;[root@smallfry tmp]# ftp 192.168.1.100&lt;br /&gt;Connected to 192.168.1.100 (192.168.1.100)&lt;br /&gt;220 ready, dude (vsFTPd 1.1.0: beat me, break me)&lt;br /&gt;Name (192.168.1.100:root): user1&lt;br /&gt;331 Please specify the password.&lt;br /&gt;Password:&lt;br /&gt;230 Login successful. Have fun.&lt;br /&gt;Remote system type is UNIX.&lt;br /&gt;Using binary mode to transfer files.&lt;br /&gt;ftp&amp;gt;&lt;br /&gt;&lt;br /&gt;As expected, we can't do an upload transfer of testfile to bigboy. &lt;br /&gt;&lt;br /&gt;ftp&amp;gt; put testfile&lt;br /&gt;local: testfile remote: testfile&lt;br /&gt;227 Entering Passive Mode (192,168,1,100,181,210)&lt;br /&gt;553 Could not create file.&lt;br /&gt;ftp&amp;gt;&lt;br /&gt;&lt;br /&gt;But we can view and download a copy of the VSFTPD RPM located on the FTP server bigboy. &lt;br /&gt;&lt;br /&gt;ftp&amp;gt; ls&lt;br /&gt;227 Entering Passive Mode (192,168,1,100,35,173)&lt;br /&gt;150 Here comes the directory listing.&lt;br /&gt;-rwxr----- 1 0 502 76288 Jan 04 17:06 vsftpd-1.1.0-1.i386.rpm&lt;br /&gt;226 Directory send OK.&lt;br /&gt;ftp&amp;gt; get vsftpd-1.1.0-1.i386.rpm vsftpd-1.1.0-1.i386.rpm.tmp&lt;br /&gt;local: vsftpd-1.1.0-1.i386.rpm.tmp remote: vsftpd-1.1.0-1.i386.rpm&lt;br /&gt;227 Entering Passive Mode (192,168,1,100,44,156)&lt;br /&gt;150 Opening BINARY mode data connection for vsftpd-1.1.0-1.i386.rpm (76288 bytes).&lt;br /&gt;226 File send OK.&lt;br /&gt;76288 bytes received in 0.499 secs (1.5e+02 Kbytes/sec)&lt;br /&gt;ftp&amp;gt; exit&lt;br /&gt;221 Goodbye.&lt;br /&gt;[root@smallfry tmp]#&lt;br /&gt;&lt;br /&gt;As expected, anonymous FTP fails. &lt;br /&gt;&lt;br /&gt;[root@smallfry tmp]# ftp 192.168.1.100&lt;br /&gt;Connected to 192.168.1.100 (192.168.1.100)&lt;br /&gt;220 ready, dude (vsFTPd 1.1.0: beat me, break me)&lt;br /&gt;Name (192.168.1.100:root): anonymous&lt;br /&gt;331 Please specify the password.&lt;br /&gt;Password:&lt;br /&gt;530 Login incorrect.&lt;br /&gt;Login failed.&lt;br /&gt;ftp&amp;gt; quit&lt;br /&gt;221 Goodbye.&lt;br /&gt;[root@smallfry tmp]#&lt;br /&gt;&lt;br /&gt;Now that testing is complete, you can make this a regular part of your FTP server's operation.&lt;br /&gt;Conclusion&lt;br /&gt;&lt;br /&gt;FTP is a very useful software application that can have enormous benefit to a Web site or to collaborative computing in which files need to be shared between business partners. Although insecure, it is universally accessible, because FTP clients are a part of all operating systems and Web browsers. If data encryption security is of great importance to you, then you should probably consider SCP as a possible alternative. You can find more information on it in Chapter 17, "Secure Remote Logins and File Copying".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8354993350047125632-3568296903936316667?l=faysalmicrotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://faysalmicrotech.blogspot.com/feeds/3568296903936316667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://faysalmicrotech.blogspot.com/2009/10/vsftp-for-centos.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8354993350047125632/posts/default/3568296903936316667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8354993350047125632/posts/default/3568296903936316667'/><link rel='alternate' type='text/html' href='http://faysalmicrotech.blogspot.com/2009/10/vsftp-for-centos.html' title='VSFTP for CentOS'/><author><name>faysal76</name><uri>http://www.blogger.com/profile/02525014504583845189</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8354993350047125632.post-9196105050251599245</id><published>2009-10-12T04:23:00.000-07:00</published><updated>2009-10-22T04:22:21.952-07:00</updated><title type='text'>Set up a strong Linux firewall with iptables</title><content type='html'>&lt;span style="font-family: 'Helvetica Neue',HelveticaNeue,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 16px;"&gt;In most organizations, network security has become interwoven with standard network and system administration. Threats in the form of malicious hackers, self-propagating worms, denial of service attacks, and other nefarious security problems loom large for administrators. Of course, one of the building blocks of network security is a good firewall. Although many companies pay top dollar for commercial firewall solutions, Linux has long been a popular option for those who want to save some big money and who don't mind rolling up their sleeves and building the firewall configuration themselves.&lt;br /&gt;&lt;br /&gt;Fortunately, the Linux firewall solution has continued to improve and the&lt;i&gt;&lt;a href="http://www.netfilter.org/" style="color: #003399; cursor: pointer; outline-style: none; text-decoration: none;"&gt;netfilter/iptables&lt;/a&gt;&lt;/i&gt; system now provides a robust and supremely flexible solution.&lt;i&gt;netfilter/iptables&lt;/i&gt; (n&lt;i&gt;etfilter&lt;/i&gt; is the name of the project, and &lt;i&gt;iptables&lt;/i&gt; is the name of the Linux software itself) is a system integrated into the Linux 2.4.x kernel for the handling of packet filtering. It is the successor to the &lt;i&gt;ipchains&lt;/i&gt; and &lt;i&gt;ipfwadm&lt;/i&gt; systems and is the first to be incorporated directly into the kernel. Here's a look at how you can build a strong Linux firewall with &lt;i&gt;iptables&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 1.5em; font-weight: bold;"&gt;Understanding firewalls&lt;/span&gt;&lt;br /&gt;Although there are many ways to design a firewall system, the basics remain the same. Set up a server with two network interface cards, one that connects to the Internet and one that connects to the private, internal network. (And if you want a DMZ for your hosted services, you set up a third NIC.) Then, you set up the firewall to filter packets to allow or deny certain traffic, creating a secured environment and freeing up bandwidth and processor cycles for more important work.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Helvetica Neue',HelveticaNeue,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 16px;"&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The main point of the firewall is to open up to the traffic that you need and close out everything else. The terms &lt;i&gt;open&lt;/i&gt; and &lt;i&gt;close&lt;/i&gt; refer to the actual ports, usually TCP, UDP, or ICMP, that allow connections to be established on a server. Communication between systems on the Internet can be looked at generally on a packet level. A packet contains information in its header such as source address, destination address, and protocol type, which &lt;i&gt;iptables&lt;/i&gt; can then use to make filtering decisions.&lt;br /&gt;&lt;br /&gt;Unlike &lt;i&gt;ipchains&lt;/i&gt; and &lt;i&gt;ipfwadm&lt;/i&gt;, &lt;i&gt;iptables&lt;/i&gt; can be configured as a stateful firewall, rather than being stateless. Also known as connection tracking, being stateful means the firewall will remember previous decisions involving the handling of packets instead of treating each one as new event. Valid states include INVALID, ESTABLISHED, and NEW.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 1.5em; font-weight: bold;"&gt;Installing iptables&lt;/span&gt;&lt;br /&gt;The &lt;i&gt;netfilter/iptables&lt;/i&gt; system is part of the 2.4.x kernel, as mentioned above; however, the actual firewalling software, also called &lt;i&gt;iptables&lt;/i&gt;, is not part of the kernel. &lt;i&gt;Netfilter&lt;/i&gt; is often used to refer to the kernel portion, while the &lt;i&gt;iptables&lt;/i&gt; tool is used to actually insert and delete rules in the kernel’s packet filtering table. While many distributions such as Red Hat include &lt;i&gt;iptables&lt;/i&gt; as part of their standard install, you may need to download it separately from &lt;a href="http://www.netfilter.org/" style="color: #003399; cursor: pointer; outline-style: none; text-decoration: none;"&gt;Netfilter.org&lt;/a&gt;. If installing from source, the following commands should get you up and running:&lt;br /&gt;&lt;span style="display: block; font-family: 'courier new',courier,monospace; font-size: 0.95em; margin: 12px 10px;"&gt;# bzip2 -d iptables-1.2.6a.tar.bz2&lt;/span&gt;&lt;br /&gt;&lt;span style="display: block; font-family: 'courier new',courier,monospace; font-size: 0.95em; margin: 12px 10px;"&gt;# tar -xpf iptables-1.2.6a.tar&lt;/span&gt;&lt;br /&gt;&lt;span style="display: block; font-family: 'courier new',courier,monospace; font-size: 0.95em; margin: 12px 10px;"&gt;# cd iptables-1.2.6a&lt;/span&gt;&lt;br /&gt;&lt;span style="display: block; font-family: 'courier new',courier,monospace; font-size: 0.95em; margin: 12px 10px;"&gt;# make &lt;path_to_kernel&gt;&lt;/path_to_kernel&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="display: block; font-family: 'courier new',courier,monospace; font-size: 0.95em; margin: 12px 10px;"&gt;# make install &lt;path_to_kernel&gt;&lt;/path_to_kernel&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Support will most likely be preconfigured for the more recent kernels, but it may be necessary to compile it yourself. You'll need to do this if you receive an error such as “iptables is incompatible with your kernel.” First, verify that you're running a 2.4.x kernel (with &lt;i&gt;uname –a&lt;/i&gt;, for instance) and compile a new kernel. Be sure to set the&lt;i&gt;CONFIG_NETFILTER&lt;/i&gt; option to Y.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 1.5em; font-weight: bold;"&gt;Configuring the firewall&lt;/span&gt;&lt;br /&gt;Once &lt;i&gt;iptables&lt;/i&gt; is running on your system, it’s time to look at configuring the firewall. The main commands you should be familiar with are listed in &lt;b&gt;Table A&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div align="center" style="margin: 0px; padding: 0px;"&gt;&lt;table class="table1" style="margin: 18px 0px 25px; padding: 0px;"&gt;&lt;caption class="tablehead"&gt;Table A&lt;/caption&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="padding: 0px;"&gt;--append or –A&lt;br /&gt;&lt;/td&gt;&lt;td style="padding: 0px;"&gt;Append to chain&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding: 0px;"&gt;--delete or –D&lt;br /&gt;&lt;/td&gt;&lt;td style="padding: 0px;"&gt;Delete rule from chain&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding: 0px;"&gt;--list or –L [chain]&lt;br /&gt;&lt;/td&gt;&lt;td style="padding: 0px;"&gt;List rules in a chain or all chains&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding: 0px;"&gt;--flush or –F [chain]&lt;br /&gt;&lt;/td&gt;&lt;td style="padding: 0px;"&gt;Delete all rules in a chain or all chains&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div align="center" class="tablecaption" style="margin: 0px; padding: 0px;"&gt;&lt;span style="font-family: 'Helvetica Neue',HelveticaNeue,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 16px;"&gt;Primary commands for &lt;i&gt;iptables&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: 'Helvetica Neue',HelveticaNeue,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 16px;"&gt;&lt;br /&gt;The best way to set up your firewall so that the rules are saved and run each time your system boots is to create a script you can run manually and/or have the system run at startup. The firewall script shown in &lt;b&gt;&lt;a href="http://articles.techrepublic.com.com/5100-10878_11-1047844.html#" onclick="window.open('http://techrepublic.com.com/html/tr/sidebars/1047844-0.html','','width=680,height=600,top=0,left=0,toolbar=no,location=yes,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes')" style="color: #003399; cursor: pointer; outline-style: none; text-decoration: none;"&gt;Listing A&lt;/a&gt;&lt;/b&gt; will get us started.&lt;br /&gt;&lt;br /&gt;While this is a simple firewall, it covers many of the basic commands you will need to use. Our first step is to configure the variables used by the script. This is helpful in larger scripts, where it’s much easier to change a variable once than to modify every entry containing that variable, such as an IP address. After that, we flush the rules with the &lt;i&gt;IPTABLES –F&lt;/i&gt; command, allowing us to start from a clean slate by wiping out any current &lt;i&gt;iptables&lt;/i&gt; rules that are running. This is important when you consider rules are checked in sequential order. We don’t want a lingering filter to deny packets we now want to accept, or vice versa.&lt;br /&gt;&lt;br /&gt;Next, we set the default rules for the three main chains—we deny incoming packets by default and we allow outgoing packets and forwarded (NAT) packets by default. As mentioned before, we want to open only what we need and make sure everything else is closed. We accomplish this by setting the default action on the INPUT chain (incoming packets) to DROP. Basically, all packets processed by the chain will be dropped unless explicitly allowed.&lt;br /&gt;&lt;br /&gt;The OUTPUT and FORWARD chains are set to ACCEPT, as this traffic is coming from the internal network. If you plan on implementing &lt;a href="http://www.netfilter.org/documentation/HOWTO//packet-filtering-HOWTO-7.html" style="color: #003399; cursor: pointer; outline-style: none; text-decoration: none;"&gt;policy&lt;/a&gt; with &lt;i&gt;iptables&lt;/i&gt;, you should set this to DROP. It’s also important to note that if you are allowing all traffic sourced from the internal network, it might be a good idea to do some commonsense filtering. One example of this would be to set a rule that discards packets received on the external interface with an internal IP address (a sure sign of someone who is up to something).&lt;br /&gt;&lt;br /&gt;To permit users to connect to the server via SSH or to allow inbound HTTP requests, we need to tell &lt;i&gt;iptables&lt;/i&gt; to allow these packets. We do this by appending rules to a particular chain. This example from my script shows how to allow SSH (TCP port 22) on the external interface:&lt;br /&gt;&lt;span style="display: block; font-family: 'courier new',courier,monospace; font-size: 0.95em; margin: 12px 10px;"&gt;$IPTABLES -A INPUT -i $WAN_IFACE -p TCP --destination-port 22 \ -j ACCEPT&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Let's break this down. The &lt;i&gt;-A&lt;/i&gt; means append, or add, a particular rule. The &lt;i&gt;-i&lt;/i&gt; refers to the interface that will be receiving the packets. The protocol is specified with the &lt;i&gt;–p&lt;/i&gt;option, which can be TCP, UDP, ICMP, or ALL. The destination port is dependent upon the particular service that access is being granted. In the case of SSH, it operates on the well-known TCP port 22. And finally, we have the target of the rule, which in this case is ACCEPT. Other possibilities include DROP, REJECT, and user-defined actions. ACCEPT allows the packet through, and DROP means the packet is discarded. REJECT is the same as DROP, but it also sends back an error response to the sender of the packet.&lt;br /&gt;&lt;br /&gt;In the above example, we have an entry that provides port forwarding. This is a means by which services can be forwarded by an external machine to an internal one. This is especially handy when you have just one routable IP address but would like to use multiple servers. This is accomplished with a form of network address translation (NAT). In this instance, we are forwarding SMTP traffic on port 25 from our&lt;i&gt;WAN_IFACE&lt;/i&gt; to the internal address of 192.168.1.5. Thus, an SMTP server looks like it is sitting at 10.0.0.1. But in reality, that's the external address of the firewall, which is forwarding all requests on SMTP port 25 to the internal server at 192.168.1.5. The use of NAT provides for the return communication as well, making its use completely transparent to those connecting to it from the Internet.&lt;br /&gt;&lt;br /&gt;For more information on &lt;i&gt;iptables&lt;/i&gt; configuration, check out these resources:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul style="list-style-type: none; margin: 12px 10px; padding: 0px;"&gt;&lt;span style="font-family: 'Helvetica Neue',HelveticaNeue,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 16px;"&gt;&lt;li style="background-image: url(http://i.techrepublic.com.com/images/200705/icn_arrowBullet.gif); background-position: 0px 1px; background-repeat: no-repeat; margin: 6px 0px; padding: 0px 0px 0px 18px;"&gt;·        &lt;a href="http://www.netfilter.org/documentation/FAQ/netfilter-faq.html" style="color: #003399; cursor: pointer; outline-style: none; text-decoration: none;"&gt;Netfilter/iptables FAQ&lt;/a&gt;&lt;/li&gt;&lt;li style="background-image: url(http://i.techrepublic.com.com/images/200705/icn_arrowBullet.gif); background-position: 0px 1px; background-repeat: no-repeat; margin: 6px 0px; padding: 0px 0px 0px 18px;"&gt;·        &lt;a href="http://www.netfilter.org/documentation/HOWTO//packet-filtering-HOWTO.html" style="color: #003399; cursor: pointer; outline-style: none; text-decoration: none;"&gt;Linux 2.4 Packet Filtering HOWTO&lt;/a&gt;&lt;/li&gt;&lt;li style="background-image: url(http://i.techrepublic.com.com/images/200705/icn_arrowBullet.gif); background-position: 0px 1px; background-repeat: no-repeat; margin: 6px 0px; padding: 0px 0px 0px 18px;"&gt;·        &lt;a href="http://www.jollycom.ca/iptables-tutorial/iptables-tutorial.html" style="color: #003399; cursor: pointer; outline-style: none; text-decoration: none;"&gt;Oskar Andreasson's IPTables Tutorial 1.1.9&lt;/a&gt;&lt;/li&gt;&lt;li style="background-image: url(http://i.techrepublic.com.com/images/200705/icn_arrowBullet.gif); background-position: 0px 1px; background-repeat: no-repeat; margin: 6px 0px; padding: 0px 0px 0px 18px;"&gt;·        &lt;a href="http://www.linuxguruz.org/iptables/howto/maniptables.html" style="color: #003399; cursor: pointer; outline-style: none; text-decoration: none;"&gt;Iptables MAN page&lt;/a&gt;&lt;/li&gt;&lt;li style="background-image: url(http://i.techrepublic.com.com/images/200705/icn_arrowBullet.gif); background-position: 0px 1px; background-repeat: no-repeat; margin: 6px 0px; padding: 0px 0px 0px 18px;"&gt;·        &lt;a href="http://monmotha.mplug.org/" style="color: #003399; cursor: pointer; outline-style: none; text-decoration: none;"&gt;MonMotha's IPTables Firewall&lt;/a&gt;&lt;/li&gt;&lt;/span&gt;&lt;/ul&gt;&lt;span style="font-family: 'Helvetica Neue',HelveticaNeue,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 16px;"&gt;&lt;br /&gt;&lt;span style="font-size: 1.5em; font-weight: bold;"&gt;Summary&lt;/span&gt;&lt;br /&gt;Linux can help administrators create a strong firewall with the powerful, kernel-based&lt;i&gt;netfilter/iptables&lt;/i&gt; software. As I demonstrated, &lt;i&gt;iptables&lt;/i&gt; can create general or specific packet filters to allow or deny traffic. This enables administrators to protect their servers from a wide variety of hazards, including service attacks and hack attempts. As always, the best way to learn is to get your hands dirty and experiment with &lt;i&gt;iptables&lt;/i&gt;on a testing machine. This article introduced you to the basic concepts of building a strong &lt;i&gt;iptables&lt;/i&gt; firewall. My next article will delve into some of the more advanced options that &lt;i&gt;iptables&lt;/i&gt; has to offer.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8354993350047125632-9196105050251599245?l=faysalmicrotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://faysalmicrotech.blogspot.com/feeds/9196105050251599245/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://faysalmicrotech.blogspot.com/2009/10/set-up-strong-linux-firewall-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8354993350047125632/posts/default/9196105050251599245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8354993350047125632/posts/default/9196105050251599245'/><link rel='alternate' type='text/html' href='http://faysalmicrotech.blogspot.com/2009/10/set-up-strong-linux-firewall-with.html' title='Set up a strong Linux firewall with iptables'/><author><name>faysal76</name><uri>http://www.blogger.com/profile/02525014504583845189</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8354993350047125632.post-6956292127448200523</id><published>2009-10-04T06:44:00.000-07:00</published><updated>2009-10-22T04:23:12.320-07:00</updated><title type='text'>FreeBSD-GPRS over Bluetooth</title><content type='html'>Welcome to all,here are a little tutorail that&lt;br /&gt;I tried to set up GPRS over bluetooth with a Nokia 6310i&lt;br /&gt;on my Dell workstaion WS-420  running FreeBSD 5.3.&lt;br /&gt;Everything seems working OK by bluetooth, until I try using rfcomm_pppd, where I&lt;br /&gt;keep getting this error:&lt;br /&gt;sep 20 06:37:23 nixie-bsd rfcomm_pppd[766]: Could not connect socket.&lt;br /&gt;Connection refused (61)&lt;br /&gt;I made several tries before posting but without results; attached you can find my&lt;br /&gt;configuration files.&lt;br /&gt;Any help, suggestion or link is greatly appreciated.&lt;br /&gt;I shall be much thankful for suggestion.&lt;br /&gt;&lt;br /&gt;----------------------------------------------------------------------&lt;br /&gt;nixie-bsd# dmesg  grep ubt0&lt;br /&gt;ubt0: Dell BC02 Bluetooth USB Adapter, rev 2.00/12.66, addr 2&lt;br /&gt;ubt0: Dell BC02 Bluetooth USB Adapter, rev 2.00/12.66, addr 2&lt;br /&gt;ubt0: Interface 0 endpoints: interrupt=0x81, bulk-in=0x82,&lt;br /&gt;bulk-out=0x2&lt;br /&gt;ubt0: Interface 1 (alt.config 5) endpoints: isoc-in=0x83, isoc-out=0x3; wMaxPacketSize=49; nframes=6, buffer size=294&lt;br /&gt;nixie-bsd# /etc/rc.bluetooth start ubt0&lt;br /&gt;BD_ADDR: &lt;m:y:l:a:p:t:o:p:&gt;&lt;br /&gt;Features: 0xff 0xff 0x8f 0x78 0x18 0x18 00 0x80&lt;br /&gt;&amp;lt;3-slot&amp;gt; &amp;lt;5-slot&amp;gt; &lt;encryption&gt; &lt;slot&gt;&lt;br /&gt;&lt;timing&gt; &lt;switch&gt; &lt;hold&gt; &lt;sniff&gt;&lt;park&gt;&lt;rssi&gt;&lt;channel&gt;&lt;/channel&gt;&lt;/rssi&gt;&lt;/park&gt;&lt;/sniff&gt;&lt;/hold&gt;&lt;/switch&gt;&lt;/timing&gt;&lt;/slot&gt;&lt;/encryption&gt;&lt;/m:y:l:a:p:t:o:p:&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;sco&gt;&lt;hv2&gt;&lt;hv3&gt;&lt;u-law&gt;&lt;a-law&gt;&lt;cvsd&gt;&lt;paging&gt;&lt;power&gt;&lt;transparent&gt;&lt;br /&gt;&lt;unknown2.7&gt;&lt;br /&gt;Max. ACL packet size: 192 bytes&lt;br /&gt;Number of ACL packets: 8&lt;br /&gt;Max. SCO packet size: 64 bytes&lt;br /&gt;Number of SCO packets: 8&lt;br /&gt;nixie-bsd# hccontrol -n ubt0hci inquiry&lt;br /&gt;Inquiry result, num_responses=1&lt;br /&gt;Inquiry result #0&lt;br /&gt;BD_ADDR: &lt;m:y:c:e:l:l:p:h:o:n:e&gt;&lt;br /&gt;Page Scan Rep. Mode: 0x1&lt;br /&gt;Page Scan Period Mode: 00&lt;br /&gt;Page Scan Mode: 00&lt;br /&gt;Class: 50:02:04&lt;br /&gt;Clock offset: 0x100b&lt;br /&gt;Inquiry complete. Status: No error [00]&lt;br /&gt;nixie-bsd# l2ping -a &lt;m:y:c:e:l:l:p:h:o:n:e&gt;&lt;br /&gt;0 bytes from &lt;m:y:c:e:l:l:p:h:o:n:e&gt; seq_no=0 time=133.043 ms result=0&lt;br /&gt;0 bytes from &lt;m:y:c:e:l:l:p:h:o:n:e&gt; seq_no=0 time=133.043 ms result=0&lt;br /&gt;0 bytes from &lt;m:y:c:e:l:l:p:h:o:n:e&gt; seq_no=0 time=133.043 ms result=0&lt;br /&gt;0 bytes from &lt;m:y:c:e:l:l:p:h:o:n:e&gt; seq_no=0 time=133.043 ms result=0&lt;br /&gt;nixie-bsd# rfcomm_pppd -a &lt;m:y:c:e:l:l:p:h:o:n:e&gt; -c -C 1 -l&lt;br /&gt;rfcomm-dialup&lt;br /&gt;nixie-bsd#&lt;br /&gt;nixie-bsd# tail -f /var/log/messages&lt;br /&gt;Feb 20 16:54:45 pc-bsd rfcomm_pppd[766]: Could not connect socket.&lt;br /&gt;Connection refused (61)&lt;br /&gt;nixie-bsd# tail -f /var/log/ppp.log&lt;br /&gt;nixie-bsd# hcidump -x&lt;br /&gt;HCIDump - HCI packet analyzer ver 1.5&lt;br /&gt;device: any snap_len: 65535 filter: 0xffffffff&lt;br /&gt;&amp;lt; HCI Command: Create Connection(0x010x0005) plen 13 07 05 3C 57 60 00 18 CC 00 00 00 00 00 &amp;gt; HCI Event: Command Status(0x0f) plen 4 00 01 05 04&lt;br /&gt;&amp;gt; HCI Event: Connect Complete(0x03) plen 11&lt;br /&gt;00 2E 00 07 05 3C 57 60 00 01 00&lt;br /&gt;&amp;lt; HCI Command: Write Link Policy Settings(0x020x000d) plen 4 2E 00 0E 00 &amp;lt; ACL data: handle 0x002e flags 0x02 dlen 12 L2CAP(s): Connect req: psm 3 scid 0x0059 &amp;gt; HCI Event: Number of Completed Packets(0x13) plen 5 01 2E 00 01 00&lt;br /&gt;&amp;gt; HCI Event: Max Slots Change(0x1b) plen 3 2E 00 05&lt;br /&gt;&amp;gt; HCI Event: Command Complete(0x0e) plen 6 01 0D 08 00 2E 00&lt;br /&gt;&amp;gt; ACL data: handle 0x002e flags 0x02 dlen 16&lt;br /&gt;L2CAP(s): Connect rsp: dcid 0x0040 scid 0x0059 result 0 status 0&lt;br /&gt;&amp;lt; ACL data: handle 0x002e flags 0x02 dlen 12 L2CAP(s): Config req: dcid 0x0040 flags 0x0000 clen 0 &amp;gt; HCI Event: QoS Setup Complete(0x0d) plen 21&lt;br /&gt;00 2E 00 00 01 00 00 00 00 00 00 00 00 88 13 00 00 FF FF FF&lt;br /&gt;FF&lt;br /&gt;&amp;gt; HCI Event: Number of Completed Packets(0x13) plen 5 01 2E 00 01 00&lt;br /&gt;&amp;gt; ACL data: handle 0x002e flags 0x02 dlen 16&lt;br /&gt;&amp;gt; ACL data: handle 0x002e flags 0x01 dlen 16&lt;br /&gt;&amp;gt; ACL data: handle 0x002e flags 0x01 dlen 8&lt;br /&gt;L2CAP(s): Config req: dcid 0x0059 flags 0x0000 clen 28&lt;br /&gt;MTU 32772 Unknown (type 03, len 22)&lt;br /&gt;&amp;lt; ACL data: handle 0x002e flags 0x02 dlen 14 L2CAP(s): Config rsp: scid 0x0040 flags 0x0000 result 0 clen 0 &amp;gt; ACL data: handle 0x002e flags 0x02 dlen 14&lt;br /&gt;L2CAP(s): Config rsp: scid 0x0059 flags 0x0000 result 0 clen 0&lt;br /&gt;&amp;lt; ACL data: handle 0x002e flags 0x02 dlen 8 L2CAP(d): cid 0x40 len 4 [psm 3] RFCOMM(s): SABM: cr 1 dlci 0 pf 1 ilen 0 fcs 0x1c &amp;gt; HCI Event: Number of Completed Packets(0x13) plen 5 01 2E 00 01 00&lt;br /&gt;&amp;gt; HCI Event: Number of Completed Packets(0x13) plen 5 01 2E 00 01 00&lt;br /&gt;&amp;gt; ACL data: handle 0x002e flags 0x02 dlen 8&lt;br /&gt;L2CAP(d): cid 0x59 len 4 [psm 3]&lt;br /&gt;RFCOMM(s): UA: cr 1 dlci 0 pf 1 ilen 0 fcs 0xd7&lt;br /&gt;&amp;lt; ACL data: handle 0x002e flags 0x02 dlen 18 L2CAP(d): cid 0x40 len 14 [psm 3] RFCOMM(s): PN CMD: cr 1 dlci 0 pf 0 ilen 10 fcs 0x70 mcc_len 8 dlci 2 frame_type 0 credit_flow 15 pri 7 ack_timer 0 frame_size 667 max_retrans 0 credits 7 &amp;gt; HCI Event: Number of Completed Packets(0x13) plen 5 01 2E 00 01 00&lt;br /&gt;&amp;gt; ACL data: handle 0x002e flags 0x02 dlen 16&lt;br /&gt;&amp;gt; ACL data: handle 0x002e flags 0x01 dlen 2&lt;br /&gt;L2CAP(d): cid 0x59 len 14 [psm 3]&lt;br /&gt;RFCOMM(s): PN RSP: cr 0 dlci 0 pf 0 ilen 10 fcs 0xaa mcc_len 8&lt;br /&gt;dlci 2 frame_type 0 credit_flow 14 pri 7 ack_timer 0 frame_size&lt;br /&gt;324 max_retrans 0 credits 0&lt;br /&gt;&amp;lt; ACL data: handle 0x002e flags 0x02 dlen 8 L2CAP(d): cid 0x40 len 4 [psm 3] RFCOMM(s): SABM: cr 1 dlci 2 pf 1 ilen 0 fcs 0x59 &amp;gt; HCI Event: Number of Completed Packets(0x13) plen 5 01 2E 00 01 00&lt;br /&gt;&amp;gt; HCI Event: Link Key Request(0x17) plen 6 07 05 3C 57 60 00&lt;br /&gt;&amp;gt; HCI Event: Disconn Complete(0x05) plen 4&lt;br /&gt;00 2E 00 08&lt;br /&gt;-----------&lt;br /&gt;hcsecd.conf&lt;br /&gt;-----------&lt;br /&gt;device {&lt;br /&gt;bdaddr c:e:l:l:p:h:o:n:e ;&lt;br /&gt;name "Nokia 6310i" ;&lt;br /&gt;key nokey ;&lt;br /&gt;pin "1234" ;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;--------&lt;br /&gt;ppp.conf&lt;br /&gt;--------&lt;br /&gt;&lt;br /&gt;default:&lt;br /&gt;set log Phase Chat LCP IPCP CCP tun command&lt;br /&gt;ident user-ppp VERSION (built COMPILATIONDATE)&lt;br /&gt;&lt;br /&gt;rfcomm-dialup:&lt;br /&gt;enable force-scripts&lt;br /&gt;set debug all&lt;br /&gt;set speed 115200&lt;br /&gt;set authname "test"&lt;br /&gt;set authkey "test"&lt;br /&gt;set phone "*99#"&lt;br /&gt;set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \&lt;br /&gt;\"\" AT OK-AT-OK \&lt;br /&gt;AT+CGDCONT=1,IP,internet.wind \&lt;br /&gt;\"\" AT OK-AT-OK ATE1Q0 OK \\dATD\\T TIMEOUT 40 CONNECT"&lt;br /&gt;set login&lt;br /&gt;set timeout 30&lt;br /&gt;enable dns&lt;br /&gt;&lt;br /&gt;resolv rewrite&lt;br /&gt;set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0&lt;br /&gt;add default HISADDR&lt;/m:y:c:e:l:l:p:h:o:n:e&gt;&lt;/m:y:c:e:l:l:p:h:o:n:e&gt;&lt;/m:y:c:e:l:l:p:h:o:n:e&gt;&lt;/m:y:c:e:l:l:p:h:o:n:e&gt;&lt;/m:y:c:e:l:l:p:h:o:n:e&gt;&lt;/m:y:c:e:l:l:p:h:o:n:e&gt;&lt;/m:y:c:e:l:l:p:h:o:n:e&gt;&lt;/unknown2.7&gt;&lt;/transparent&gt;&lt;/power&gt;&lt;/paging&gt;&lt;/cvsd&gt;&lt;/a-law&gt;&lt;/u-law&gt;&lt;/hv3&gt;&lt;/hv2&gt;&lt;/sco&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8354993350047125632-6956292127448200523?l=faysalmicrotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://faysalmicrotech.blogspot.com/feeds/6956292127448200523/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://faysalmicrotech.blogspot.com/2009/10/freebsd-gprs-over-bluetooth.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8354993350047125632/posts/default/6956292127448200523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8354993350047125632/posts/default/6956292127448200523'/><link rel='alternate' type='text/html' href='http://faysalmicrotech.blogspot.com/2009/10/freebsd-gprs-over-bluetooth.html' title='FreeBSD-GPRS over Bluetooth'/><author><name>faysal76</name><uri>http://www.blogger.com/profile/02525014504583845189</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8354993350047125632.post-1076465463074121100</id><published>2009-10-04T06:24:00.000-07:00</published><updated>2009-10-04T06:39:33.628-07:00</updated><title type='text'>A five step SQUID configuration</title><content type='html'>These are a few simple steps having a concise information meant to step you through the basic installation and configuration of Squid. This document is dedicated for beginners who want a simple Squid setup running in Linux. For detailed configurations please refer our Configuration Manual&lt;br /&gt;&lt;strong&gt;Step I - Downloading and compiling Squid&lt;/strong&gt;&lt;br /&gt;You can download squid source file as a gzipped tar ball (squid-x.y-STABLE.tar.gz) available at &lt;a class="postlink" href="http://www.squid-cache.org/"&gt;http://www.squid-cache.org/&lt;/a&gt; or from &lt;a class="postlink" href="ftp://www.squid-cache.org/pub"&gt;ftp://www.squid-cache.org/pub&lt;/a&gt;. Next you have to extract the compressed archive file and change the working directory to squidtar -xvzf squid-*-src.tar.gz cd squid -* Now enter the following commands in order to configure, compile and install squid ./configuremakemake installThis by default, will install in "/usr/local/squid". Type ./configure --help to view all available options.&lt;br /&gt;&lt;strong&gt;Step II - Basic Configuration&lt;/strong&gt;&lt;br /&gt;Some basic configurations are to be done. Uncomment and edit the following lines in the configuration file found default at "/usr/local/squid/etc/squid.conf". cache_dir this direcitve specifies the cache directory storage format and its size as given below.cache_dir ufs /usr/local/squid/cache 100 16 256 The value 100 denotes 100MB cache size. This can be adjusted to the required size. http_portCheck http_port, 3128 is a default.http_accessBy default http_access is denied. The ACL rules should be modified to allow access only to the trusted clients. This is important because it prevents people from stealing your network resources.cache_effective_user &amp;amp; cache_effective_ groupSet these directive to the user and group by which squid will run. This user should have the permission to read and write in the cache directory and to the log files.&lt;br /&gt;&lt;strong&gt;Step III -Custom Configuration&lt;/strong&gt;&lt;br /&gt; Custom configuration based on your network needsFor Configuring squid for proxyBy default, squid is configured as a direct proxy . In order to cache web traffic with squid, the browser must be configured to use the squid proxy. This needs the following information i. the proxy server's host nameii. the port by which the proxy server accepts connections. For Configuring squid for transparencyUsing squid transparently is a two part process, requiring first that squid be configured properly to accept non-proxy requests (performed in the squid module) and second that web traffic gets redirected to the squid port (achieved in three ways namely policy based routing, Using smart switching or by setting squid Box as a gateway).Getting transparent caching to work requires the following stepsi. For some operating systems, you have to configure and build a version of Squid which can recognize the hijacked connections and discern the destination addresses. For Linux this seems to work automatically. For BSD-based systems, configure squid with the --enable-ipf-transparent option and you have to configure squid ashttpd_accel_host virtualhttpd_accel_port 80httpd_accel_with_proxy onhttpd_accel_uses_host_header onii. Next you have to configure your cache host to accept the redirected packets - any IP address, on port 80 - and deliver them to your cache application. This is typically done with IP filtering/forwarding features built into the kernel. In Linux they call this ipfilter (kernel 2.4.x), ipchains (2.2.x) or ipfwadm (2.0.x).For Configuring squid for Reverse ProxyTo run Squid as an accelerator, you probably want to listen on port 80. And you have to define the machine you are accelerating for. This is done in squid module,http_port 80httpd_accel_host visolve.comhttpd_accel_port 81httpd_accel_single_host onhttpd_accel_with_proxy onIf you are using Squid as an accelerator for a virtual host system, then instead of a 'hostname' here you have to use the word virtual as:http_port 80httpd_accel_host virtualhttpd_accel_port 81httpd_accel_with_proxy onhttpd_accel_single_host off.&lt;br /&gt;&lt;strong&gt;Step IV - Starting Squid&lt;/strong&gt;&lt;br /&gt;  After you've finished editing the configuration file, you can start Squid for the first time. First, you must create the swap directories. Do this by running Squid with the -z option:/usr/local/squid/sbin/squid -zOnce that completes, you can start Squid and try it out. Probably the best thing to do is run it from your terminal and watch the debugging output. Use this command:/usr/local/squid/sbin/squid -NCd1If everything is working fine, then your console displays: "Ready to serve requests".If you want to run squid in the background, as a daemon process/usr/local/squid/sbin/squidYou should be a privileged user to start/stop squid.&lt;br /&gt;&lt;strong&gt;Step V -&lt;/strong&gt; &lt;strong&gt;Checking Working&lt;/strong&gt;&lt;br /&gt;  To check if Squid is workingCheck the cache.log file in your logs directory to find out if squid works correctly. This file contains the informational and error messages that Squid generates at runtime&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8354993350047125632-1076465463074121100?l=faysalmicrotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://faysalmicrotech.blogspot.com/feeds/1076465463074121100/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://faysalmicrotech.blogspot.com/2009/10/five-step-squid-configuration.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8354993350047125632/posts/default/1076465463074121100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8354993350047125632/posts/default/1076465463074121100'/><link rel='alternate' type='text/html' href='http://faysalmicrotech.blogspot.com/2009/10/five-step-squid-configuration.html' title='A five step SQUID configuration'/><author><name>faysal76</name><uri>http://www.blogger.com/profile/02525014504583845189</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8354993350047125632.post-2693514769808439670</id><published>2009-09-30T03:29:00.000-07:00</published><updated>2009-09-30T03:34:31.191-07:00</updated><title type='text'>Slax-Your Pocket Distribution</title><content type='html'>Slax is a modern, portable, small and fast Linux operating system with a modular approach and outstanding design. Despite its small size, Slax provides a wide collection of pre-installed software for daily use, including a well organized graphical user interface and useful recovery tools for system administrators.The modular approach gives you the ability to include any other software in Slax easily. If you're missing your favourite text editor, networking tool or game, simply download a module with the software and copy it to Slax, no need to install, no need to configure.If you are a beginner or you're just too busy to make it yourself, follow a few steps to build your own customized operating system by using web-based interface here.&lt;br /&gt;&lt;br /&gt;    And Now Slax is also available in urdu.Its really great for urdu users and the people who urge to use computer but the english language is a problem for them.Enjoy using Slax.You may get it from &lt;a class="postlink" href="http://downloads.urduweb.org/urduslax/urdu-slax-5.1.8.1.iso"&gt;http://downloads.urduweb.org/urduslax/urdu-slax-5.1.8.1.iso&lt;/a&gt; (Urdu Version)&lt;br /&gt;&lt;br /&gt;   For English user you may have it from the following address&lt;br /&gt;   &lt;a class="postlink" href="http://www.slax.org/get_slax.php?download=iso"&gt;http://www.slax.org/get_slax.php?download=iso&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;   And for those who are much anxious to boot it from usb flash drive they may grab it from the following link&lt;br /&gt;   &lt;a class="postlink" href="http://www.slax.org/get_slax.php?download=tar"&gt;http://www.slax.org/get_slax.php?download=tar&lt;/a&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;   Have Fun!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8354993350047125632-2693514769808439670?l=faysalmicrotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://faysalmicrotech.blogspot.com/feeds/2693514769808439670/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://faysalmicrotech.blogspot.com/2009/09/slax-your-pocket-distribution.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8354993350047125632/posts/default/2693514769808439670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8354993350047125632/posts/default/2693514769808439670'/><link rel='alternate' type='text/html' href='http://faysalmicrotech.blogspot.com/2009/09/slax-your-pocket-distribution.html' title='Slax-Your Pocket Distribution'/><author><name>faysal76</name><uri>http://www.blogger.com/profile/02525014504583845189</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8354993350047125632.post-5747159929688633623</id><published>2009-09-30T03:19:00.000-07:00</published><updated>2009-09-30T03:27:41.393-07:00</updated><title type='text'>10 Tips for After You Install or Upgrade Ubuntu</title><content type='html'>Ubuntu is becoming more and more complete and easy to configure. However, like any operating system there’s work to be done after the installation. Here’s a list of 10 tips that you can use after installing or upgrading Ubuntu.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Install software faster&lt;/strong&gt;&lt;br /&gt;As a commenter on Slashdot said: I felt a great disturbance in the force, as if thousands of apt-get repositories had cried out in pain, and were suddenly silenced.The Ubuntu software repositories can get really slow, and even stop responding completely around the time of a major Ubuntu release. Without a repository mirror, you can’t install software. The Synaptic package manager can help you find a faster mirror.Install restricted extras (and enable the multiverse repository) Install support for playback of many types of audio and video, web fonts, Java, Flash, and DVD playback all in one go. Ubuntu restricted extras allow you to easy install everything that Ubuntu can’t include by default for legal reasons.Open Applications-&gt;Add/Remove. In the Show drop down box, select All available applications. This will enable the multiverse software repository, and give you access to the restricted extras and non-free software. Start typing restricted extras into the search box and check the box beside Ubuntu restricted extras when it appears in the results. Click Appy Changes to begin installing.Silence the internal speaker beep Some Ubuntu applications make heavy use of that annoying speaker inside your PC’s case, such as Firefox when you are searching in a page. It’s not difficult permanently or temporarily disable.Clear partition icons off the desktop I like to keep my desktop clean and free of icons. Ubuntu doesn’t, and will drop icons for other disk partitions on the desktop that you likely rarely or never need. You can change a setting using gconf-editor to fix this.&lt;br /&gt; Remove old configuration files If you’ve upgraded your Ubuntu installation, or use a separate home partition, all of your settings will be carried over to the new Ubuntu installation. Your desktop could look exactly the same as before! This can cause problems when newer software is loading older configuration files. To start fresh, you can remove the old configuration. Open your home folder in the file browser, and select View-&gt;Show Hidden Files. Files and folders beginning with a dot are for configuration. Back these up first, and them remove them from your home folder. The next time you log in, you will see a pristine default Ubuntu desktop.&lt;br /&gt; Remove old kernels This is a tip for those of you who have upgraded from a previous version of Ubuntu or installed during development. Is your boot menu full of options for booting Ubuntu with older kernels? Mine was too. You can safely remove the ones you don’t need.Give Ubuntu a cool new look The default Ubuntu theme hasn’t changed, except for the wallpaper, in years. Why not find a new theme? Give Blubuntu a try, it’s an easily installable and complete blue alternative to the brown Human theme.&lt;br /&gt; Run Windows applications with the latest WINE New WINE releases arrive every two weeks; the version in Ubuntu 8.04’s repository is already out-of-date. To be able to run Windows applications as well as possible, you should stay with the latest WINE releases.Open System-&gt;Administration-&gt;Software Sources, and select the Third Party Software tab. Click Add and paste in the official WINE Ubuntu repository  &lt;a class="postlink" href="http://wine.budgetdedicated.com/apt"&gt;http://wine.budgetdedicated.com/apt&lt;/a&gt;  hardy mainWhen prompted, reload the repositories. Install the package wine from your package manager. Whenever a new version of WINE is released, you should see it in your Ubuntu updates.&lt;br /&gt;Customize Compiz desktop effects Ubuntu’s default Compiz desktop effects settings are pretty tame. Want the cube and burning windows? Install the advanced configuration software and tweak as much as you like.Easily toggle Compiz on and off You may need to run an application or two that doesn’t work properly with Compiz, or find that it slows down 3D games. Fusion-icon runs in your notification area and makes it easy to switch between window managers. What do you do after you install a new Ubuntu system? Have any tips of your own?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8354993350047125632-5747159929688633623?l=faysalmicrotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://faysalmicrotech.blogspot.com/feeds/5747159929688633623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://faysalmicrotech.blogspot.com/2009/09/10-tips-for-after-you-install-or.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8354993350047125632/posts/default/5747159929688633623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8354993350047125632/posts/default/5747159929688633623'/><link rel='alternate' type='text/html' href='http://faysalmicrotech.blogspot.com/2009/09/10-tips-for-after-you-install-or.html' title='10 Tips for After You Install or Upgrade Ubuntu'/><author><name>faysal76</name><uri>http://www.blogger.com/profile/02525014504583845189</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8354993350047125632.post-2155938812441257898</id><published>2009-09-30T01:05:00.000-07:00</published><updated>2009-10-17T01:33:54.019-07:00</updated><title type='text'>BSD vs Linux</title><content type='html'>BSD vs Linux&lt;br /&gt;What is this?&lt;br /&gt;I run &lt;a href="http://www.freebsd.org/"&gt;FreeBSD&lt;/a&gt; on my computers. A lot of my friends run &lt;a href="http://www.linux.org/"&gt;Linux&lt;/a&gt;, or at least one of the distributions of it. Naturally, then, we agree that a Unix-style operating system is the right choice, but we disagree on which to use.&lt;br /&gt;It's been my impression that the BSD communit{y,ies}, in general, understand Linux far better than the Linux communit{y,ies} understand BSD. I have a few theories on why that is, but that's not really relevant. I think a lot of Linux people get turned off BSD because they don't really understand how and why it's put together. Thus, this rant; as a BSD person, I want to try to explain how BSD works in a way that Linux people can absorb.&lt;br /&gt;While there's overwhelming similarity between the operating systems in most cases, there are also a lot of differences. As you probe more into the differences, you find that they emerge from deep-seated disagreements. Some are disagreements over development methodology, some over deployment and usage, some about what's important, some about who's important, and some about which flavor of ice cream is superior. Just comparing the surface differences doesn't tell you anything; it's the deeper differences that both explain and justify why each group does things the way they do.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;What isn't this?&lt;br /&gt;This is not:&lt;br /&gt;A list of command correspondances; "'netstat -rnfinet' on BSD = 'netstat -rnAinet' on Linux" and such things.&lt;br /&gt;How to do all the things involved in adminning and running a BSD box.&lt;br /&gt;Why you should use BSD instead of Linux.&lt;br /&gt;Why you should use Linux instead of BSD.&lt;br /&gt;Why you should use this BSD instead of that BSD.&lt;br /&gt;Why you should use this Linux instead of that Linux.&lt;br /&gt;Why BSD is Right and Linux is Wrong.&lt;br /&gt;Why Linux is Right and BSD is Wrong.&lt;br /&gt;Why I am a god and you should worship me.&lt;br /&gt;I, personally, for me, believe (obviously) that my OS choice is right. That's me. I'm not telling you that you should believe it. Learn the facts, and the origins behind the facts, and make up your own damn mind. That's why you have one.&lt;br /&gt;Some preliminary thoughts&lt;br /&gt;There're a lot of philosophical disparity between the Linux world and the BSD world. And there are a lot of expressions about it out there. One I particularly like goes something like:&lt;br /&gt;BSD is what you get when a bunch of Unix hackers sit down to try to port a Unix system to the PC. Linux is what you get when a bunch of PC hackers sit down and try to write a Unix system for the PC.&lt;br /&gt;Now, I like that quip, not because it's some sort of absolute revealed truth, but because it gives a very good feel for some of the differences. The BSDs, in general, are very much more like traditional Unices than Linux is. A lot of that is because they're direct-line descendants of the BSD from Berkeley, which was a direct-line descendant of the original AT&amp;amp;T Unix. Unix-the-trademark is a trademark of The Open Group, and Unix-the-code is owned by SCO, so one can't actually say that the BSDs are really Unix (that's the sort of statement that triggered the USL/UCB lawsuit extravaganza, in fact). But, in many ways, the BSDs are direct derivatives of traditional Unix.&lt;br /&gt;That shows through in a lot of ways. It shows up in the design of the base system and the packaging of addons. It shows up in the partitioning of the mass storage. It shows up in a lot of details of the commands. And it shows up in the attitudes and reflexes and prejudices of the developers, which are reflected in the code and in the users.&lt;br /&gt;BSD is designed. Linux is grown. Perhaps that's the only succinct way to describe it, and possibly the most correct.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8354993350047125632-2155938812441257898?l=faysalmicrotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://faysalmicrotech.blogspot.com/feeds/2155938812441257898/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://faysalmicrotech.blogspot.com/2009/09/bsd-vs-linux.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8354993350047125632/posts/default/2155938812441257898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8354993350047125632/posts/default/2155938812441257898'/><link rel='alternate' type='text/html' href='http://faysalmicrotech.blogspot.com/2009/09/bsd-vs-linux.html' title='BSD vs Linux'/><author><name>faysal76</name><uri>http://www.blogger.com/profile/02525014504583845189</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
