Skip to main content


Showing posts from 2007

#!/bin/bash ########### SysCTL Hardening ######### # Disable ICMP routing redirects. Otherwise, your system could have its routing table misadjusted by an attacker sysctl -w net.ipv4.conf.all.accept_redirects=0 #sysctl -w net.ipv6.conf.all.accept_redirects=0 sysctl -w net.ipv4.conf.all.send_redirects=0 #sysctl -w net.ipv6.conf.all.send_redirects=0 #Disable IP source routing. The only use of IP source routing these days is by attackers trying to spoof IP addresses that you would trust as internal hosts. sysctl -w net.ipv4.conf.all.accept_source_route=0 sysctl -w net.ipv4.conf.all.forwarding=0 # sysctl -w net.ipv4.conf.all.mc_forwarding=0 #Enforce sanity checking, also called ingress filtering or egress filtering. The point is to drop a packet if the source and destination IP addresses in the IP header do not make sense when considered in light of the physical interface on which it arrived. sysctl -w net.ipv4.conf.all.rp_filter=1 #Log and drop "Martian" packets. A "Ma

Limit number of Shell logins by a USER or GROUP

To limit multiple Shell login by the same user on a Linux box you have to set a maximum number of logins in /etc/security/limits.conf for a user or a group. For example: # groupadd salesgroup # useradd -G salesgroup salesman1 # useradd -G salesgroup salesmanager # echo "@salesgroup - maxlogins 10" >> /etc/security/limits.conf # echo "salesman1 - maxlogins 5" >> /etc/security/limits.conf Here the group salesgroup can make a maximum of 10 logins at a time. And the user salesman1 is limited to 5 simultaneous logins.

Starting httpd: execvp: No such file or directory [FAILED]

I downloaded the source for the latest Apache HTTP and installed it 1. ./configure --enable-so 2. make 3. make install When I ran # /usr/local/apache2/bin/apachectl start it was fine. But it began to show errors when I tried to run # /etc/init.d/httpd start My /etc/init.d/httpd is as follows . /etc/rc.d/init.d/functions case "$1" in start) echo -n "Starting httpd: " daemon httpd -DSSL echo touch /var/lock/subsys/httpd ;; stop) echo -n "Shutting down http: " killproc httpd echo rm -f /var/lock/subsys/httpd rm -f /usr/local/apache2/logs/ ;; status) status httpd ;; restart) $0 stop $0 start ;; reload) echo -n "Reloading httpd: " killproc httpd -HUP echo ;; *) echo "Usage: $0 {start|stop|restart|reload|status}" exit 1 esac exit

How to Disable Alt+Ctrl+Bksp and Ctrl+Alt+Function Keys

System administrators should be aware that now there is the ability to turn off switching to text mode virtual terminals via CTL-ALT-FunctionKey. This can come in handy when locking down a system (such when a Linux box is used as a kiosk) when used in conjunction with disabling CTL-ALT-BKSP (forceful kill of the X server). To do this, edit your /etc/X11/XF86Config or /etc/X11/xorg.conf and add the following: Section "ServerFlags" # prevent the use of CTL-ALT-F1, etc Option "DontVTSwitch" "On" # prevent the use of CTL-ALT-BKSP Option "DontZap" "On" EndSection Here the Vitrual Consoles can be locked in /etc/inittab also Open /etc/inittab and comment the following 1:2345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/mingetty tty2 3:2345:respawn:/sbin/mingetty tty3 4:2345:respawn:/sbin/mingetty tty4 5:2345:respawn:/sbin/mingetty tty5 6:2345:respawn:/sbin/mingetty tty6 You can shift the Virtual Consoles from Alt+Ctrl+F1

Tunneling TCP Services over HTTP(S)

HTTP Tunnel Definition HTTP Tunneling is a technique by which communications performed using various network protocols are encapsulated using the HTTP protocol, the network protocols in question usually belonging to the TCP/IP family of protocols. The HTTP protocol therefore acts as a wrapper for a covert channel that the network protocol being tunneled uses to communicate.The HTTP stream with its covert channel is termed a HTTP Tunnel. HTTP Tunnel software consists of client-server HTTP Tunneling applications that integrate with existing application software, permitting them to be used in conditions of restricted network connectivity including firewalled networks, networks behind proxy servers, and NATs. An HTTP Tunnel is used most often as a means for communication from network locations with restricted connectivity – most often behind NATs, firewalls, or proxy servers, and most often with applications that lack native support for communication in such conditions of r

