<?xml version="1.0" encoding="utf-8"?><!-- generator="b2evolution/5.0.7-stable" -->
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>PeHa ICT - Limited to 8 last days</title>
		<link>http://blog.peha-ict.nl/blog1.php</link>
		<atom:link rel="self" type="application/rss+xml" href="http://blog.peha-ict.nl/blog1.php?tempskin=_rss2" />
		<description>Blog van Ivo Peters @ PeHa ICT Services</description>
		<language>nl-NL</language>
		<docs>http://blogs.law.harvard.edu/tech/rss</docs>
		<admin:generatorAgent rdf:resource="http://b2evolution.net/?v=5.0.7-stable"/>
		<ttl>60</ttl>
				<item>
			<title>Aanpassen owner en group</title>
			<link>http://blog.peha-ict.nl/blog1.php/aanpassen-owner-en-group</link>
			<pubDate>Thu, 16 May 2013 12:33:00 +0000</pubDate>			<dc:creator>admin</dc:creator>
			<category domain="main">Servers</category>			<guid isPermaLink="false">57@http://blog.peha-ict.nl/</guid>
						<description>&lt;p&gt;Bij het kopiëren van een website om als basis te dienen van een volgende website, komt het nog wel eens voor dat die nieuwe site niet van dezelfde owner moet zijn als de oorspronkelijke site. Middels het linux commando chown is dat snel te regelen, maar heeft een lastige beperking: het past alle files en mappen aan, ook die van de owner apache zijn, om bijvoorbeeld logs of uploads te verwerken.&lt;/p&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;mkdir /www/newsite
