<?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>dan.forys.co.uk &#187; Linux</title>
	<atom:link href="http://dan.forys.co.uk/category/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://dan.forys.co.uk</link>
	<description>Dan is a web developer in London. He is interested in all things Internet, Linux and Mac.</description>
	<lastBuildDate>Fri, 22 Jan 2010 14:25:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Understanding Linux file permissions</title>
		<link>http://dan.forys.co.uk/understanding-linux-file-permissions/</link>
		<comments>http://dan.forys.co.uk/understanding-linux-file-permissions/#comments</comments>
		<pubDate>Tue, 29 Jul 2008 09:37:20 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[permissions]]></category>

		<guid isPermaLink="false">http://www.danforys.com/?p=29</guid>
		<description><![CDATA[They&#8217;re funny things Linux file permissions &#8211; the moment you think you understand them, you discover some subtle piece of functionality that means you were wrong all-along&#8230; In this three-part article, I give a brief introduction to file and directory permissions, as well as some of the common gotchas. This part shows you how to [...]]]></description>
			<content:encoded><![CDATA[<p>They&#8217;re funny things Linux file permissions &#8211; the moment you think you understand them, you discover some subtle piece of functionality that means you were wrong all-along&#8230;</p>
<p>In this three-part article, I give a brief introduction to file and directory permissions, as well as some of the common gotchas. This part shows you how to interpret permissions on the command line and explains what they mean.</p>
<p><span id="more-29"></span></p>
<p>One of the best ways to get a feel for the permissions, is using the shell. So, if you launch a shell session and type the following: (the &#8220;-l&#8221; means the long-listing format)</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">ls</span> <span style="color: #660033;">-l</span></pre></div></div>

<p>You&#8217;ll see a listing of all the files in your home folder, something like this:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">drwxr-xr-x  <span style="color: #000000;">2</span> dan <span style="color: #c20cb9; font-weight: bold;">users</span>    <span style="color: #000000;">4096</span> <span style="color: #000000;">2007</span>-<span style="color: #000000;">12</span>-<span style="color: #000000;">13</span> <span style="color: #000000;">15</span>:<span style="color: #000000;">34</span> bin
drwx------  <span style="color: #000000;">5</span> dan <span style="color: #c20cb9; font-weight: bold;">users</span>    <span style="color: #000000;">4096</span> <span style="color: #000000;">2008</span>-07-<span style="color: #000000;">25</span> <span style="color: #000000;">15</span>:<span style="color: #000000;">30</span> Desktop
drwx------ <span style="color: #000000;">15</span> dan <span style="color: #c20cb9; font-weight: bold;">users</span>    <span style="color: #000000;">4096</span> <span style="color: #000000;">2008</span>-07-<span style="color: #000000;">18</span> <span style="color: #000000;">10</span>:<span style="color: #000000;">49</span> Documents
drwxr-xr-x  <span style="color: #000000;">2</span> dan <span style="color: #c20cb9; font-weight: bold;">users</span>    <span style="color: #000000;">4096</span> <span style="color: #000000;">2007</span>-<span style="color: #000000;">12</span>-<span style="color: #000000;">13</span> <span style="color: #000000;">11</span>:08 public_html
<span style="color: #660033;">-rw-r--r--</span>  <span style="color: #000000;">1</span> dan <span style="color: #c20cb9; font-weight: bold;">users</span>   <span style="color: #000000;">12094</span> <span style="color: #000000;">2008</span>-03-<span style="color: #000000;">10</span> <span style="color: #000000;">15</span>:<span style="color: #000000;">22</span> readme.txt</pre></div></div>

<p>Of particular interest to us, is the first set of characters which represent the permissions: (numbered below, for reference)</p>
<pre>drwxr-xr-x
12345678910</pre>
<p>From left to right, the permissions are grouped into four parts:</p>
<ul>
<li><em>Character 1:</em> Indicates a directory (d), link (l) or normal file (-)</li>
<li><em>Characters 2-4:</em> The read (r), write (w) and execute (x) permissions for the file <em>owner</em> (&#8220;dan&#8221; in the example above)</li>
<li><em>Characters 5-7:</em> The read (r), write (w) and execute (x) permissions for the file <em>group</em> (&#8220;users&#8221; in the example above)</li>
<li><em>Characters 8-10:</em> The read (r), write (w) and execute (x) permissions for <em>everyone else</em> aka <em>others</em></li>
</ul>
<p>What these permissions mean, depends on what kind of file it is.<br />
For <strong>directories</strong>:</p>
<ul>
<li><em>Read (r)</em>: Users can view a listing of the directory contents (i.e. read its contents)</li>
<li><em>Write (w)</em>: Users can create / delete files in this directory (i.e. write to the directory&#8217;s contents).</li>
<li><em>Execute (x)</em>: Users can enter this directory using a &#8220;cd&#8221; command</li>
</ul>
<p>Note: If users have write access to a directory &#8211; they can delete its files <em>even if they are not the owner and/or do not have write permission to the individual file</em>. Watch out for this one, it has caught us out in the past!</p>
<p>For <strong>files</strong>:</p>
<ul>
<li><em>Read (r)</em>: Users can view the files&#8217; contents</li>
<li><em>Write (w)</em>: Users can modify the files&#8217; contents</li>
<li><em>Execute (x)</em>: Allows execution of the file as a program</li>
</ul>
<p>You should also be aware that Linux <em>only checks the most appropriate permissions</em> when deciding whether to grant access. For example, if you are the file owner, only the owner permission is checked (not the &#8220;group&#8221;, or &#8220;other&#8221; permissions). This means, if the permissions are &#8220;&#8212;-r&#8211;r&#8211;&#8221;, you won&#8217;t be able to read the file if you are the owner &#8211; whereas members of the file group and &#8220;others&#8221; will be able to read it.</p>
<p>That&#8217;s it for now! In the upcoming part two, I will detail how to set permissions, using the Linux command line. Part three will show you some of the more advanced permissions. Watch this space!</p>
]]></content:encoded>
			<wfw:commentRss>http://dan.forys.co.uk/understanding-linux-file-permissions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Step by step: Moving code between Subversion repositories</title>
		<link>http://dan.forys.co.uk/moving-svn-code-step-by-step/</link>
		<comments>http://dan.forys.co.uk/moving-svn-code-step-by-step/#comments</comments>
		<pubDate>Wed, 23 Jul 2008 15:14:21 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[svnadmin]]></category>

		<guid isPermaLink="false">http://www.danforys.com/?p=9</guid>
		<description><![CDATA[As many coders will tell you, there reaches a point where you realise that you absolutely, positively must keep your code in a a revision control system. In my working life, I&#8217;ve used Microsoft&#8217;s ageing SourceSafe and more recently the vastly superior SubVersion (SVN). There&#8217;s many powerful GUIs out there which you can use to [...]]]></description>
			<content:encoded><![CDATA[<p>As many coders will tell you, there reaches a point where you realise that you absolutely, positively <em>must</em> keep your code in a a revision control system. In my working life, I&#8217;ve used Microsoft&#8217;s ageing SourceSafe and more recently the vastly superior SubVersion (SVN).</p>
<p>There&#8217;s many powerful GUIs out there which you can use to interact with SVN, and make the checking out and checking in very easy. If you primarily use a desktop GUI (like me), then chances are you use a SVN client GUI to interact with SVN on a day-to-day basis.</p>
<p>But what happens when you need to move code between repositories?</p>
<p><span id="more-9"></span></p>
<p>I first realised I needed to reorganise my repositories when my single &#8220;clients&#8221; repository was growing unwieldy. It was one large repository, with all my client work organised into folders by the project name. This method keeps things very tidy, but increments the version numbers with every commit on <em>every project</em> and means you have a very long root log.</p>
<p>A better way, I realised, is to keep the unrelated projects organised in their own repositories &#8211; but how to move the code out of my client repository into a new one?</p>
<p>To do this, you&#8217;ll need shell access to your SVN server (surely you do &#8211; otherwise, how do you create your repositories?)</p>
<p>SVN provides the <strong>svnadmin dump</strong> command to export data from your repository. In my case, to dump the contents of my entire clients repository, I did the following:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">svnadmin</span> dump clients <span style="color: #000000; font-weight: bold;">&gt;</span> clients-dumpfile</pre></div></div>

<p>which creates a text file called clients-dumpfile containing all the revision data for my clients repository. Note that this can create a very large file, as it&#8217;s not stored in the ultra-efficient space-saving SVN database any longer.</p>
<p>Say I want to move all my code from a folder called client-1, and put it in its own repository. First thing I need to do, is to create the destination repository:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">svnadmin</span> create client-<span style="color: #000000;">1</span>-repository</pre></div></div>

<p>Now &#8211; the dumpfile contains <em>all</em> the code for all the projects, so how do I filter out the other projects? (this is all one line)</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">cat</span> clients-dumpfile <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">svndumpfilter</span> include client-<span style="color: #000000;">1</span> <span style="color: #660033;">--drop-empty-revs</span> <span style="color: #660033;">--renumber-revs</span> <span style="color: #000000; font-weight: bold;">&gt;</span> client-<span style="color: #000000;">1</span>-filtered-dumpfile</pre></div></div>

<p>What does this do? It takes the previously created clients-dumpfile and sends it through the svndumpfilter program. I&#8217;ve told it to <em>include</em> the client-1 folder (and throw away everything else). I&#8217;ve told it to drop the empty revisions left behind by the thrown away data, and renumber the rest of the revisions so my new repository is nicely sequentially numbered. The results from svndumpfilter are output into a new file called client-1-filtered-dumpfile.</p>
<p>Finally, you simply load the data into the new repository:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">svnadmin</span> load client-<span style="color: #000000;">1</span>-repository <span style="color: #000000; font-weight: bold;">&lt;</span> client-<span style="color: #000000;">1</span>-filtered-dumpfile</pre></div></div>

<p>Hopefully, you now have a populated repository with your clients&#8217; code.</p>
]]></content:encoded>
			<wfw:commentRss>http://dan.forys.co.uk/moving-svn-code-step-by-step/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Novell client on OpenSuse 10.3</title>
		<link>http://dan.forys.co.uk/novell-client-on-opensuse-103/</link>
		<comments>http://dan.forys.co.uk/novell-client-on-opensuse-103/#comments</comments>
		<pubDate>Mon, 08 Oct 2007 14:50:13 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[novell]]></category>
		<category><![CDATA[novell client]]></category>
		<category><![CDATA[opensuse]]></category>
		<category><![CDATA[opensuse 10.3]]></category>
		<category><![CDATA[suse]]></category>

		<guid isPermaLink="false">http://www.danforys.com/2007/10/08/novell-client-on-opensuse-103/</guid>
		<description><![CDATA[The latest (10.3) version of OpenSuse was released a few days ago. As I use Suse as my main development environment at work, I eagerly downloaded it as soon as I could, and installed it on a virtual machine. First impressions are very good &#8211; very quick startup time, easy 1-click installs and a bright [...]]]></description>
			<content:encoded><![CDATA[<p>The latest (10.3) version of <a href="http://www.opensuse.org/">OpenSuse</a> was released a few days ago. As I use Suse as my main development environment at work, I eagerly downloaded it as soon as I could, and installed it on a virtual machine.</p>
<p>First impressions are very good &#8211; very quick startup time, easy 1-click installs and a bright and cheery colour scheme.</p>
<p>Unfortunately, I can&#8217;t switch for real as the Novell Client doesn&#8217;t work yet, and I need to client to access my shared drives at work. (Although I could use WebDAV, it doesn&#8217;t work so well). Attempting to install the <a href="http://beta.novell.com/">Beta 2.0 version</a> yields a single dependency error (wrong version of binutils). Satisfying the dependency results in the Novell Client loading &#8211; but not connecting at all. Seemingly, the public Beta 2.0 of the client is no longer available for download.</p>
<p>There was quite a wait on Suse 10.2 for a working Novell Client &#8211; which was released in beta form a couple of months ago (and it works very nicely too). I&#8217;ll eagerly await and hope that Novell release a new client soon, then I will more than happily switch to the new version.</p>
<p><strong>UPDATE 29th Nov 2007</strong></p>
<p>I&#8221;ve just spotted that Novell have posted a way to run the 10.2 client on 10.3, over at <a href="http://www.novell.com/coolsolutions/tip/19968.html">coolsolutions.</a></p>
<p>It has a simple step-by-step guide that just involves entering a few commands into the shell.</p>
]]></content:encoded>
			<wfw:commentRss>http://dan.forys.co.uk/novell-client-on-opensuse-103/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.404 seconds -->