Bash Script for FTP

#!/bin/bash USER=myusername PASS=mypasswd FTPSERVER=192.168.0.X ftp -i -n $FTPSERVER << EOF user $USER $PASS mkdir test cd test put myfile bye >> But FTP will allow transfer of files only,not the directory tree. If you want to transfer the Directory structure through FTP you can use LFTP or similar FTP clients. A variety of GUI Based clients are available LFTP lftp has builtin mirror which can download or update a whole directory tree. There is also reverse mirror (mirror -R) which uploads or updates a directory tree on server. Mirror can also synchronize directories between two remote servers, using FXP if available. It can be downloaded from or Here is a sample BASH Script to automate the FTP Transfer #!/bin/bash USER=ftpuser PASS=ftppasswd FTPSERVER=192.168.0.X LOCALDIR=/home/USER/LOCAL REMDIR=REMOTE lftp -u $USER,$PASS $FTPSERVER << EOF mirror -R $LOCALDIR $REMDIR quit >> N

How to disable directory browsing in Apache

One of the "must do's" on setting a secure apache webserver environment is to disable directory browsing. As a default Apache will be compiled with this option enabled, but its always a good idea to get rid of this setting unless its really necessary. If you are on an RPM installation of Apache you will find the apache configuration file probably here: /etc/httpd/conf/httpd.conf If you are using apache from the source tar balls probably you will find the configuration file here: /usr/local/apache/conf/httpd.conf Edit the httpd.conf file and scroll until you find a line like this: Options All Indexes FollowSymLinks MultiViews To disable directory browsing carefully remove the line that says: Indexes and leave the line like this: Options All FollowSymLinks MultiViews Restart your apache webserver and thats it

Reboot Linux box after a kernel panic

If you want the server to get rebooted automatically after kernel hit by a pain error message, try adding panic=N to /etc/sysctl.conf file. It specify kernel behavior on panic. By default, the kernel will not reboot after a panic, but this option will cause a kernel reboot after N seconds. For example following boot parameter will force to reboot Linux after 10 seconds. Open /etc/sysctl.conf file # vi /etc/sysctl.conf When kernel panic’s, reboot after 10 second delay kernel.panic = 10 Save the file. You can do this on the fly also,by editing the GRUB While Grub loads edit and append the following to the KERNEL line panic=10 Alternatively, you may want to enable and use magic system request keys (SysRq). Linux kernel includes magic system request keys. It was originally developed for kernel hackers. However, you can use this hack to reboot, shutdown or halt computer safely (remember safe reboot/shutdown == flush filesystem buffers and unmount file system and then reboot so

Adding Extra Swap Space

There are situations where we have to expand the SWAP space after installation. For example, suppose you are upgrading RAM 512MB to 1 GB MB, but there is only 1 GB of swap space available which was created during installation. It might be an advantage to increase the amount of swap space to Double the RAM(2 GB) as per the UNIX/Linux guidance and will help you to perform memory eaters. You have two options: add a swap partition or add a swap file. It is recommended to add a swap partition, but this is not possible if you don't have free Disk space available. Option 1 Its better to reboot the server to SINGLE USER mode(if possible) before adding the extra SWAP Space And you can do an optional "swapoff" command to turn off all the swap spaces. Create the swap partition fdisk. # fdisk /dev/hda (Assuming Hard drive is hda) Type n ( for new partition) Determine the size for the partition then Toggle the partiotion label to Linux Swap.Its id is 82 Save the part

PHP and Pear MDB2 Installation

