<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>wp &#124; anoopdotnet &#187; linux</title>
	<atom:link href="http://wp.anoop.net/tag/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://wp.anoop.net</link>
	<description>yet another meaningless wordpress blog</description>
	<lastBuildDate>Mon, 06 Feb 2012 08:47:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com" />
	<atom:link rel="hub" href="http://superfeedr.com/hubbub" />
			<item>
		<title>Configuring CentOS 5.5 to authenticate users against Windows 2008 R2 Active Directory</title>
		<link>http://wp.anoop.net/2011/01/configuring-centos-5-5-to-authenticate-users-against-windows-2008-r2-active-directory/</link>
		<comments>http://wp.anoop.net/2011/01/configuring-centos-5-5-to-authenticate-users-against-windows-2008-r2-active-directory/#comments</comments>
		<pubDate>Wed, 26 Jan 2011 19:51:17 +0000</pubDate>
		<dc:creator>Anoop</dc:creator>
				<category><![CDATA[Geekdom]]></category>
		<category><![CDATA[Meaningless]]></category>
		<category><![CDATA[Technobabble]]></category>
		<category><![CDATA[2008 R2]]></category>
		<category><![CDATA[access.conf]]></category>
		<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[authconfig]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[PAM]]></category>
		<category><![CDATA[samba]]></category>
		<category><![CDATA[winbind]]></category>

		<guid isPermaLink="false">http://wp.anoop.net/?p=5142</guid>
		<description><![CDATA[We do this on a daily basis and sometimes this can be a pretty daunting task. For that reason, I put this article together based on documentation I&#8217;ve written for work. Please let me know in the comments if you run into any issues. The benefit of using something like AD for authentication is that [...]]]></description>
			<content:encoded><![CDATA[<p>We do this on a daily basis and sometimes this can be a pretty daunting task. For that reason, I put this article together based on documentation I&#8217;ve written for work. Please let me know in the comments if you run into any issues.</p>
<p>The benefit of using something like AD for authentication is that users are less likely to share passwords with each other for one off generic accounts created on boxes as well as easier account management.</p>
<p>Start by installing samba3x packages for your respective architecture</p>
<p><code><br />
yum install samba3x-winbind.x86_64<br />
</code></p>
<p>This will install winbind and any other dependencies.</p>
<p>Next, verify your /etc/hosts and /etc/resolv.conf and make sure it&#8217;s correct. Hosts should not have something like </p>
<p><code><br />
127.0.0.1 FQDN_OF_HOST localhost.localdomain localhost<br />
</code></p>
<p>it should be</p>
<p><code><br />
127.0.0.1 localhost.localdomain localhost<br />
REAL.IP.OF.HOST FQDN_OF HOST HOSTNAME<br />
</code></p>
<p>Next, check the date and time and make sure that&#8217;s correct and extremely close to the time on the server. </p>
<p>Next, run this command to add the host to the domain, configure samba, etc.</p>
<p><code><br />
/usr/sbin/authconfig-tui \<br />
 --enablewinbind \<br />
 --enablewinbindauth \<br />
 --enablemkhomedir \<br />
 --enablepamaccess \<br />
 --enablelocauthorize \<br />
 --smbsecurity=ads \<br />
 --smbrealm=DOMAIN.EXTENSION \<br />
 --smbworkgroup=DOMAIN \<br />
 --smbservers=DOMAINCONTROLLER1.DOMAIN.EXT,DOMAINCONTROLLER2.DOMAIN.EXT<br />
 --winbindtemplatehomedir="/home/%U" \<br />
 --winbindtemplateshell="/bin/bash" \<br />
 --enablewinbindusedefaultdomain \<br />
 --kickstart \<br />
 --winbindjoin=ADMINISTRATORACCOUNTNAME<br />
</code></p>
<p>Provide your password for the account above and watch the error messages that appear. This command will also restart winbind for you.</p>
<p>Ensure that it&#8217;s still running with</p>
<p><code><br />
service winbind status<br />
</code></p>
<p>or look for errors in the log files. Possibly /var/log/messages or /var/log/samba/wb-DOMAIN.log</p>
<p>If that&#8217;s working, you should be able to login now over ssh</p>
<p><code><br />
ssh username@host<br />
</code></p>
<p>Access Controls</p>
<p>You can control which groups/users can login from /etc/security/access.conf. The &#8221; &#8211;enablepamaccess&#8221; instructed PAM to look at access.conf whenever anyone tries to login. Watch for spaces in the group/usernames. It doesn&#8217;t work as well</p>
<p><code><br />
+ : GROUP_NAME or USER_NAME : IPs or ttys or ALL<br />
- : ALL : ALL<br />
</code></p>
<p>+ says that a user can login.<br />
- says that a user cannot. The second line says deny everyone.</p>
<p>Sudo privileges</p>
<p>You can use the same group above to setup sudo privileges as well using &#8216;visudo&#8217; as root</p>
<p>NOTE: these instructions may differ a bit if you&#8217;re trying to login with an account in a subdomain.<br />
NOTE: You may or may not want to setup DNS for this host in AD prior to joining the domain. I recommend doing it prior to. Creating a computer account for it is not necessary prior to joining.</p>
]]></content:encoded>
			<wfw:commentRss>http://wp.anoop.net/2011/01/configuring-centos-5-5-to-authenticate-users-against-windows-2008-r2-active-directory/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>modify system keepalive times in linux</title>
		<link>http://wp.anoop.net/2010/11/modify-system-keepalive-times-in-linux/</link>
		<comments>http://wp.anoop.net/2010/11/modify-system-keepalive-times-in-linux/#comments</comments>
		<pubDate>Tue, 16 Nov 2010 16:15:45 +0000</pubDate>
		<dc:creator>Anoop</dc:creator>
				<category><![CDATA[Meaningless]]></category>
		<category><![CDATA[administration]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[netstat]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[tcp]]></category>

		<guid isPermaLink="false">http://wp.anoop.net/?p=196</guid>
		<description><![CDATA[Because I always forget how. In any enterprise level application environment, you&#8217;ll find that your tiers are segregated by a firewall. In some cases, you may see this type of architecture FIREWALL -&#62; WEB -&#62; FIREWALL -&#62; APP -&#62; FIREWALL -&#62; DB or even FIREWALL -&#62; WEB -&#62; FIREWALL -&#62; APP/DB In both designs, which [...]]]></description>
			<content:encoded><![CDATA[<p>Because I always forget how.</p>
<p>In any enterprise level application environment, you&#8217;ll find that your tiers are segregated by a firewall.</p>
<p>In some cases, you may see this type of architecture</p>
<p>FIREWALL -&gt; WEB -&gt; FIREWALL -&gt; APP -&gt; FIREWALL -&gt; DB</p>
<p>or even</p>
<p>FIREWALL -&gt; WEB -&gt; FIREWALL -&gt; APP/DB</p>
<p>In both designs, which are somewhat similar, you may potentially run into keepalive issues.</p>
<p>Keepalives are essentially messages sent between two devices on a specified interval to verify the state of the connection between them. If a message is not acknowledged by the receiving device, then the transmitting device assumes the connection is down and then will find another way to route data until that connection is re-established (if it does which usually, it doesn&#8217;t)</p>
<p>Keepalives are essential in environments where you&#8217;re using connection pools. Web servers may sometimes use a connection pool to talk to an application server like tomcat or weblogic. Application servers frequently use database connection pools to ensure that the performance is optimal.</p>
<p>Most connection pools will have a keep alive setting so you should leverage that when you can. Some connection pools do not. Mod_weblogic for example doesn&#8217;t have it&#8217;s own keep alive value. It can be enabled or disabled but by default, it will use the system keepalive interval which on RHEL/CentOS systems is set to 7200 seconds (two hours).</p>
<p>To check your current system keepalive settings<br />
<code><br />
# sysctl -a | grep net.ipv4.tcp_keepalive<br />
net.ipv4.tcp_keepalive_intvl = 75<br />
net.ipv4.tcp_keepalive_probes = 9<br />
net.ipv4.tcp_keepalive_time = 7200<br />
</code></p>
<p><strong>net.ipv4.tcp_keepalive_intvl</strong> is the frequency by which keepalive messages are sent.<br />
<strong>net.ipv4.tcp_keepalive_probes</strong> tells your system how many unacknowledged keepalive messages should be ignored before considering the connection to be dead.<br />
<strong>net.ipv4.tcp_keepalive_time</strong> tells your system how long to wait before sending the first keepalive message after the last packet. This is the biggie!</p>
<p>I don&#8217;t understand why 7200 seconds was chosen as a number. In my environment here, the firewall can drop idle connections after one hour and sometimes even less depending on how big the connection table can get (I&#8217;m looking at you checkpoint).</p>
<p>So I normally trim these down so that the keepalive time is less and the number of probes is more. The interval is also reduced by a bit but that&#8217;s not really important. You would normally make these changes on the server that is initiating the connection. A webserver, or an application server. Sometimes a DB server but not always.</p>
<p>in /etc/sysctl.conf, add these lines (or modify them if they&#8217;re already there)</p>
<p><code><br />
net.ipv4.tcp_keepalive_intvl = 60<br />
net.ipv4.tcp_keepalive_probes = 20<br />
net.ipv4.tcp_keepalive_time = 300<br />
</code></p>
<p>To put these settings into effect, run </p>
<p><code><br />
sysctl -p /etc/sysctl.conf<br />
</code></p>
<p>and now retest with sysctl -a</p>
<p>Once set, you will need to restart your webserver or app server so it sees the new settings. This allows you to start with a fresh set of connections that you can actually monitor using netstat.</p>
<p>You should be able to corroborate on both ends of the connection, the ports, state and number of connections which tells you that things are A-OK!</p>
<p>Hope this helps.</p>
]]></content:encoded>
			<wfw:commentRss>http://wp.anoop.net/2010/11/modify-system-keepalive-times-in-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My vim settings</title>
		<link>http://wp.anoop.net/2010/11/my-vim-settings/</link>
		<comments>http://wp.anoop.net/2010/11/my-vim-settings/#comments</comments>
		<pubDate>Tue, 16 Nov 2010 15:44:36 +0000</pubDate>
		<dc:creator>Anoop</dc:creator>
				<category><![CDATA[Meaningless]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[vi]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://wp.anoop.net/?p=2039</guid>
		<description><![CDATA[From time to time, I find some settings for vi on remote systems that really kind of freak me out. The one I found recently was &#8216;incsearch&#8217; so I decided to use this opportunity to note down the settings I use on a daily basis. Hope you find some of these useful. syntax on   [...]]]></description>
			<content:encoded><![CDATA[<p>From time to time, I find some settings for vi on remote systems that really kind of freak me out. The one I found recently was &#8216;incsearch&#8217; so I decided to use this opportunity to note down the settings I use on a daily basis. Hope you find some of these useful.</p>
<p><code><br />
syntax on  <br />
set hlsearch<br />
set incsearch<br />
set ruler<br />
set showmatch<br />
</code></p>
<p><strong>syntax on</strong> is pretty obvious. If you&#8217;re writing code, it&#8217;s pretty smart about highlighting the code so it&#8217;s easier to read. It can be odd at first but I find it really useful and after a while, it becomes second nature.</p>
<p><strong>set hlsearch</strong> highlights your search terms so they&#8217;re easy to see. I like this option a lot. not everyone does. </p>
<p><strong>set incsearch</strong> searches as you type. It&#8217;s new to me so I&#8217;m still getting used to it but I think I can already see some uses for it.</p>
<p><strong>set ruler</strong> shows you where your cursor is at all times. I like this option a lot if only to tell me what line number I&#8217;m on. <strong>set number</strong> will also do this but I also find it irritating because it also interferes with my copy/paste habits.</p>
<p><strong>set showmatch</strong> is really useful if you&#8217;re a coder. If you&#8217;ve got somewhat complicated conditional statements or loops, this feature will show you where brackets match so you can find missing brackets and close the proper blocks.</p>
<p>Hope these help. I&#8217;ll update these as I find more. </p>
]]></content:encoded>
			<wfw:commentRss>http://wp.anoop.net/2010/11/my-vim-settings/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>repos not updating in spacewalk. taskomatic!</title>
		<link>http://wp.anoop.net/2010/11/repos-not-updating-in-spacewalk-taskomatic/</link>
		<comments>http://wp.anoop.net/2010/11/repos-not-updating-in-spacewalk-taskomatic/#comments</comments>
		<pubDate>Sat, 13 Nov 2010 21:42:05 +0000</pubDate>
		<dc:creator>Anoop</dc:creator>
				<category><![CDATA[Geekdom]]></category>
		<category><![CDATA[Meaningless]]></category>
		<category><![CDATA[Technobabble]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[Redhat]]></category>
		<category><![CDATA[repos]]></category>
		<category><![CDATA[rpm]]></category>
		<category><![CDATA[rpms]]></category>
		<category><![CDATA[Spacewalk]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[taskomatic]]></category>

		<guid isPermaLink="false">http://wp.anoop.net/?p=1656</guid>
		<description><![CDATA[Spacewalk, it&#8217;s pretty damn awesome. Or at least, I think it is. It&#8217;s an open source linux systems management solution from Redhat (GPLv2). Once you get spacewalk up and running, you&#8217;ll be amazed by some of the things it does. It can push config files, packages, inventory systems, group them and allow you to work [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://spacewalk.redhat.com">Spacewalk</a>, it&#8217;s pretty damn awesome. Or at least, I think it is. It&#8217;s an open source linux systems management solution from Redhat (GPLv2).</p>
<p>Once you get spacewalk up and running, you&#8217;ll be amazed by some of the things it does. It can push config files, packages, inventory systems, group them and allow you to work exclusively with those groups in a very easy way. That&#8217;s only scratching the surface of what spacewalk is capable of.</p>
<p>I like it because I can setup custom channels where I can push custom software to each of my servers. From time to time though, I notice that the repos don&#8217;t really rebuild automatically. If you look at the &#8220;details&#8221; section of your channel, you&#8217;ll notice something like this</p>
<p><img src="http://wp.anoop.net/wp-content/uploads/2010/11/Screen-shot-2010-11-13-at-2.27.19-PM.png" alt="" width="568" height="110"></p>
<p>The times don&#8217;t match. It probably means that the taskomatic daemon is not running or is running but isn&#8217;t really pulling tasks from the database.</p>
<p>To verify, login to sqlplus and run this query<br />
<code><br />
sqlplus spacewalk/spacewalk@xe</p>
<p>SQL*Plus: Release 10.2.0.4.0 - Production on Sat Nov 13 14:14:00 2010</p>
<p>Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.</p>
<p>Connected to:<br />
Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production</p>
<p>SQL&gt; select * from rhnTaskQueue;</p>
<p>ORG_ID TASK_NAME<br />
---------- ----------------------------------------------------------------<br />
TASK_DATA   PRIORITY EARLIEST<br />
---------- ---------- ---------<br />
1 update_errata_cache_by_channel<br />
143	    0 13-NOV-10</p>
<p>1 update_errata_cache_by_channel<br />
122	    0 12-NOV-10</p>
<p>1 update_errata_cache_by_channel<br />
208	    0 13-NOV-10</p>
<p>ORG_ID TASK_NAME<br />
---------- ----------------------------------------------------------------<br />
TASK_DATA   PRIORITY EARLIEST<br />
---------- ---------- ---------<br />
1 update_errata_cache_by_channel<br />
122	    0 13-NOV-10<br />
</code></p>
<p>Notice how some tasks are older? This table should almost always be empty or only have data for a small period of time as the name suggests.</p>
<p>Restarting taskomatic is as simple as</p>
<p><code><br />
[root@spacewalk init.d]# ./taskomatic stop<br />
Stopping RHN Taskomatic...<br />
Stopped RHN Taskomatic.<br />
[root@spacewalk init.d]# ./taskomatic start<br />
Starting RHN Taskomatic...<br />
</code></p>
<p>Wait about 10 minutes, because that&#8217;s the polling time for taskomatic, and then check the database again. There should be no rows</p>
<p><code><br />
SQL&gt; select * from rhnTaskQueue;</p>
<p>no rows selected<br />
SQL&gt;<br />
</code></p>
<p>Also check the spacewal UI and look for something like this</p>
<p><a href="http://wp.anoop.net/wp-content/uploads/2010/11/Screen-shot-2010-11-13-at-2.55.53-PM1.png"><img title="Screen shot 2010-11-13 at 2.55.53 PM" src="http://wp.anoop.net/wp-content/uploads/2010/11/Screen-shot-2010-11-13-at-2.55.53-PM1.png" alt="" width="566" height="107" /></a></p>
<p>or</p>
<p><a href="http://wp.anoop.net/wp-content/uploads/2010/11/Screen-shot-2010-11-13-at-3.35.53-PM.png"><img src="http://wp.anoop.net/wp-content/uploads/2010/11/Screen-shot-2010-11-13-at-3.35.53-PM.png" alt="" title="Screen shot 2010-11-13 at 3.35.53 PM" width="581" height="105" /></a></p>
<p>Spacewalk is still very much in its infancy but it shows great promise and there is a great community of people who are willing to help and are dedicated to making it a rich and feature full product. Spacewalk 1.1 was released recently and we haven&#8217;t had a chance to upgrade yet but I continue to see great things coming from spacewalk and that makes me happy.</p>
]]></content:encoded>
			<wfw:commentRss>http://wp.anoop.net/2010/11/repos-not-updating-in-spacewalk-taskomatic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Handy mkdir, rm, ls commands with {}</title>
		<link>http://wp.anoop.net/2009/10/handy-mkdir-rm-ls-commands-with/</link>
		<comments>http://wp.anoop.net/2009/10/handy-mkdir-rm-ls-commands-with/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 00:37:24 +0000</pubDate>
		<dc:creator>Anoop</dc:creator>
				<category><![CDATA[Geekdom]]></category>
		<category><![CDATA[Technobabble]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ls]]></category>
		<category><![CDATA[mkdir]]></category>
		<category><![CDATA[rm]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://wp.anoop.net/?p=183</guid>
		<description><![CDATA[I always find these commands handy when working with apache. Part of any VirtualHost config involves making the right directories and you can make your job easier by using curly braces. I suppose you could call it regular expressions. I don&#8217;t actually know the technical terms for it. I know it works in bash which [...]]]></description>
			<content:encoded><![CDATA[<p>I always find these commands handy when working with <a href="http://httpd.apache.org/" target="_blank">apache</a>.</p>
<p>Part of any <a href="http://httpd.apache.org/docs/2.0/vhosts/examples.html" target="_blank">VirtualHost</a> config involves making the right directories and you can make your job easier by using curly braces. I suppose you could call it regular expressions. I don&#8217;t actually know the technical terms for it. I know it works in bash which is what I use on a daily basis.</p>
<p>Learn how to create directories without having to issue multiple mkdir commands. This is a pretty simple one.</p>
<blockquote><p>mkdir -p /path/to/some/vhost/docs</p></blockquote>
<p>This is fairly straight forward. Make the parent directories if they don&#8217;t exist. So if <strong>/path/to/some/vhost/docs</strong> is what you want, and <strong>/path</strong> or any of it&#8217;s children don&#8217;t exist, then it will get created. It&#8217;s a fairly safe command because it intelligently checks before creating directories.</p>
<p>This example is a bit more complicated but it&#8217;s awesomeness will blow you away. I used this when I was making virtualhosts for multiple domains or even sub domains of the same parent.</p>
<blockquote><p>mkdir -p {sub1,sub2,sub3}.domain.com/{docs,logs,cgi-bin}</p>
<p>or</p>
<p>mkdir -p www.{domain1,domain2,domain3}.com/{docs,logs,cgi-bin}</p></blockquote>
<p>that command will create all your directories in the appropriate hierarchy so that you don&#8217;t need to issue multiple mkdir commands. It will create the parent directories for you as well. Here is what it does.</p>
<blockquote><p>$ find .<br />
.<br />
./www.domain1.com<br />
./www.domain1.com/cgi-bin<br />
./www.domain1.com/docs<br />
./www.domain1.com/logs<br />
./www.domain2.com<br />
./www.domain2.com/cgi-bin<br />
./www.domain2.com/docs<br />
./www.domain2.com/logs<br />
./www.domain3.com<br />
./www.domain3.com/cgi-bin<br />
./www.domain3.com/docs<br />
./www.domain3.com/logs</p></blockquote>
<p>You can also do that with ls.</p>
<blockquote><p>$ ls -d www.domain{1,2}*<br />
www.domain1.com    www.domain2.com</p></blockquote>
<p>Or even with rm</p>
<blockquote><p>$ rm -vr www.domain{1,3}*<br />
www.domain1.com/cgi-bin<br />
www.domain1.com/docs<br />
www.domain1.com/logs<br />
www.domain1.com<br />
www.domain3.com/cgi-bin<br />
www.domain3.com/docs<br />
www.domain3.com/logs<br />
www.domain3.com</p></blockquote>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://wp.anoop.net/2009/10/handy-mkdir-rm-ls-commands-with/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>testing identd from the command line (telnet)</title>
		<link>http://wp.anoop.net/2009/07/testing-identd-from-the-command-line-telnet/</link>
		<comments>http://wp.anoop.net/2009/07/testing-identd-from-the-command-line-telnet/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 04:59:06 +0000</pubDate>
		<dc:creator>Anoop</dc:creator>
				<category><![CDATA[Meaningless]]></category>
		<category><![CDATA[Technobabble]]></category>
		<category><![CDATA[identd]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[tcpdump]]></category>
		<category><![CDATA[telnet]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://wp.anoop.net/?p=90</guid>
		<description><![CDATA[You should know that I only recommend doing this on systems that you ABSOLUTELY trust. If you have any doubt what so ever, do NOT continue. I never thought i&#8217;d actually need this but i ended up actually providing it as a solution for securing database accounts. To get this working on CentOS 5, I [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>You should know that I only recommend doing this on systems that you ABSOLUTELY trust. If you have any doubt what so ever, do NOT continue.
</p></blockquote>
<p>I never thought i&#8217;d actually need this but i ended up actually providing it as a solution for securing database accounts.</p>
<p>To get this working on CentOS 5, I had to do the following</p>
<p># yum install xinetd authd</p>
<p>authd is an xinetd service and authd is the RFC 1413 identd service</p>
<p>Out of the box, authd comes a little more secure than I expected. It&#8217;s not bad but it&#8217;s definitely a hindrance for other systems when they don&#8217;t know what to send.</p>
<p>/etc/xinetd.d/auth will come by default with<br />
<code><br />
server_args     = -t60 --xerror --os -E<br />
</code></p>
<p>This tells inetd to expect the &#8216;uname&#8217; instead of &#8216;UNIX&#8217; as the OS name. It&#8217;s great that it offers this option but I don&#8217;t know if all identd clients need to know what OS it is. You can leave it in if you like. Lastly, it tells identd to encrypt the username and then send it. I&#8217;m not sure how many identd clients can handle that.</p>
<p>I changed it to </p>
<p><code><br />
server_args     = -t60 --xerror<br />
</code></p>
<p>start or restart xinetd and you should see 113 listening.</p>
<p>I&#8217;m a lazy guy so I can&#8217;t be bothered to open more than one connection to a server. You can open two if you prefer.</p>
<p>I login and start tcpdump</p>
<p><code><br />
tcpdump -i lo -nn "port 113" &#038;<br />
telnet localhost 113<br />
</code></p>
<p>It should show you distinctly what port two ports are involved in the connection you just made. </p>
<p><em>IP 127.0.0.1.SOURCE_PORT_NUM > 127.0.0.1.113</em></p>
<p>Next type in &#8220;SOURCE_PORT_NUM,113&#8243; and hit Enter. Note that &#8220;SOURCE_PORT&#8221; here is a NUMBER not actually &#8220;SOURCE_PORT&#8221;</p>
<p>Amidst all the messy tcpdump output, you should see a line</p>
<p><em>SOURCE_PORT_NUM , 113 : USERID : UNIX :root</em></p>
<p>That shows you that identd is working properly. At least locally.</p>
<p>So if you ever find any of this useless knowledge helpful, let me know.</p>
<p>Unix/Linux admins are taught to hate identd because it&#8217;s pretty much the least secure protocol but I have to believe that it has a place in an environment that is completely trusted. You don&#8217;t have random users logging in or random accounts being created.</p>
<p>I think the overall advantage here is that you can use this to provide an additional layer of security across your trusted enterprise.</p>
]]></content:encoded>
			<wfw:commentRss>http://wp.anoop.net/2009/07/testing-identd-from-the-command-line-telnet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>is your Linux Fu strong? Harness the power of ‘find’</title>
		<link>http://wp.anoop.net/2009/07/is-your-linux-fu-strong-harness-the-power-of-find/</link>
		<comments>http://wp.anoop.net/2009/07/is-your-linux-fu-strong-harness-the-power-of-find/#comments</comments>
		<pubDate>Fri, 10 Jul 2009 21:26:47 +0000</pubDate>
		<dc:creator>Anoop</dc:creator>
				<category><![CDATA[Technobabble]]></category>
		<category><![CDATA[administration]]></category>
		<category><![CDATA[awk]]></category>
		<category><![CDATA[files]]></category>
		<category><![CDATA[filesystem]]></category>
		<category><![CDATA[find]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[sed]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://wp.anoop.net/?p=43</guid>
		<description><![CDATA[I love find There is no other way to put it. It&#8217;s such a fantastic tool and once you get used to it, you almost never use the sub par &#8220;locate&#8221; utility to find files. Some of my favorite find switches and one liners are listed below. Explanations too. Find all directories in the current [...]]]></description>
			<content:encoded><![CDATA[<p>I love <a href="http://linux.about.com/od/commands/l/blcmdl1_find.htm">find</a></p>
<p>There is no other way to put it. It&#8217;s such a fantastic tool and once you get used to it, you almost never use the sub par &#8220;locate&#8221; utility to find files.</p>
<p>Some of my favorite find switches and one liners are listed below. Explanations too.</p>
<p>Find all directories in the current directory only without going any deeper that start with &#8220;20&#8243;. Note that I have included &#8216;-mindepth 1&#8242; and there is a reason for that. Try excluding it and you&#8217;ll see exactly what I mean.<br />
<code><br />
find ./ -maxdepth 1 -mindepth 1 -type d -name "20*"<br />
</code></p>
<p>Find all files named config.php in this directory and all sub directories. Print the name of the file and run &#8216;ls -al&#8217; on the file. run a grep command for &#8220;string1&#8243; (case insensitive) against the files. I find this command very useful in doing a single replacement across many files. It helps me determine what will change if I run a mass replacement. The &#8220;{}&#8221; at the end is the name of the file that is replaced in the command. Without that, you will get an error.<br />
<code><br />
find ./ -name "config.php" -ls -print -exec grep -i string1 {} \;<br />
</code></p>
<p>Now I can find those same files and then run a sed command that will replace all occurrences of string1 with string2. The &#8220;-i&#8221; in this case tells sed to make the change to the file in place without creating a new file. This way you have less to clean up but be careful because there is no backup. If you want to backup the file, use &#8220;-i&#8221; where  is the extension you want the backup file to have. E.g. -i.bak<br />
<code><br />
find ./ -name "config.php" -exec sed -i "s/string1/string2/g" {} \;</code></p>
<p>Another use of exec where you sub {} for the file name allows you to do cool things like back up many different files with the same condition. In this case, anything that is &#8220;config.*&#8221; will be &#8220;config.*.bak&#8221;.<br />
<code><br />
find ./-name "config.*" - exec cp {} {}.bak \;</code></p>
<p>Find any directories that have a no permissions for group and others. This is important if you want to find directories that don&#8217;t have permissions that are needed for users to enter a directory. After this, you can use -exec chmod 755 {} \; to change the permissions appropriately.<br />
<code><br />
find ./ -type d -perm 0700<br />
</code></p>
<p>Find any files that are owned by a particular user. You can also specify &#8220;-group&#8221; to find files by user and group names. I use this to find files owned by &#8220;root&#8221; in home directories and then chown them to the appropriate user.<br />
<code><br />
find ./ -user "username"<br />
</code></p>
<p>The -exec feature in find is perhaps the most valuable aspect of &#8220;find&#8221;. I use it several times a day in combination with <a href="http://www.gnu.org/software/sed/">sed</a> and <a href="http://www.gnu.org/manual/gawk/gawk.html">awk</a> to do all sorts of one liners that would normally need a script.</p>
<p>Don&#8217;t forget that you can do all sorts of really neat things with find, sed, awk if you use regular expressions.</p>
]]></content:encoded>
			<wfw:commentRss>http://wp.anoop.net/2009/07/is-your-linux-fu-strong-harness-the-power-of-find/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to get yesterday&#8217;s date using &#8216;date&#8217; in linux</title>
		<link>http://wp.anoop.net/2009/06/how-to-get-yesterdays-date-using-date-in-linux/</link>
		<comments>http://wp.anoop.net/2009/06/how-to-get-yesterdays-date-using-date-in-linux/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 18:52:15 +0000</pubDate>
		<dc:creator>Anoop</dc:creator>
				<category><![CDATA[Technobabble]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://wp.anoop.net/?p=13</guid>
		<description><![CDATA[A while back, I was asked to come up with a logrotation script. This script would rotate all logs into a tarball and move it somewhere for archival purposes. The problem was that I couldn&#8217;t just rotate today&#8217;s logs because it would be incomplete. I had to intelligently find a way to rotate the previous [...]]]></description>
			<content:encoded><![CDATA[<p>A while back, I was asked to come up with a logrotation script.</p>
<p>This script would rotate all logs into a tarball and move it somewhere for archival purposes.</p>
<p>The problem was that I couldn&#8217;t just rotate today&#8217;s logs because it would be incomplete. I had to intelligently find a way to rotate the previous days logs (which would be complete) and then tar them up.</p>
<p>It turns out that you can do this with the &#8220;date&#8221; command in linux.</p>
<p style="padding-left: 30px;"><code><br />
YESTERDAY=$(date -d "yesterday" '+%Y-%m-%d')<br />
echo $YESTERDAY<br />
</code></p>
<p>This little snippet came in very handy and so I thought would share it.</p>
<p>The whole script is very small actually. Here it is. All you want to do is direct the output to a log file so you can review it later if need be. It&#8217;s chatty but you want chatty when you&#8217;re backing up and deleting log files.</p>
<p style="padding-left: 30px;"><code><br />
#!/bin/bash<br />
if [ $# -lt 3 ];  then<br />
echo "USAGE: backup_logs.sh ORIGINAL FILE-PREFIX- DESTINATION"<br />
exit<br />
fi<br />
# get command line variables<br />
FILE=$2<br />
ORIG=$1<br />
DEST=$3<br />
# get current time for log files.<br />
NOW=$(date)<br />
# get yesterdays date<br />
YESTERDAY=$(date -d "yesterday" '+%Y-%m-%d')<br />
# beginning entry in the log file<br />
echo "$NOW Backing up $FILE from $ORIG for $YESTERDAY to $DEST/$FILE-$YESTERDAY.tgz"<br />
echo "$NOW Command is /bin/tar -zcvf $DEST/$FILE$YESTERDAY.tgz $ORIG/$FILE$YESTERDAY*"<br />
/bin/tar -zcvf $DEST/$FILE$YESTERDAY.tgz $ORIG/$FILE$YESTERDAY*<br />
echo $NOW Done backing up logfiles to $DEST/$FILE-$YESTERDAY.tgz<br />
echo "$NOW removing files that were backed up."<br />
/bin/rm -vf $ORIG/$FILE$YESTERDAY*<br />
echo "$NOW done removing backuped up files."<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://wp.anoop.net/2009/06/how-to-get-yesterdays-date-using-date-in-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