cp -r -a /www/oldsite/website /www/newsite/
&lt;/pre&gt;
&lt;p&gt;Bovenstaande regels maken eerst middels mkdir een nieuwe map aan om de nieuwe site in te plaatsen. De tweede regel kopieert (cp) de map /www/oldsite/website naar de zojuist aangemaakte directory. Daarbij worden 2 switches gebruikt:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;-r zegt dat we recursief willen werken, dus niet alleen de lege map moet gekopieerd worden, maar ook de inhoud aan files en submappen moet meekomen&lt;/li&gt;
&lt;li&gt;-a  staat voor -dR of --perserve=all. Eigenlijk wordt dus de -r van hiervoor dus ook al meegenomen. Belangrijker vind ik het dat preserver de owner, mode (chmod) en timestamps meeneemt. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Als ik dus als &quot;root&quot; deze map kopieer, dan zijn daarna niet de files ineens van Root, maar nog steeds van &quot;ownerOldSite&quot;.&lt;/p&gt;
&lt;pre&gt;drwxrwx--- 2 owneroldsite apache 4096 Apr 20  2012 cache
drwxr-x--- 2 owneroldsite apache 4096 Feb 27 15:01 cli
drwxr-x--- 2 owneroldsite apache 4096 May 16 10:14 config
drwxr-x--- 9 owneroldsite apache 4096 May 16 10:11 docroot
drwxrwx--- 3 owneroldsite apache 4096 Jul 18  2012 documenten
drwxrwx--- 2 owneroldsite apache 4096 Jun 14  2012 logs
drwxr-x--- 9 owneroldsite apache 4096 May 15 16:14 mvc
&lt;/pre&gt;
&lt;p&gt;Vervolgens wil ik de site niet van deze owner laten zijn, maar van een nieuwe user: ownerNewSite.&lt;/p&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;useradd ownerNewSite&lt;/pre&gt;
&lt;p&gt;De volgende stap is om hem de rechten te geven op de zojuist gekopieerde document root. In principe zou&lt;/p&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;chown -R ownerNewSite /www/oldsite/website &lt;/pre&gt;
&lt;p&gt;voldoen. Echter, in de map documenten in in logs staan files die door de webserver (php) bewerkt moeten kunnen worden. Ze zijn veelal ook aangemaakt door php en hebben daarom als owner ook Apache staan. Met de bovenstaande chown actie zouden die files allemaal een nieuwe eigenaar krijgen en daarmee zouden ze niet meer beschrijfbaar zijn voor PHP.&lt;/p&gt;
&lt;h2&gt;Oplossing&lt;/h2&gt;
&lt;p&gt;Er moet dus gefilterd worden op de files die als owner nu ownerOldSite hebben. Dat gaat met de volgende regel:&lt;/p&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;find ./ -user ownerOldSite &lt;/pre&gt;
&lt;p&gt;Alternatief, als het numerieke userid bekend is:&lt;/p&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;find ./ -uid 999&lt;/pre&gt;
&lt;p&gt;Dit uid is bijvoorbeeld te vinden in /etc/passwd. Bovenstaand commando zoekt vanuit de huidige map: ./&lt;/p&gt;
&lt;p&gt;Daarmee hebben we de files te pakken, maar nog niet aangepast. Dat kan middels -exec:&lt;/p&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;find ./ -user ownerOldSite -exec chown ownerNewSite {} +&lt;/pre&gt;
&lt;p&gt;Eventueel kan ook de group van de files nog aangepast worden met:&lt;/p&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;find ./ -group groupOldSite -exec chgrp groupNewSite {} +&lt;/pre&gt;
&lt;p&gt;Hiermee heb je dan dus een complete document root gekopieerd, de files die schrijfbaar moeten zijn voor Apache zijn van Apache gebleven, en er is een nieuwe user die de site kan beheren.&lt;/p&gt;
&lt;h2&gt;Waarom?&lt;/h2&gt;
&lt;p&gt;Het was voor mij een terugkerende ergernis: ik gebruikte het botte chown om de nieuwe owner aan te geven, en moest daarna door de boom met mappen heen om de juiste mappen weer schrijfbaar te maken voor Apache. Hiermee zou dat verleden tijd moeten zijn&lt;/p&gt;</description>
			<content:encoded><![CDATA[<p>Bij het kopiëren van een website om als basis te dienen van een volgende website, komt het nog wel eens voor dat die nieuwe site niet van dezelfde owner moet zijn als de oorspronkelijke site. Middels het linux commando chown is dat snel te regelen, maar heeft een lastige beperking: het past alle files en mappen aan, ook die van de owner apache zijn, om bijvoorbeeld logs of uploads te verwerken.</p>
<pre class="brush: bash">mkdir /www/newsite
cp -r -a /www/oldsite/website /www/newsite/
</pre>
<p>Bovenstaande regels maken eerst middels mkdir een nieuwe map aan om de nieuwe site in te plaatsen. De tweede regel kopieert (cp) de map /www/oldsite/website naar de zojuist aangemaakte directory. Daarbij worden 2 switches gebruikt:</p>
<ul>
<li>-r zegt dat we recursief willen werken, dus niet alleen de lege map moet gekopieerd worden, maar ook de inhoud aan files en submappen moet meekomen</li>
<li>-a  staat voor -dR of --perserve=all. Eigenlijk wordt dus de -r van hiervoor dus ook al meegenomen. Belangrijker vind ik het dat preserver de owner, mode (chmod) en timestamps meeneemt. </li>
</ul>
<p>Als ik dus als "root" deze map kopieer, dan zijn daarna niet de files ineens van Root, maar nog steeds van "ownerOldSite".</p>
<pre>drwxrwx--- 2 owneroldsite apache 4096 Apr 20  2012 cache
drwxr-x--- 2 owneroldsite apache 4096 Feb 27 15:01 cli
drwxr-x--- 2 owneroldsite apache 4096 May 16 10:14 config
drwxr-x--- 9 owneroldsite apache 4096 May 16 10:11 docroot
drwxrwx--- 3 owneroldsite apache 4096 Jul 18  2012 documenten
drwxrwx--- 2 owneroldsite apache 4096 Jun 14  2012 logs
drwxr-x--- 9 owneroldsite apache 4096 May 15 16:14 mvc
</pre>
<p>Vervolgens wil ik de site niet van deze owner laten zijn, maar van een nieuwe user: ownerNewSite.</p>
<pre class="brush: bash">useradd ownerNewSite</pre>
<p>De volgende stap is om hem de rechten te geven op de zojuist gekopieerde document root. In principe zou</p>
<pre class="brush: bash">chown -R ownerNewSite /www/oldsite/website </pre>
<p>voldoen. Echter, in de map documenten in in logs staan files die door de webserver (php) bewerkt moeten kunnen worden. Ze zijn veelal ook aangemaakt door php en hebben daarom als owner ook Apache staan. Met de bovenstaande chown actie zouden die files allemaal een nieuwe eigenaar krijgen en daarmee zouden ze niet meer beschrijfbaar zijn voor PHP.</p>
<h2>Oplossing</h2>
<p>Er moet dus gefilterd worden op de files die als owner nu ownerOldSite hebben. Dat gaat met de volgende regel:</p>
<pre class="brush: bash">find ./ -user ownerOldSite </pre>
<p>Alternatief, als het numerieke userid bekend is:</p>
<pre class="brush: bash">find ./ -uid 999</pre>
<p>Dit uid is bijvoorbeeld te vinden in /etc/passwd. Bovenstaand commando zoekt vanuit de huidige map: ./</p>
<p>Daarmee hebben we de files te pakken, maar nog niet aangepast. Dat kan middels -exec:</p>
<pre class="brush: bash">find ./ -user ownerOldSite -exec chown ownerNewSite {} +</pre>
<p>Eventueel kan ook de group van de files nog aangepast worden met:</p>
<pre class="brush: bash">find ./ -group groupOldSite -exec chgrp groupNewSite {} +</pre>
<p>Hiermee heb je dan dus een complete document root gekopieerd, de files die schrijfbaar moeten zijn voor Apache zijn van Apache gebleven, en er is een nieuwe user die de site kan beheren.</p>
<h2>Waarom?</h2>
<p>Het was voor mij een terugkerende ergernis: ik gebruikte het botte chown om de nieuwe owner aan te geven, en moest daarna door de boom met mappen heen om de juiste mappen weer schrijfbaar te maken voor Apache. Hiermee zou dat verleden tijd moeten zijn</p>]]></content:encoded>
								<comments>http://blog.peha-ict.nl/blog1.php/aanpassen-owner-en-group#comments</comments>
			<wfw:commentRss>http://blog.peha-ict.nl/blog1.php?tempskin=_rss2&#38;disp=comments&#38;p=57</wfw:commentRss>
		</item>
			</channel>
</rss>