Installation of Pear MDB2 (2.4.1) with Apache-2.2.6 PHP-5.2.3(with MySQL and MySQLI) Backed up Existing PHP [root@hareesh ~]# mv /usr/local/lib/php /usr/local/lib/php.bak [root@hareesh ~]# mv /usr/local/bin/php /usr/local/bin/php.bak [root@hareesh ~]# mv /usr/local/include/php /usr/local/include/php.bak Installed PHP-5.2.3 with MySQL and MySQLI Support [root@hareesh lib]# cd /usr/local/src/ [root@hareesh src]# tar xjf php-5.2.3.tar.bz2 [root@hareesh src]# cd php-5.2.3 [root@hareesh php-5.2.3]# ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-zlib --with-pear --with-mysql --with-mysql-sock=/tmp/mysql.sock --with-mysqli --with-mysqli-sock=/tmp/mysql.sock [root@hareesh php-5.2.3]# make Stopped Apache [root@hareesh ~]# /usr/local/apache2/bin/apachectl stop httpd: Could not reliably determine the server's fully qualified domain name, using for ServerName Then Installed PHP [root@hareesh php-5.2.3]# make install [root@hareesh php-5.2.3]# /usr/local/a

Cannot execute [Argument list too long]

Tried to remove some files like log files with /bin/rm -rf all at once, and you get this Error message # rm -rf /var/log/mail/*.old.log bash: /bin/rm: /bin/rm: cannot execute [Argument list too long] So, rm utility complains that the system-wide ARG_MAX value that is used to setup an input buffer size to process the entire list will overflow. Good security measure, but, doesn't help you out with the task at hand. To get around, use a combination of find , UNIX pipe , and xargs utilities. The rewrite of the original command would look something like this: # find . -name '*.old.log' -print0 | xargs -0 rm -f find naturally finds the target file names, and feeds them one by one into the unnamed UNIX/Linux pipe . The - print0 argument instructs to print the full file name on the standard output which is going to the pipe, followed by a null character (instead of the newline character that -print̢۪uses ). When pipe becomes full, find blocks waiting for more spac

Auto Logout of Inactive Users

How to force automatic logouts of users who forget to log out in case of inactivity detected ? BASH have a TMOUT variable.We can set the TIMEOUT value here for sessions. Add the TMOUT variable to your /etc/bashrc file: # vi /etc/bashrc Set TMOUT to 300 seconds (5 minuets): TMOUT=300 This will automatically logout users after 300 seconds of inactivity. This hack will only work with run level 2, 3 .It will not work with GUI sessions.

Simple Server Monitor

#!/bin/bash # BASH Script to monitor Server uptime,Servies,Memory Usage,Disk Usage,Load Average,Last Login and Reboot Details and Take backup of configuration files. DATE=`date +%d.%m.%Y` TIME=`date +%H.%M.%S` ## Mail ID of Admin ## Mail ID of Admin FILES=(/etc/hosts /usr/local/apache/conf/httpd.conf /etc/php.ini /var/lib/pgsql/data/pg_hba.conf) services=(http mysql smtp ftp postgresql) ## List of services to be checked serviceports=(:80 :3306 :25 :21 :5432) ## List of services to be checked #services=(http https smtp) ## List of services to be checked #serviceports=(:80 :443 :25) ## List of services to be checked title=0 ## Definition of Functions # chkuptime function chkuptime () { echo " " >> /tmp/$DATE.$TIME echo "The Server `hostname` is up for `uptime | cut -f1 -d, | awk {'print $3'} ;uptime | cut -f1 -d, | awk {'print $4'}`" >> /tmp/$DATE.$TIME

Installation of PHP-Screw 1.5 with Apache 2.2.6 and PHP-5.2.3

Apache 2.2.6 Installation [root@myserver src]# pwd /usr/local/src [root@myserver src]# cd httpd-2.2.6 [root@myserver httpd-2.2.6]# [root@myserver httpd-2.2.6]# ./configure --enable-so --prefix=/usr/local/apache2 [root@myserver httpd-2.2.6]# make [root@myserver httpd-2.2.6]# make install PHP-5.2.3 installation [root@myserver src]# pwd /usr/local/src [root@myserver src]# cd php-5.2.3 [root@myserver php-5.2.3]# [root@myserver php-5.2.3]# ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-zlib [root@myserver php-5.2.3]# make [root@myserver php-5.2.3]# make install Configured Apache for PHP 5 # vi /usr/local/apache2/conf/httpd.conf Added the following 3 lines LoadModule php5_module modules/ AddType application/x-httpd-php .php .phtml AddType application/x-httpd-php-source .phps PHP Screw Installation [root@myserver src]# pwd /usr/local/src [root@myserver src]# cd php_screw-1.5 [root@myserver php_screw-1.5]# phpize [root@myserver php_screw-1.5]# ./configur

