<?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>[boomshadow.net~]# &#187; Tools-Utilities</title>
	<atom:link href="http://boomshadow.net/category/tools-utilities/feed/" rel="self" type="application/rss+xml" />
	<link>http://boomshadow.net</link>
	<description>Tech, filmmaking, &#38; thoughts.</description>
	<lastBuildDate>Sat, 13 Apr 2013 12:45:33 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>SSH Key Authentication</title>
		<link>http://boomshadow.net/tools-utilities/ssh-key-authentication/</link>
		<comments>http://boomshadow.net/tools-utilities/ssh-key-authentication/#comments</comments>
		<pubDate>Fri, 11 May 2012 15:00:34 +0000</pubDate>
		<dc:creator>Jacob "Boom Shadow" Tirey</dc:creator>
				<category><![CDATA[Tools-Utilities]]></category>
		<category><![CDATA[cpanel]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[key]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://boomshadow.net/?p=915</guid>
		<description><![CDATA[If you have ever wanted to log into SSH with key authentication on your cPanel server rather than password authentication, this article will show you how.]]></description>
				<content:encoded><![CDATA[<p><a href="http://boomshadow.net/wp-content/uploads/2012/05/3d-keys.gif"><img src="http://boomshadow.net/wp-content/uploads/2012/05/3d-keys-150x150.gif" alt="" title="3D Keys" width="150" height="150" class="alignleft size-thumbnail wp-image-930" /></a>One of the critical parts of administrating your server is by logging into SSH as root. With the command line, you can roll up the proverbial sleeves and really dig in: installing software, changing system configuration, investigating problems, etc&#8230; But what about the security concern of logging into a system with all that control and you&#8217;ve only got a password? This is where Key authentication comes in.</p>
<p>Instead of typing in a password, you can generate an encrypted key pair that is used to authenticate you when logging in. The server will look to see if you have this key file on your computer instead. There is a good little overview of the process from cPanel <a href="http://www.cpanel.net/2007/06/using-public-key-authentication-for-ssh-and-transfers.html" target="_blank">here</a>.</p>
<p>This is a great security measure to implement as it allows you to control which systems can access your server. You can also turn password authentication off and your server will be immune to SSH password attacks. This is major step in security hardening and is highly advised.</p>
<h4>Generating the Keys</h4>
<p>To get started, we are going to need to generate a Key pair on your computer (the public and private key). Load up a terminal and run:</p>
<pre>ssh-keygen -t rsa -b 4096</pre>
<p>It will ask where to save the key file. You can leave it at the default location.</p>
<pre class="brush: ; gutter: false;">
Enter file in which to save the key (/Users/jacob/.ssh/id_rsa): id_rsa
</pre>
<p>Next, it will ask for a passphrase.</p>
<pre class="brush: ; gutter: false;">
Enter passphrase (empty for no passphrase):
</pre>
<p>You can leave this blank if you simply want to leave the private key unlocked. This will make logins quite easy as you won&#8217;t have to type anything in and you will &#8220;auto-login&#8221;. However, for an added layer of security, you can set a password to unlock the private key.</p>
<p>It will ask for the passphrase again. Press ener to leave it blank.</p>
<pre class="brush: ; gutter: false;">
Enter same passphrase again:
</pre>
<p>Finally, it will output confirmation of the keys&#8217; location and the fingerprint:</p>
<pre class="brush: ; gutter: false;">
Your identification has been saved in id_rsa.
Your public key has been saved in id_rsa.pub.
The key fingerprint is:
7b:2d:25:c2:2e:2a:1a:ea:76:3a:96:ed:1a:29:8b:9b
</pre>
<h4>Copying the Public Key</h4>
<p>Now you will need to get a copy of the public key you just made. Simply cat the file:</p>
<pre class="brush: ; gutter: false;">
cat ~/.ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAwsIU0uzZVu6uf2GgM9B4Z7sNn5jMEs1yDrjvdI4ChXrkADegfltv0CESXknoU4NI57Dw0kyc3eJ7bADyI0uBH0PxDTZAOSKKyogsnRtgXbFLKHXpOOyiG51M9tjobObNo6SDmzbeVD5GzlmnPpgMMUoqpjYe3P45g6ouw/3Gcwt+BwZG5loSknk9lkndbyTmhb5gc4jAMYIQ3QAWCtPES04jyUWMFZ/oUn5bMaTKG2aHCgn0wTYR8ih3Ewptp0XV2z77WUmGnJV6t5wE1kZqltdh52aHTeRLoYAFoFWPt4i6sUjhFPufjeyxdXsSR5dsdqUFZRX1dsCJkGWZzfLb3w== user@computer.local
</pre>
<h4>Importing Key to the Server</h4>
<p>We&#8217;ll add the key to the server and authorize it (we have to tell the server that this particular key is allowed to access the server). Log into WHM and navigate to: Main >> Security Center >> Manage root’s SSH Keys. Click on &#8216;Import Key&#8217;</p>
<p><a href="http://boomshadow.net/wp-content/uploads/2012/05/Import-key.gif"><img src="http://boomshadow.net/wp-content/uploads/2012/05/Import-key-300x295.gif" alt="" title="Import SSH Key" width="300" height="295" class="aligncenter size-medium wp-image-920" /></a></p>
<p>On the next screen, you will want to scroll down and look for the last box that says &#8220;Paste the Public Key in this box:&#8221;. Paste your public key into that box. Leave the other boxes blank. It will automatically fill in the name. Hit &#8216;Import&#8217;.</p>
<p><a href="http://boomshadow.net/wp-content/uploads/2012/05/Paste-key.gif"><img src="http://boomshadow.net/wp-content/uploads/2012/05/Paste-key-240x300.gif" alt="" title="Paste the Key" width="240" height="300" class="aligncenter size-medium wp-image-923" /></a></p>
<p>On the next screen it will tell you the import was successful. Click on &#8220;Return to SSH Manager&#8221;. This brings you back to the Key management screen. You will click on &#8220;Manage Authorization&#8221;</p>
<p><a href="http://boomshadow.net/wp-content/uploads/2012/05/manage-authorization.gif"><img src="http://boomshadow.net/wp-content/uploads/2012/05/manage-authorization-300x194.gif" alt="" title="Manage Authorization" width="300" height="194" class="aligncenter size-medium wp-image-924" /></a></p>
<p>Finally, click on the button for &#8220;Authorize&#8221;.</p>
<p><a href="http://boomshadow.net/wp-content/uploads/2012/05/authorize-key.gif"><img src="http://boomshadow.net/wp-content/uploads/2012/05/authorize-key-300x136.gif" alt="" title="Authorize Key" width="300" height="136" class="aligncenter size-medium wp-image-925" /></a></p>
<p>You are done! Try logging into SSH and it should look for your key.</p>
<h4>Server Hardening &#8211; Disable Password Authentication</h4>
<p>Now, you can take your security one step further and completely disable password logins for SSH. You will have no more fears of hackers trying to guess your SSH passwords.</p>
<p>To set this up, while still in WHM, navigate to: Main >> Security Center >> SSH Password Authorization Tweak. Click on &#8220;Disable Password Auth&#8221;</p>
<p><a href="http://boomshadow.net/wp-content/uploads/2012/05/disable-password.gif"><img src="http://boomshadow.net/wp-content/uploads/2012/05/disable-password-300x119.gif" alt="" title="Disable Password Authentication" width="300" height="119" class="aligncenter size-medium wp-image-927" /></a></p>
<p>And that is that. As cPanel so eloquently puts it: Now, sit back and relax as hackers will no longer be able to gain ssh access through password cracking. They will, instead, receive errors like:</p>
<pre class="brush: ; gutter: false;">
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
</pre>
<h2>Notes</h2>
<p>The encryption method used for this was &#8216;RSA&#8217;. RSA is natively implemented in more places (it is the default key type on most generators and commercial RSA certificates are much more widely deployed) and it defaults to 2048 bit key length. At the time of this writing, for DSA to be compliant, it has to be exactly 1024 bit, which is less secure. The general consensus is that both DSA and RSA are pretty equal in security quality and speed when used merely for authentication. Either you choose will be fine as long as you follow safe security practices: use higher bit key encryption, only use SSH v2, keep your software up to date, and protect your private key. </p>
<p>References:<br />
<a href="http://security.stackexchange.com/questions/5096/rsa-vs-dsa-for-ssh-authentication-keys/5100#5100" target="_blank">http://security.stackexchange.com/questions/5096/rsa-vs-dsa-for-ssh-authentication-keys/5100#5100</a></p>
<p><a href="http://encryptme.wordpress.com/2011/05/25/ssh-keys-rsa-vs-dsa/" target="_blank">http://encryptme.wordpress.com/2011/05/25/ssh-keys-rsa-vs-dsa/</a></p>
<p><a href="http://www.linuxforums.org/forum/security/48093-openssh-user-host-authentication-rsa-versus-dsa-provides-stronger-security.html#post498142" target="_blank">http://www.linuxforums.org/forum/security/48093-openssh-user-host-authentication-rsa-versus-dsa-provides-stronger-security.html#post498142</a></p>
<h2>Note about this article</h2>
<p>This article is one I had written for the ServInt blog as part of the &#8216;Tech bench&#8217; series. You can view it on the <a href="http://blog.servint.net/2012/05/11/the-tech-bench-ssl-key-authentication/" title="ServInt Blog" target="_blank">ServInt blog here</a>. They are using my article with my permission.</p>
]]></content:encoded>
			<wfw:commentRss>http://boomshadow.net/tools-utilities/ssh-key-authentication/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Hosts file modification</title>
		<link>http://boomshadow.net/tools-utilities/hosts-mod/</link>
		<comments>http://boomshadow.net/tools-utilities/hosts-mod/#comments</comments>
		<pubDate>Thu, 05 Apr 2012 18:00:57 +0000</pubDate>
		<dc:creator>Jacob "Boom Shadow" Tirey</dc:creator>
				<category><![CDATA[Tools-Utilities]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[terminal]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://boomshadow.net/?p=771</guid>
		<description><![CDATA[Need help modifying your hosts file so you can test your domain? This utility will show you how to modify your computer's hosts file on any operating system: Linux, Mac, or Windows. The page will detect your OS and print instructions specific to you.]]></description>
				<content:encoded><![CDATA[<p># Updates<br />
# <h7 class="updated">09/21/12</h7> &#8211; Revised Windows instructions to properly open Notepad with Admin rights<br />
# 05/20/12 &#8211; Updated OS detection interface</p>
<p><a href="http://boomshadow.net/wp-content/uploads/2012/03/linux-mac-windows.gif"><img class="alignleft size-full wp-image-825" title="Linux Mac and Windows" src="http://boomshadow.net/wp-content/uploads/2012/03/linux-mac-windows.gif" alt="Linux, Mac, and Windows logo" width="100" height="100" /></a><br />
When you visit a website, your computer has to look up the IP address for that site so that it knows where to go. Before your computer goes out to find the IP address, it will first check the local hosts file. The hosts file on your computer is a plain text file that contains a map of hostnames to IP addresses.</p>
<p>If you wanted to override the actual IP address of a site, you could &#8216;trick&#8217; your computer by manually setting the IP address for a website and telling it where to go to find a website. This is extremely common and useful to do when testing a website that you are transferring to a new serer.</p>
<p>Imagine you are moving your website to a new powerful system. However, you do not want the existing site to go down; you want it to stay up at all times. You can copy the site and all it&#8217;s contents to the new server, but how do you test it without changing the DNS? You want to make sure that the site is going to work on the new server without any errors before you start sending traffic over to it. The best method to do this is to change your computer&#8217;s hosts file. You can send only your computer to the new server without affecting the live site at all.</p>
<p>The process for modifying the hosts file varies depending on what Operating System you are running. With the help of my good buddy Colin, we have developed a handy utility that will tell you how to modify your hosts file no matter you are running Linux, Mac, or Windows. The following section of this page will detect your OS and print instruction specific to you. Hope you enjoy!</p>
[hostsfile]
<h2>Note about this article</h2>
<p>This utility is one I had written for the ServInt blog as part of the &#8216;Tech bench&#8217; series. You can view it on the <a title="ServInt Blog" href="http://blog.servint.net/2012/04/20/the-tech-bench-hosts-file-modification/" target="_blank">ServInt blog here</a>. They are using my article with my permission.</p>
]]></content:encoded>
			<wfw:commentRss>http://boomshadow.net/tools-utilities/hosts-mod/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Auto fix for file permissions and ownership</title>
		<link>http://boomshadow.net/tech/fixes/fixperms-script/</link>
		<comments>http://boomshadow.net/tech/fixes/fixperms-script/#comments</comments>
		<pubDate>Sat, 22 Oct 2011 08:03:16 +0000</pubDate>
		<dc:creator>Jacob "Boom Shadow" Tirey</dc:creator>
				<category><![CDATA[Fixes]]></category>
		<category><![CDATA[Tools-Utilities]]></category>
		<category><![CDATA[403 forbidden]]></category>
		<category><![CDATA[500 internal server error]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[fastcgi]]></category>
		<category><![CDATA[fcgi]]></category>
		<category><![CDATA[fixperms]]></category>
		<category><![CDATA[ownership]]></category>
		<category><![CDATA[permissions]]></category>
		<category><![CDATA[suphp]]></category>

		<guid isPermaLink="false">http://boomshadow.net/?p=570</guid>
		<description><![CDATA[Ever get a '403 Forbidden error' or a '500 internal server error' due to bad permissions? It happens. Here is an easy automated fix for that!]]></description>
				<content:encoded><![CDATA[<p><br />
<div class="scdom-wrapper"><div class="scdom-notification"><div class="scdom-notification-information"><h6 class="scdom-notification-title">Updated: 03/30/13</h6><div class="scdom-notification-content"><p><a href="#changelog">Click here to see the Change Log</a></p>
</div></div></div></div>
<p><a href="http://boomshadow.net/wp-content/uploads/2011/10/fixperms.gif"><img src="http://boomshadow.net/wp-content/uploads/2011/10/fixperms-150x150.gif" alt="Fixperms, fix permissions" title="fixperms" width="150" height="150" class="alignleft size-thumbnail wp-image-587" /></a></p>
<p>
suPHP and FastCGI require files and folders to have a specific set of permissions/ownership from other handlers. Without these permissions set you will see a lot of errors such as: &#8220;403 Forbidden&#8221;, &#8220;500 Internal Server Error&#8221;, or simply generic errors that commonly have the word &#8216;permission&#8217; in them.</p>

<p>It can be very time consuming to track down and check file permissions across a whole server. Luckily, fixing this on a cPanel box can be scripted. This gives us a quick and very easy script you can wget to any cPanel server. Simply run the &#8216;fixperms&#8217; script, specifying the user (or all users), sit back and watch the errors just disappear. I use this script daily in my administrative work and it never fails! It is simply a good generic fix if you cannot find your permission problem, or if you have just switched your handler and need a quick way to change every user account on the server.</p>
<p>Credit does not go to me though. A good buddy of mine, <a href="http://colinrd.com/" target="_blank">Colin R.</a>, wrote this for ServInt. Thanks Colin for making lives easier!</p>
<p><strong>***WARNING!!!</strong> The following scripts are intended for <strong>suPHP</strong> or <strong>FastCGI</strong>. If you are not running either of these two handlers, be aware of how the script works and the changes it makes. The code is posted at the end of this article; please take a moment to review it. For example, when running DSO, some files/folders may need to be owned by &#8216;nobody&#8217; in order to function properly (such as in certain WordPress functions or PHP based file uploads). Running this fixperms will set everything to USER:USER. Under DSO, this is potentially not a problem for most sites, except a few core functions may not work. You can always change specific files later if any errors pop up.</p>
<p>Furthermore, it is highly recommended that you run a full backup of your server before running fixperms or any other script that makes changes to multiple files.</p>
<p>This &#8216;fixperms&#8217; script is intended for cPanel servers only. It is dependent on cPanel&#8217;s internal scripts and file structure. If you&#8217;re on anything else (such as Plesk), it will simply fail to run. It won&#8217;t be able to do anything.</p>
<p>I know that criteria sounds very specific, but those two conditions cover a large number of the reseller/multi-user hosting servers out there. And that&#8217;s really the crowd that would benefit most from an automated script such as this.</p>
<p>That all being said, if you are running suPHP or FastCGI, press on; for this script will work flawlessly for you and potentially save you a TON of time &#038; hassle.</p>
<h2>Fixperms &#8211; for one single user</h2>
<p>To use the fixperms script, simply log into your server as root, wget the file from our server, then run it. Type in the cPanel username and it will run only for that particular account.</p>
<p>It does not matter which directory you are in when you run fixperms. You can be in the user’s home directory, the server root, etc. The script will not affect anything outside of the particular user’s folder.</p>
<pre>
wget boomshadow.net/tools-utils/fixperms.sh
sh ./fixperms.sh -a USER-NAME
</pre>
<h2>Fixperms &#8211; for all of the users</h2>
<p>If you would like fix the permissions for every user on your cPanel server, simply use the &#8216;-all&#8217; option:</p>
<pre>
wget boomshadow.net/tools-utils/fixperms.sh
sh ./fixperms.sh -all
</pre>
<h4>Verbosity of Fixperms</h2>
<p>By default, the script runs in a &#8216;quiet&#8217; mode with minimal display. However, if you&#8217;re like me, you may want to see everything that is happening. You can turn on verbosity and have the script print to the screen everything that is being changed. I find this extremely useful when fixing large accounts that have many files. You can watch the changes as a sort of &#8216;progress bar&#8217; of completion. The &#8216;-v&#8217; option can be used per account or with all accounts.</p>
<p>For one single account:</p>
<pre>
sh ./fixperms.sh -v -a USER-NAME
</pre>
<p>For all accounts:</p>
<pre>
sh ./fixperms.sh -v -all
</pre>

<h2>The code itself, what&#8217;s in it?</h2>
<p>I understand that it can be a big security concern to simply &#8216;wget&#8217; a file from a website you found, and then blindly run it on a production server. I understand your fear; I&#8217;m right there with you and would likewise be leery and very hesitant. However, I promise you that there is no malicious intent in this or anything you will ever get from my site. I have pasted the content of the file below for your examination.</p>
<div class="scdom-wrapper"><div class="scdom-accordions-widget"><div class="scdom-accordions-title"><h6 class="scdom-accordions-trigger-green"><a href="#">Click here to see the code:</a></h6></div><div class="scdom-accordions-content-green"><pre>
#! /bin/bash
#
# Date: Jan 26th 2012
# Author: Colin R.
# Revisions: Jacob "Boom Shadow" Tirey (boomshadow.net)
# Fixperms script for ServInt
#
#   Fixperms script for cPanel servers running suPHP or FastCGI.
#   Written for ServInt.net
#   Copyright (C) 2012 Colin R.
#
#   This program is free software: you can redistribute it and/or modify
#   it under the terms of the GNU General Public License as published by
#   the Free Software Foundation, either version 3 of the License, or
#   (at your option) any later version.
#
#   This program is distributed in the hope that it will be useful,
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#   GNU General Public License for more details. http://www.gnu.org/licenses/


# Set verbose to null
verbose=""


#Print the help text
helptext () {
    tput bold
    tput setaf 2
    echo "Fix perms script help:"
    echo "Sets file/directory permissions to match suPHP and FastCGI schemes"
    echo "USAGE: fixperms [options] -a account_name"
    echo "-------"
    echo "Options:"
    echo "-h or --help: print this screen and exit"
    echo "-v: verbose output"
    echo "-all: run on all cPanel accounts"
    echo "--account or -a: specify a cPanel account"
    tput sgr0
    exit 0
}

# Main workhorse, fix perms per account passed to it
fixperms () {

  #Get account from what is passed to the function
  account=$1

  #Check account against cPanel users file
  if ! grep $account /var/cpanel/users/*
  then
    tput bold
    tput setaf 1
    echo "Invalid cPanel account"
    tput sgr0
    exit 0
  fi

  #Make sure account isn't blank
  if [ -z $account ]
  then
    tput bold
    tput setaf 1
    echo "Need an account name!"
    tput sgr0
    helptext
  #Else, start doing work
  else
    tput bold
    tput setaf 4
    echo "Fixing perms for $account:"
    tput setaf 3
    echo "------------------------"
    tput setaf 4
    echo "Fixing website files...."
    tput sgr0
    #Fix individual files in public_html
    find /home/$account/public_html -type d -exec chmod $verbose 755 {} \;
    find /home/$account/public_html -type f | xargs -d$'\n' -r chmod $verbose 644
    find /home/$account/public_html -name '*.cgi' -o -name '*.pl' | xargs -r chmod $verbose 755
    chown $verbose -R $account:$account /home/$account/public_html/*
    find /home/$account/* -name .htaccess -exec chown $verbose $account.$account {} \;

    tput bold
    tput setaf 4
    echo "Fixing public_html...."
    tput sgr0
    #Fix perms of public_html itself
    chown $verbose $account:nobody /home/$account/public_html
    chmod $verbose 750 /home/$account/public_html

    #Fix subdomains that lie outside of public_html
    tput setaf 3
    tput bold
    echo "------------------------"
    tput setaf 4
    echo "Fixing any domains with a document root outside of public_html...."
    for SUBDOMAIN in $(grep -i document /var/cpanel/userdata/$account/* | awk '{print $2}' | grep home | grep -v public_html)
    do
	tput bold
	tput setaf 4
	echo "Fixing sub/addon domain document root $SUBDOMAIN...."
	tput sgr0
	find $SUBDOMAIN -type d -exec chmod $verbose 755 {} \;
	find $SUBDOMAIN -type f | xargs -d$'\n' -r chmod $verbose 644
  	find $SUBDOMAIN -name '*.cgi' -o -name '*.pl' | xargs -r chmod $verbose 755
    chown $verbose -R $account:$account $SUBDOMAIN
    find $SUBDOMAIN -name .htaccess -exec chown $verbose $account.$account {} \;
    done

	#Finished
    tput bold
    tput setaf 3
    echo "Finished!"
	echo "------------------------"
	printf "\n\n"
    tput sgr0
  fi

  return 0
}

#Parses all users through cPanel's users file
all () {
    cd /var/cpanel/users
    for user in *
    do
	fixperms $user
    done
}

#Main function, switches options passed to it
case "$1" in

    -h) helptext
	;;
    --help) helptext
	    ;;
    -v) verbose="-v"

	case "$2" in

		-all) all
		       ;;
		--account) fixperms "$3"
			   ;;
		-a) fixperms "$3"
		    ;;
		*) tput bold
     		   tput setaf 1
		   echo "Invalid Option!"
		   helptext
		   ;;
	esac
	;;

    -all) all
	  ;;
    --account) fixperms "$2"
      	 	;;
    -a) fixperms "$2"
	;;
    *)
       tput bold
       tput setaf 1
       echo "Invalid Option!"
       helptext
       ;;
esac
</pre>
</div></div></div><div class="scdom-clear-fix">&nbsp;</div>
<p>So there you have it. An effective permissions fix for your cPanel account. When you run this, people will think you&#8217;re a hero! So, go forth and save your users from the evils of site errors!</p>
<h2>Note about this article</h2>
<p>This article is one I had written for the ServInt blog as part of the &#8216;Tech bench&#8217; series. You can view it on the <a href="http://blog.servint.net/2012/01/27/the-tech-bench-a-script-for-fixing-file-permissions/" title="ServInt Blog" target="_blank">ServInt blog here</a>. They are using my article with my permission.</p>
<h2><a name="changelog"></a><a href="#changelog">Change Log:</a></h2>
<div class="scdom-wrapper"><div class="scdom-list"><div class="scdom-list-seven"><ul>
<li><p><h7 class="updated">03/30/13</h7> | Added support for Subdomains and Addon domains that have their document root outside the public_html folder, Cleaned up the output display, Removed the cPanel mail perms script because it essentially does nothing, moved fixperms.sh location to a central &#8216;utilities&#8217; folder (left a 301 redirect for the old location)</p>
</li>
<li><p>01/03/13 | Corrected the inconsistency between using -all and &#8211;all (when employing verbosity)</p>
</li>
<li><p>06/03/12 | Updated warning verbage for DSO</p>
</li>
<li><p>05/10/12 | Bug fix for file names that contain special characters</p>
</li>
<li><p>01/26/12 | New feature rich script written by Colin R.</p>
</li>
</ul></div></div></div>
]]></content:encoded>
			<wfw:commentRss>http://boomshadow.net/tech/fixes/fixperms-script/feed/</wfw:commentRss>
		<slash:comments>51</slash:comments>
		</item>
	</channel>
</rss>