postfix/smtp connect to[]: Connection timed out (port 25) server dropped connection without sending the initial SMTP greeting

Postfix has been configured fine. The mail is working in the local Domain - But when I try to send mails to outer domains,it produces the following "TIMEOUT" errors in /var/log/mail/info Nov 5 23:02:43 mydomain postfix/pickup[30923]: 419941C678: uid=555 from= Nov 5 23:02:43 mydomain postfix/cleanup[31536]: 419941C678: message-id=<> Nov 5 23:02:43 mydomain postfix/qmgr[22926]: 419941C678: from= , size=330, nrcpt=1 (queue active) Nov 5 23:03:13 mydomain postfix/smtp[31538]: connect to[]: Connection timed out (port 25) Nov 5 23:03:13 mydomain postfix/smtp[31538]: connect to[]: server dropped connection without sending the initial SMTP greeting (port 25) Nov 5 23:03:13 mydomain postfix/smtp[31538]: 419941C678: to= , relay=none, delay=30, status=deferred (connect to[]: server dropped connection without sending the initial SMTP greeting) N

QMAIL port 25 and 110 are closed

Qmail installation went fine .But I was unable to connect to port 25 and 110.They were in closed state.When I tried to connect with telnet I got the “Connection refused” message. # qmailctl stat /service/qmail-send: up (pid 2219) 37 seconds /service/qmail-send/log: up (pid 2311) 37 seconds /service/qmail-smtpd: up (pid 2917) 1 seconds /service/qmail-smtpd/log: up (pid 2723) 37 seconds /service/qmail-pop3d: up (pid 2724) 1 seconds /service/qmail-pop3d/log: up (pid 2989) 37 seconds messages in queue: 0 messages in queue but not yet preprocessed: 0 Looks good but when I try to connect on the mail server I got the connection problem. ]# telnet localhost 110 Trying telnet: connect to address Connection refused # telnet localhost 25 Trying telnet: connect to address Connection refused I have checked the logs for qmail-smtpd and qmail-pop3d and contains a lots of error lines like the following: tcpserver: fatal: temporarily unable to

BASH Script to Generate files from existing ones with a partial change in filename

#!/bin/bash # BASH Script to generate $EXTENSION files like FILE_fr.$EXTENSION,FILE_sp.$EXTENSION from existing FILE_$SEARCHSTRING.$EXTENSION without causing any kind of overwrite. DIR=/tmp/html EXTENSION=extension SEARCHSTRING=en cd $DIR > /dev/null 2> /dev/null count=`find *$SEARCHSTRING.$EXTENSION | wc -l` n=1 echo $count \"*$SEARCHSTRING.$EXTENSION\" files found while [ $n -le $count ] do { filename=`find *$SEARCHSTRING.$EXTENSION | head -$n | tail -1` echo $filename language=(fr sp po) for (( i = 0 ; i < ${#language[@]} ; i++ )) do value=`ls $filename | awk -F "$SEARCHSTRING.$EXTENSION" {'print $1'}` find "$value""${language[$i]}".$EXTENSION > /dev/null 2> /dev/null if [ $? != 0 ] then { cp "$value"$SEARCHSTRING.$EXTENSION "$value""${language[$i]}".$EXTENSION

A Simple Service Monitor

#!/bin/bash # Check the Service Status of Server and send notification mail if anyone is DOWN. Server= ## IP of the remote Server to be monitored ## Mail ID of Admin Subject=Server-Status DATE=`date +%d.%m.%Y` TIME=`date +%H.%M.%S` mkdir /tmp/$DATE.$TIME cd /tmp/$DATE.$TIME services=(http https mysql smtp pop imap imaps ssh) ## List of services to be checked Watch () { #nmap $Server | grep ${services[$i]} > /dev/null 2> /dev/null ## Use this one for Remote Server which is not behind any firewall netstat -ntpl | grep ${services[$i]} > /dev/null 2> /dev/null ## Use this locally if [ $? != 0 ] then echo ${services[$i]} is DOWN >> result fi } for (( i = 0 ; i < ${#services[@]} ; i++ )) do Watch ${services[$i]} done grep DOWN result > /dev/null 2> /dev/null if [ $? = 0 ] then count=`grep DOWN result | wc -l` if [ ${#services[@]} = $count ] then echo "All Services are down" >> re

How to Create Custom Hot key to Launch Applications in GNOME

1. Open Applications -> System -> Configuration Editor from the GUI OR Open a terminal, type gconf-editor 2. Go to "apps" -> "metacity" -> "keybinding_commands" 3. Double-click on an unused element e.g. "command_10" 4. Type in the name of the application you want to launch, for e.g. "firefox" or "gnome-terminal" 5. Then go to "apps" -> "metacity" -> "global_keybindings" 6. Double-click on the command name that we have edited in "keybinding_commands" Section. Here for me it is "run_command_10" 7. Then enter the Keyboard shortcut you would like to launch the application I entered "<"Alt">"t here (without the quotes) for gnome-terminal. Thats all Go to Desktop and type Alt+t a GNOME terminal should open. It will depend on the active Windows also since some other applications may be having th

Simple Disk and Memory Monitor

#!/bin/sh # Shell script to monitor the disk space,Memory,SWAP Usage and send an email to $ADMIN, if the free avilable percentage of space is >= $ALERT ADMIN="" ADMIN1="" ADMIN2="" # Alert Level Percentage of Disk Usage . Default is 90% ALERT=90 df -h | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $1 }' | while read output; do used=$(echo $output | awk '{ print $1}' | cut -d'%' -f1 ) partition=$(echo $output | awk '{ print $2 }' ) mountpoint=`mount | grep $partition | cut -f3 -d" "` if [ $used -ge $ALERT ]; then echo "Running out of space \"$partition ($used%) mounted on $mountpoint\" on $(hostname) as on $(date)" | mail -s "Alert: Almost out of disk space $used" -c $ADMIN1,$ADMIN2 $ADMIN fi done # Alert on RAM and SWAP Usage MEM=`free -m | grep Mem | awk -F"

#!/bin/bash # Concatenate two passwords files. The resulting will contain entries of the first file with UID < 500 and that of second with UID > 500 DATE=`date +%d.%m.%Y` TIME=`date +%H.%M.%S` echo Name of File 1 read f1 echo Name of File 2 read f2 echo Name for New file read newfile mv $newfile $newfile.bak.$DATE.$TIME ## Manipulate first file count=`cat $f1 | cut -f3 -d : | sort -n | wc -l` h=1 while [ "$count" -ge "$h" ] do { id=`head -$h $f1 | tail -1 | cut -f3 -d:` if [ $id -lt "500" ] then { head -$h $f1 | tail -1 >> $newfile } fi h=$[$h + 1 ] } done ## file 2 count=`cat $f2 | cut -f3 -d : | sort -n | wc -l` count=$(`expr 'cat count'`) h=1 while [ "$count" -ge "$h" ] do { id=`head -$h $f2 | tail -1 | cut -f3 -d:` if [ $id -gt "499" ] then { username=`head -$h $f2 | tail -1 | cut -f1 -d:` grep $username: $newfile if

#!/bin/bash # Change the GID of a Group and make it effective for all the members in /etc/passwd pwfile=/etc/passwd grpfile=/etc/group DATE=`date +%d.%b.%Y` TIME=`date +%H.%M.%S` echo Creating backups $pwfile.$DATE.$TIME and $grpfile.$DATE.$TIME cat $pwfile > $pwfile.$DATE.$TIME cat $grpfile > $grpfile.$DATE.$TIME echo Enter group name read gname cgid=`grep $gname $grpfile | cut -f3 -d:` username_s=`cat $pwfile | grep $cgid | cut -f1 -d:` echo Following users will be affected echo "##############" echo $username_s echo "##############" echo Enter new GID read ngid ## Change the GID of the group groupmod -g $ngid $gname ## Change GID(s) in passwd file uidc=`grep $cgid $pwfile | cut -f3 -d: | wc -l` uidh=1 while [ "$uidc" -ge "$uidh" ] do { id=`head -$uidh uid | tail -1` sed 's/'$id':'$cgid'/'$id':'$ngid'/g' $pwfile > $ cat $ > $pwfile uidh=$[$uidh + 1 ] } done

#!/bin/bash ## BASH Script to Run any System command ##### ## Script should be initialized as ./ arg1 arg2 arg3,.... ## echo "Commands with spaces should be supplied as \`COMMAND OPTIONS\`." ## echo "For example "./ \`mkdir test\` \`chmod 777 test\`"" for i in `$*` do #sudo - u root $i ## You can sudo if you are not root $i done

#!/usr/bin/env bash ## Ping all machines in a Network PING="$(which ping) -c 1 -W 1" echo "Enter Subnet(eg:192.168.0)" read Subnet echo "Do you want to PING the entire network or a RANGE of IPs ? Enter your choice" echo 1. Ping Entire Network echo 2. Ping a RANGE read choice if [ $choice = 1 ]; then { echo Pinging..... for((i=1;i<255;i++)); do ${PING} ${Subnet}.${i} > /dev/null 2> /dev/null if [ $? -eq 0 ]; then echo -e "${Subnet}.${i} is up" fi done } fi if [ $choice = 2 ]; then { echo Enter the Starting IP of Range read a echo Enter the Last IP of Range read b echo Pinging..... for((i=$a;i<$b;i++)); do ${PING} ${Subnet}.${i} > /dev/null 2> /dev/null if [ $? -eq 0 ]; then echo -e "${Subnet}.${i} is up" fi done } fi exit 0

Starting X11 VNC in Linux

Create vnc passwd x11vnc -storepasswd Use authentication while connecting x11vnc -rfbauth ~/.vnc/passwd Keep the VNC Session after each login and logout x11vnc -forever Don't use shm of X if you have problems in display x11vnc -noshm So the final command is x11vnc -noshm -forever -rfbauth ~/.vnc/passwd

Disabling Caps lock in Linux

Master Your Linux Keyboard (And Fix Caps Lock Forever) Exorcising Caps Lock Want to get rid of the evil caps lock key without mutilating your keyboard? Want to give those silly Windows keys useful jobs, or put all those extra multi-media keys to work? Want to become a powerhouse keyboarding commando? Then come along and join the fun, because Linux has all kinds of good tools for taming wayward keyboards and increasing your efficiency. In this two-part series we're going to use xmodmap, XBindKeys, and KeyTouch to create custom keybindings for launching applications and running commands. The placement of the caps lock key is a demonstration of malicious cunning. It's above the shift key and it's usually oversized, so it's way too easy to hit it when you don't want to, which for me is all the time. On a case-sensitive operating system it's not all that useful anyway. Unhappy users often resort to remedies like prying it off entirely or covering it with duct tap

Remove LAME Logging and Version Exposure in BIND

Got lame server errors? Are you exposing your bind version? Are lame-server errors filling up your logs? Are you letting bind send its version out to potential attackers? You can fix these issues with some simple changes. Simple Bind Configuration Changes Lame Server Errors If you look in your message logs, you may see an error about a "lame server". A lame server is when the NS record for a domain specifies a server that is not authoritative for the domain. For example, the NS record for may list as one of its nameserver; however, if you actually query, the nameserver does not answer as an authoritative server. The latter is do to a mis-configuration of that nameserver not yours. Lame servers are increasingly common as more and more people run their own DNS -- often with improper configurations. Errors will look something like this in your messages log: lame server resolving '' (in ''?) :

Display Problem in SUSE 10 with Matrox G400 Graphics Card and USB Mouse

  After installing SUSE 10.0 Display was not working Graphics Card : Matrox G 400 Monitor : Samsung SyncMaster 594 MG 1. I logged into runlevel 3 and tried to fire up X11 systemp5:~ # startx xauth: creating new authority file /root/.serverauth.8991 X Window System Version 6.9.0 Release Date: 21 December 2005 X Protocol Version 11, Revision 0, Release 6.9 Build Operating System: SuSE Linux [ELF] SuSE Current Operating System: Linux systemp5 #1 SMP Mon Jul 3 18:25:39 UTC 2006 ppc64 Build Date: 17 June 2006 Before reporting problems, check http://wiki.X.Org to make sure that you have the latest version. Module Loader present Markers: (--) probed, (**) from config file, (==) default setting, (++) from command line, (!!) notice, (II) informational, (WW) warning, (EE) error, (NI) not implemented, (??) unknown. (==) Log file: "/var/log/Xorg.0.log", Time: Fri Jul 13 18:41:41 2007 (==) Using config file: "/etc/X11/xorg.conf" (EE) No device