<?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/"
	xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule">

<channel>
	<title>Fabian Moser &#187; Linux</title>
	<atom:link href="http://fabianmoser.at/schlagwort/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://fabianmoser.at</link>
	<description>&#34;as simple as possible, but not simpler&#34;</description>
	<lastBuildDate>Thu, 26 Jan 2012 13:19:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/at/</creativeCommons:license>		<item>
		<title>Nur &#8220;echte&#8221; Benutzerkonten anzeigen</title>
		<link>http://fabianmoser.at/blog/2011/07/07/nur-echte-benutzerkonten-anzeigen/</link>
		<comments>http://fabianmoser.at/blog/2011/07/07/nur-echte-benutzerkonten-anzeigen/#comments</comments>
		<pubDate>Thu, 07 Jul 2011 07:38:17 +0000</pubDate>
		<dc:creator>Fabian Moser</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Fedora]]></category>
		<category><![CDATA[GDM]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://fabianmoser.at/?p=1098</guid>
		<description><![CDATA[Um am Login Bildschirm von Fedora nur jene Konten anzuzeigen, die sich in letzter Zeit eingeloggt haben, muss man nur eine kleine Änderung an der /etc/gdm/custom.conf Datei vornehmen: --- old/custom.conf 2011-07-07 09:35:01.462829111 +0200 +++ new/custom.conf 2011-07-07 09:30:27.146258540 +0200 @@ -7,6 &#8230; <a href="http://fabianmoser.at/blog/2011/07/07/nur-echte-benutzerkonten-anzeigen/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Um am Login Bildschirm von Fedora nur jene Konten anzuzeigen, die sich in letzter Zeit eingeloggt haben, muss man nur eine kleine Änderung an der <code>/etc/gdm/custom.conf</code> Datei vornehmen:</p>

<div class="wp_syntax"><div class="code"><pre class="diff" style="font-family:monospace;"><span style="color: #888822;">--- old/custom.conf	2011-07-07 09:35:01.462829111 +0200</span>
<span style="color: #888822;">+++ new/custom.conf	2011-07-07 09:30:27.146258540 +0200</span>
<span style="color: #440088;">@@ -7,6 +7,7 @@</span>
 <span style="">&#91;</span>xdmcp<span style="">&#93;</span>
&nbsp;
 <span style="">&#91;</span>greeter<span style="">&#93;</span>
<span style="color: #00b000;">+IncludeAll=false</span>
&nbsp;
 <span style="">&#91;</span>chooser<span style="">&#93;</span></pre></div></div>

<p>Damit werden nicht oder zB nur per <code>scp</code> genutzte Benutzernamen ausgeblendet.</p>
]]></content:encoded>
			<wfw:commentRss>http://fabianmoser.at/blog/2011/07/07/nur-echte-benutzerkonten-anzeigen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fedora 15 on NVIDIA NVS 3100M</title>
		<link>http://fabianmoser.at/blog/2011/07/04/fedora-15-on-nvidia-nvs-3100m/</link>
		<comments>http://fabianmoser.at/blog/2011/07/04/fedora-15-on-nvidia-nvs-3100m/#comments</comments>
		<pubDate>Mon, 04 Jul 2011 09:11:16 +0000</pubDate>
		<dc:creator>Fabian Moser</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Fedora]]></category>
		<category><![CDATA[HP 8440p]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[NVIDIA]]></category>

		<guid isPermaLink="false">http://fabianmoser.at/?p=1023</guid>
		<description><![CDATA[In an earlier post, I already wrote about how to install the proprietary video driver on Fedora. In a brief update I suggested to change the acpi_sleep kernel option to accomplish proper display wake-up from standby. Unfortunately, that solution doesn&#8217;t &#8230; <a href="http://fabianmoser.at/blog/2011/07/04/fedora-15-on-nvidia-nvs-3100m/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In an <a title="Fedora 14 on HP 8440p" href="http://fabianmoser.at/blog/2010/11/03/fedora-14-on-hp-8440p/">earlier post</a>, I already wrote about how to install the proprietary video driver on Fedora. In a brief update I suggested to change the <code>acpi_sleep</code> kernel option to accomplish proper display wake-up from standby. Unfortunately, that solution doesn&#8217;t work reliably in my experience. Today I found a solution that seems to successfully work around the problem of the black screen by waking up the screen &#8220;manually&#8221;.</p>
<p><a href="http://www.nvnews.net/vbulletin/showthread.php?t=156382" target="_blank">Gernot Walzl wrote a &#8220;nasty workaround&#8221;</a> (quoting himself) in the form of the following script:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># nvidia_dpms_fix.sh</span>
<span style="color: #666666; font-style: italic;"># 2011-06-12</span>
<span style="color: #666666; font-style: italic;"># by Gernot WALZL</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># nasty workaround for nvidia drivers to resume from dpms off/suspend</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">DISPLAY</span>=:<span style="color: #000000;">0</span>
&nbsp;
getXauthority <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
  <span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">XAUTHORITY</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">ps</span> <span style="color: #660033;">-C</span> X <span style="color: #660033;">-f</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$DISPLAY</span>&quot;</span> \
    <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #660033;">-n</span> <span style="color: #ff0000;">'s/.* -auth \([^ ]*\).*/\1/p'</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
handle_line <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;$1&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">&quot;(EE) NVIDIA.* DisplayPort link training failed&quot;</span> \
      <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>null; <span style="color: #000000; font-weight: bold;">then</span>
    getXauthority
    <span style="color: #c20cb9; font-weight: bold;">xset</span> dpms force on
  <span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">tail</span> <span style="color: #660033;">--follow</span>=name <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>Xorg.0.log <span style="color: #660033;">--retry</span> <span style="color: #660033;">--lines</span>=<span style="color: #000000;">1</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>null \
  <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #000000; font-weight: bold;">while</span> <span style="color: #c20cb9; font-weight: bold;">read</span> line; <span style="color: #000000; font-weight: bold;">do</span>
    handle_line <span style="color: #ff0000;">&quot;<span style="color: #007800;">$line</span>&quot;</span>
  <span style="color: #000000; font-weight: bold;">done</span></pre></div></div>

<p>To actually make this do its job, I copied it into <code>/usr/local/bin</code>, made it executable and created an autostart entry for GNOME 3 by saving the following lines under <code>~/.config/autostart/nvidia_dpms_fix.sh.desktop</code></p>

<div class="wp_syntax"><div class="code"><pre class="txt" style="font-family:monospace;">[Desktop Entry]
Type=Application
Exec=/usr/local/bin/nvidia_dpms_fix.sh
Hidden=false
X-GNOME-Autostart-enabled=true
Name=NVidia DPMS fix
Comment=Wakes up the display properly</pre></div></div>

<p>I believe the problem that is being worked around is indicated by a line in the <code>Xorg.0.log</code>:</p>

<div class="wp_syntax"><div class="code"><pre class="txt" style="font-family:monospace;">(WW) NVIDIA(GPU-0): AUO (DFP-3): Failed to set DisplayPort power state</pre></div></div>

<p>Although I could only test this on my machine (HP EliteBook 8440p), with some luck this works for all cases where a similar log message is found.</p>
]]></content:encoded>
			<wfw:commentRss>http://fabianmoser.at/blog/2011/07/04/fedora-15-on-nvidia-nvs-3100m/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>xsession-errors</title>
		<link>http://fabianmoser.at/blog/2011/05/03/xsession-errors/</link>
		<comments>http://fabianmoser.at/blog/2011/05/03/xsession-errors/#comments</comments>
		<pubDate>Tue, 03 May 2011 07:34:11 +0000</pubDate>
		<dc:creator>Fabian Moser</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[KDE]]></category>
		<category><![CDATA[KDM]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[openSUSE]]></category>
		<category><![CDATA[SSD]]></category>
		<category><![CDATA[X11]]></category>

		<guid isPermaLink="false">http://fabianmoser.at/?p=931</guid>
		<description><![CDATA[Ever since I upgraded my notebook with a SSD, I was looking for a way to minimise or avoid unnecessary write accesses. The tools of choice (on Linux at least) are iostat for a rough summary and pidstat for the &#8230; <a href="http://fabianmoser.at/blog/2011/05/03/xsession-errors/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ever since I upgraded my notebook with a SSD, I was looking for a way to minimise or avoid unnecessary write accesses. The tools of choice (on Linux at least) are <code>iostat</code> for a rough summary and <code>pidstat</code> for the details. With the help of those two one can easily figure out which processes are responsible for write accesses.</p>
<p>Once a writing process is identified, <code>lsof</code> can tell you which files are actually written. Depending on what you want to achieve, you can then continue to relocate that file to a different disk (e.g. if you have two disks and want one of them to sleep most of the time) or to memory (using tmpfs). The latter obviously means that the written data will be lost at the next reboot, but sometimes this is perfectly fine e.g. for the files inside <code>/tmp</code>. Therefore, it is generally a good idea to move that directory into volatile memory following <a href="http://en.opensuse.org/SDB:SSD_performance#create_TMPFS_filesystems">the instructions on the openSUSE Wiki</a>.</p>
<p>All good and well if you actually manage to relocate or move a file. Often file locations are a matter of configuration and otherwise you can help yourself with dynamic links. But there was one very special file on my openSUSE 11.4 installation that withstood all my assaults for quiet some time. I&#8217;m speaking of a beast called <code>.xsession-errors</code> residing in your <code>$HOME</code> directory. Created by KDM, one would expect to be able to configure the location of that file. Indeed, there is a <a href="http://docs.kde.org/stable/en/kdebase-workspace/kdm/kdm-files.html#option-clientlogfile">configuration option called <code>ClientLogFile</code></a> specifically for that purpose. Unfortunately this is only the first and easier of two necessary steps:</p>
<ol>
<li>As <code>root</code> open your <code>/usr/share/kde4/config/kdm/kdmrc</code>, go to a section labelled <code>[X-:0-Core]</code> (there may be multiple of those, but don&#8217;t worry and just pick the last one) and add the following line:

<div class="wp_syntax"><div class="code"><pre class="ini" style="font-family:monospace;"><span style="color: #000099;">ClientLogFile</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">../../tmp/xsession-errors-%u</span></pre></div></div>

<p>This will move the file into the <code>/tmp</code> directory. Mind the path relative to <code>$HOME</code>.</li>
<li>Now the hidden piece: again as <code>root</code> open your <code>/etc/X11/xdm/Xsession</code> and make the following changes (I deliberately use the <code>patch</code> syntax here i.e. remove lines with a minus sign and add those with a plus sign):

<div class="wp_syntax"><div class="code"><pre class="diff" style="font-family:monospace;"><span style="color: #888822;">--- Xsession.old        2011-05-01 19:46:40.000000000 +0200</span>
<span style="color: #888822;">+++ Xsession    2011-05-02 22:18:39.000000000 +0200</span>
<span style="color: #440088;">@@ -123,8 +123,8 @@</span>
     # GDM seems to handle this its self
     test -z &quot;$GDMSESSION&quot; || break
&nbsp;
<span style="color: #991111;">-    # Once if KDM does handle this its self</span>
<span style="color: #991111;">-    #test -z &quot;$KDMSESSION&quot; || break</span>
<span style="color: #00b000;">+    # KDM handles this itself</span>
<span style="color: #00b000;">+    test -z &quot;$KDE_SESSION_VERSION&quot; || break</span>
&nbsp;
     # Avoid bad symbolic links
     case &quot;$errfile&quot; in</pre></div></div>

</li>
</ol>
<p>Done; logout, restart KDM, re-login and check if the <code>xsession-errors*</code> exists at the new location. If so, remove your old one and cheer to a long living SSD. Only, of course, if the new location is not on your SSD, but e.g. in memory. It doesn&#8217;t hurt to re-check with <code>pidstat</code>.</p>
]]></content:encoded>
			<wfw:commentRss>http://fabianmoser.at/blog/2011/05/03/xsession-errors/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fedora Live USB with GRUB</title>
		<link>http://fabianmoser.at/blog/2011/02/25/fedora-live-usb-with-grub/</link>
		<comments>http://fabianmoser.at/blog/2011/02/25/fedora-live-usb-with-grub/#comments</comments>
		<pubDate>Fri, 25 Feb 2011 09:59:25 +0000</pubDate>
		<dc:creator>Fabian Moser</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Fedora]]></category>
		<category><![CDATA[GRUB]]></category>
		<category><![CDATA[HOWTO]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[USB]]></category>

		<guid isPermaLink="false">http://www.fabianmoser.at/?p=870</guid>
		<description><![CDATA[As already mentioned in my last post, my laptop won&#8217;t boot from a USB stick prepared using a binary copy of an ISO (by means of dd). Here is the method I use to boot the Fedora Live images off &#8230; <a href="http://fabianmoser.at/blog/2011/02/25/fedora-live-usb-with-grub/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>As already mentioned in my <a href="http://www.fabianmoser.at/blog/2011/02/24/fedora-15-live-usb-for-hp-8440p/">last post</a>, my laptop won&#8217;t boot from a USB stick prepared using a binary copy of an ISO (by means of <code>dd</code>). Here is the method I use to boot the Fedora Live images off my USB stick using GNU GRUB2. The device node of the USB driver is denoted <code>/dev/sdX</code> in the following and must be replaced with the actual device node (e.g. <code>/dev/sdc</code>).</p>
<ol>
<li>Prepare a partition on the USB stick and/or make sure there is enough space on it (it must be slightly larger than the ISO image).</li>
<li>Make sure it is flagged bootable. ( <code>fdisk -l /dev/sdX</code> is your friend)</li>
<li>Remember the name of the USB partition you&#8217;re going to use or if unlabelled, label it.</li>
<li>Loop-mount the ISO image using something like <code>mount -o loop /path/to/iso /mnt/loop</code></li>
<li>Copy the content of the ISO over to the USB</li>
<li>Install GRUB on the USB by issuing <code>grub-install --no-floppy --root-directory=/mnt/usb /dev/sdX</code></li>
<li>Create a <code>/mnt/usb/boot/grub/grub.cfg</code> with the following content

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">menuentry &quot;Fedora Live&quot; {
 linux /isolinux/vmlinuz0 root=live:LABEL=XYZ rootfstype=auto ro liveimg quiet  rhgb rd_NO_LUKS rd_NO_MD rd_NO_DM
 initrd /isolinux/initrd0.img
}
&nbsp;
menuentry &quot;Fedora Live (Basic Video)&quot; {
 linux /isolinux/vmlinuz0 root=live:LABEL=XYZ rootfstype=auto ro liveimg quiet  rhgb rd_NO_LUKS rd_NO_MD rd_NO_DM xdriver=vesa nomodeset
 initrd /isolinux/initrd0.img
}</pre></div></div>

<p>where <code>XYZ</code> must be replaced by the actual partition name of your USB partition.</li>
<li>Unmount and boot</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://fabianmoser.at/blog/2011/02/25/fedora-live-usb-with-grub/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HP Ambient Light Sensor on Linux</title>
		<link>http://fabianmoser.at/blog/2010/10/27/hp-ambient-light-sensor-on-linux/</link>
		<comments>http://fabianmoser.at/blog/2010/10/27/hp-ambient-light-sensor-on-linux/#comments</comments>
		<pubDate>Wed, 27 Oct 2010 10:06:08 +0000</pubDate>
		<dc:creator>Fabian Moser</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Ambient Light Sensor]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Fedora]]></category>
		<category><![CDATA[HP 8440p]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.fabianmoser.at/?p=824</guid>
		<description><![CDATA[Often, the simple answers are those you don&#8217;t find on the web. Here is one of them with hopefully enough keywords to make it findable: To activate the Ambient Light Sensor on my new HP EliteBook 8440p (article and pictures &#8230; <a href="http://fabianmoser.at/blog/2010/10/27/hp-ambient-light-sensor-on-linux/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Often, the simple answers are those you don&#8217;t find on the web. Here is one of them with hopefully enough keywords to make it findable:<br />
To activate the Ambient Light Sensor on my new HP EliteBook 8440p (article and pictures will follow later) running Fedora 13, the following command (issued by root obviously) did the trick:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #000000;">1</span> <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>sys<span style="color: #000000; font-weight: bold;">/</span>devices<span style="color: #000000; font-weight: bold;">/</span>platform<span style="color: #000000; font-weight: bold;">/</span>hp-wmi<span style="color: #000000; font-weight: bold;">/</span>als</pre></div></div>

<p>Also don&#8217;t forget to check if the ALS is enabled in the BIOS if this doesn&#8217;t work. It seems to be enabled by default though.</p>
]]></content:encoded>
			<wfw:commentRss>http://fabianmoser.at/blog/2010/10/27/hp-ambient-light-sensor-on-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Secure Firefox with AppArmor</title>
		<link>http://fabianmoser.at/blog/2010/09/24/secure-firefox-with-apparmor/</link>
		<comments>http://fabianmoser.at/blog/2010/09/24/secure-firefox-with-apparmor/#comments</comments>
		<pubDate>Fri, 24 Sep 2010 16:00:59 +0000</pubDate>
		<dc:creator>Fabian Moser</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[AppArmor]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[HOWTO]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[openSUSE]]></category>
		<category><![CDATA[PulseAudio]]></category>
		<category><![CDATA[Zotero]]></category>

		<guid isPermaLink="false">http://www.fabianmoser.at/?p=786</guid>
		<description><![CDATA[To &#8220;lock down&#8221; Firefox on an openSUSE 11.3 machine, I used the four AppArmor profiles you find below. The first is an openSUSE default profile and the second is based on the openSUSE default profile. My changes include support for &#8230; <a href="http://fabianmoser.at/blog/2010/09/24/secure-firefox-with-apparmor/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>To &#8220;lock down&#8221; Firefox on an openSUSE 11.3 machine, I used the four AppArmor profiles you find below. The first is an openSUSE default profile and the second is based on the openSUSE default profile. My changes include support for PulseAudio sound and the Flash plugin, where the latter is realized with local profiles that are stronger confined than Firefox itself. Finally, I added permission for Zotero requirements.</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;"># /etc/apparmor.d/usr.lib.firefox.firefox.sh
&nbsp;
#include &lt;tunables/global&gt;
&nbsp;
/usr/lib/firefox/firefox.sh {
  #include &lt;abstractions/base&gt;
  #include &lt;abstractions/bash&gt;
  #include &lt;abstractions/consoles&gt;
&nbsp;
  deny capability sys_ptrace,
&nbsp;
  /bin/basename rix,
  /bin/bash rix,
  /bin/grep rix,
  /etc/magic r,
  /usr/bin/file rix,
  /usr/lib/firefox/firefox px,
  /usr/share/misc/magic.mgc r,
}</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;"># /etc/apparmor.d/usr.lib.firefox.firefox
&nbsp;
#include &lt;tunables/global&gt;
&nbsp;
/usr/lib/firefox/firefox {
  #include &lt;abstractions/base&gt;
  #include &lt;abstractions/bash&gt;
  #include &lt;abstractions/consoles&gt;
  #include &lt;abstractions/dbus&gt;
  #include &lt;abstractions/fonts&gt;
  #include &lt;abstractions/gnome&gt;
  #include &lt;abstractions/kde&gt;
  #include &lt;abstractions/nameservice&gt;
  #include &lt;abstractions/pulseaudio&gt;
  #include &lt;abstractions/user-download&gt;
  #include &lt;abstractions/user-write&gt;   
&nbsp;
  deny /usr/lib/firefox/firefox.sh x,
  deny /usr/lib/mozilla/extensions/*/ w,
&nbsp;
  /bin/bash ix,
  /bin/uname ix,
&nbsp;
  /etc/gai.conf r,
  /etc/gnome-vfs-2.0/modules/ r,
  /etc/gre.d/ r,
  /etc/gre.d/* r,
  /etc/mailcap r,
  /etc/mime.types r,
  /etc/mtab r,
  /etc/opt/kde3/share/applications/ r,
  /etc/opt/kde3/share/applications/mimeinfo.cache r,
&nbsp;
  owner @{HOME}/.ICEauthority r,
  owner @{HOME}/.beagle/ToIndex/* rw,
  owner @{HOME}/.fontconfig/* r,
  owner @{HOME}/.icons/ r,
  owner @{HOME}/.local/share/applications/ r,
  owner @{HOME}/.local/share/applications/* r,
  owner @{HOME}/.local/share/mime/* r,
  owner @{HOME}/.mozilla/extensions/** rw,
  owner @{HOME}/.mozilla/firefox/** rw,
  owner @{HOME}/.mozilla/firefox/**.sqlite* k,
  owner @{HOME}/.mozilla/firefox/**/.parentlock k,
&nbsp;
  /opt/kde3/share/applications/ r,
  /opt/kde3/share/applications/mimeinfo.cache r,
&nbsp;
  owner @{PROC}/*/mounts r,
  owner @{PROC}/*/fd/ r,
  @{PROC}/meminfo r,
  @{PROC}/sys/kernel/ngroups_max r,
&nbsp;
  /usr/bin/tr ix,
  /usr/bin/which ix,
&nbsp;
  /usr/lib/**.so mr,
  /usr/lib/firefox/firefox rix,
  /usr/lib/libproxy/pxgconf ix,
  /usr/lib/nspluginwrapper/*/linux/npviewer rcx -&gt; npviewer,
  /usr/lib/xulrunner-*/plugin-container cx -&gt; plugin_container,
&nbsp;
  /usr/local/share/applications/ r,
  /usr/local/share/applications/* r,
  /usr/share/applications/ r,
  /usr/share/applications/* r,
  /usr/share/gvfs/remote-volume-monitors/ r,
  /usr/share/gvfs/remote-volume-monitors/* r,
  /usr/share/locale-bundle/**.mo r,
  /usr/share/mime/**.xml r,
  /usr/share/mozilla/extensions/** r,
  /usr/share/myspell/* r,
&nbsp;
  /var/cache/gio-2.0/defaults.list r,
  /var/cache/libx11/compose/* r,
  owner /var/run/gdm/*/database r,
&nbsp;
  profile npviewer {
    #include &lt;abstractions/base&gt;
    #include &lt;abstractions/bash&gt;
    #include &lt;abstractions/consoles&gt;
&nbsp;
    /bin/bash rix,
    /bin/uname rix,
    /usr/bin/tr rix,
    /usr/bin/which rix,
    /usr/lib/nspluginwrapper/*/linux/npviewer.bin rix,
  }
&nbsp;
  profile plugin_container {
    #include &lt;abstractions/base&gt;
    #include &lt;abstractions/bash&gt;
    #include &lt;abstractions/consoles&gt;
    #include &lt;abstractions/gnome&gt;
    #include &lt;abstractions/pulseaudio&gt;
&nbsp;
    deny /etc/passwd r,
    deny @{PROC}/uptime r,
    deny @{HOME}/.mozilla/firefox/profiles.ini r,
&nbsp;
    /bin/bash ix,
    /bin/grep ix,
    /bin/ps ix,
&nbsp;
    owner @{PROC}/*/fd/ r,
    owner @{PROC}/*/stat r,
&nbsp;
    owner /var/run/gdm/*/database r,
    owner @{HOME}/.adobe/Flash_Player/**/ w,
    owner @{HOME}/.adobe/Flash_Player/AssetCache/ r,
    owner @{HOME}/.macromedia/Flash_Player/** rw,
  }
&nbsp;
  # Zotero-specific rules
  owner @{HOME}/.mozilla/firefox/*/zotero/pdfinfo-Linux-* cx -&gt; zotero_tools,
  owner @{HOME}/.mozilla/firefox/*/zotero/pdftotext-Linux-* cx -&gt; zotero_tools,
  owner @{HOME}/.zoteroIntegrationPipe rw,
  /usr/bin/evince Ux,
  /usr/bin/mkfifo ix,
  profile zotero_tools {
    #include &lt;abstractions/base&gt;
&nbsp;
    owner @{HOME}/.mozilla/firefox/*/zotero/storage/*/* r,
    owner @{HOME}/.mozilla/firefox/*/zotero/storage/*/.zotero-ft-info w,
    owner @{HOME}/.mozilla/firefox/*/zotero/storage/*/.zotero-ft-cache w,
  }
}</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;"># /etc/apparmor.d/abstractions/pulseaudio
&nbsp;
/dev/shm/ r,
owner /dev/shm/pulse-shm-* rw,
/dev/snd/*      rw,
&nbsp;
/etc/alsa-pulse.conf r,
/etc/asound-pulse.conf r,
/etc/pulse/client.conf r,
&nbsp;
owner @{HOME}/.pulse-cookie rwk,
&nbsp;
/usr/bin/pulseaudio px,
&nbsp;
/usr/share/alsa/** r,
/usr/share/sounds/** r,
&nbsp;
/var/lib/dbus/machine-id r,
&nbsp;
# vim:syntax=apparmor</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;"># /etc/apparmor.d/usr.bin.pulseaudio
&nbsp;
#include &lt;tunables/global&gt;
&nbsp;
/usr/bin/pulseaudio {
  #include &lt;abstractions/base&gt;
}</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://fabianmoser.at/blog/2010/09/24/secure-firefox-with-apparmor/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Embed PDFs from Zotero</title>
		<link>http://fabianmoser.at/blog/2010/06/03/embed-pdfs-from-zotero/</link>
		<comments>http://fabianmoser.at/blog/2010/06/03/embed-pdfs-from-zotero/#comments</comments>
		<pubDate>Thu, 03 Jun 2010 08:51:22 +0000</pubDate>
		<dc:creator>Fabian Moser</dc:creator>
				<category><![CDATA[Arbeit]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Evince]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PDF]]></category>
		<category><![CDATA[Zotero]]></category>

		<guid isPermaLink="false">http://www.fabianmoser.at/?p=648</guid>
		<description><![CDATA[I&#8217;m using Zotero to organise my bibliography. Not only do I store citation information, but I also love the possibility to let it organise the corresponding PDF files. That way I have full-text search and a superb tagging facility for &#8230; <a href="http://fabianmoser.at/blog/2010/06/03/embed-pdfs-from-zotero/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m using <a href="http://www.zotero.org/">Zotero</a> to organise my bibliography. Not only do I store citation information, but I also love the possibility to let it organise the corresponding PDF files. That way I have full-text search and a superb tagging facility for almost everything I read and might need to use and cite later. As a Fedora user, I didn&#8217;t have Firefox configured to embed all kind of media into the browser by default. In general I perceive this as an advantage, but in my use-case I have Firefox with Zotero running in full-screen on a separate workspace and want it to manage the screen entirely. And since Evince is the default PDF viewer on Gnome at the moment, I would like it to be embedded into Firefox tabs as I open PDFs from Zotero.</p>
<p>As quick search for the topic brought me to an <a href="http://ubuntuforums.org/showthread.php?t=25685">article in the Ubuntu Forums</a> which solved 90% of the problem. Installing Mozplugger</p>
<pre style="padding-left: 30px;">yum install mozplugger</pre>
<p>and raising the priority of Evince as its PDF handler made most of the PDFs open embedded just as intended. However, Zotero seems to assign an unusual MIME type for the PDFs it stores that is &#8220;application/octetstream&#8221;. Thus to fit my needs, I added that type to the Mozplugger PDF handler</p>
<pre style="padding-left: 30px;">sudo vim /etc/mozpluggerrc</pre>
<p>which now reads as</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">application<span style="color: #000000; font-weight: bold;">/</span>pdf:pdf:PDF <span style="color: #c20cb9; font-weight: bold;">file</span>
application<span style="color: #000000; font-weight: bold;">/</span>x-pdf:pdf:PDF <span style="color: #c20cb9; font-weight: bold;">file</span>
text<span style="color: #000000; font-weight: bold;">/</span>pdf:pdf:PDF <span style="color: #c20cb9; font-weight: bold;">file</span>
text<span style="color: #000000; font-weight: bold;">/</span>x-pdf:pdf:PDF <span style="color: #c20cb9; font-weight: bold;">file</span>
application<span style="color: #000000; font-weight: bold;">/</span>octetstream:pdf:PDF <span style="color: #c20cb9; font-weight: bold;">file</span>
        repeat noisy swallow<span style="color: #7a0874; font-weight: bold;">&#40;</span>evince<span style="color: #7a0874; font-weight: bold;">&#41;</span> fill: evince <span style="color: #ff0000;">&quot;<span style="color: #007800;">$file</span>&quot;</span>
<span style="color: #666666; font-style: italic;">#       ACROREAD()</span>
<span style="color: #666666; font-style: italic;">#       repeat noisy swallow(kpdf) fill: kpdf &quot;$file&quot;</span>
<span style="color: #666666; font-style: italic;">#       repeat noisy swallow(Xpdf) fill: xpdf -g +9000+9000 &quot;$file&quot;</span>
<span style="color: #666666; font-style: italic;">#       repeat noisy swallow(okular) fill: okular &quot;$file&quot;</span>
<span style="color: #666666; font-style: italic;">#       GV()</span>
<span style="color: #666666; font-style: italic;">#       repeat noisy fill exits: evince &quot;$file&quot;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://fabianmoser.at/blog/2010/06/03/embed-pdfs-from-zotero/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Virtuelle Übersiedlung</title>
		<link>http://fabianmoser.at/blog/2010/05/06/virtuelle-uebersiedlung/</link>
		<comments>http://fabianmoser.at/blog/2010/05/06/virtuelle-uebersiedlung/#comments</comments>
		<pubDate>Thu, 06 May 2010 19:26:45 +0000</pubDate>
		<dc:creator>Fabian Moser</dc:creator>
				<category><![CDATA[Server]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[Dovecot]]></category>
		<category><![CDATA[Exim]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Nginx]]></category>
		<category><![CDATA[Redmine]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.fabianmoser.at/?p=618</guid>
		<description><![CDATA[Die vergangene Woche hat ein paar virtuelle Neuerungen gebracht. Ich habe meinen privaten Server auf eine neue Hardware umgezogen. Tatsächlich geht es zwar genau genommen um virtualisierte Hardware, aber mit dem Umzug haben sich die diversen Ressourcenlimitierungen nach oben verschoben, &#8230; <a href="http://fabianmoser.at/blog/2010/05/06/virtuelle-uebersiedlung/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Die vergangene Woche hat ein paar virtuelle Neuerungen gebracht. Ich habe meinen privaten Server auf eine neue Hardware umgezogen. Tatsächlich geht es zwar genau genommen um virtualisierte Hardware, aber mit dem Umzug haben sich die diversen Ressourcenlimitierungen nach oben verschoben, sprich mehr Speicher und mehr Leistung.</p>
<h2>Redmine</h2>
<p>Der Grund für die doch etwas aufwendige Aktion war ein mehr oder weniger fehlgeschlagener Versuch, die das Projektmanagement-Tool <a href="http://www.redmine.org/">Redmine</a> als Ersatz für das bisher eingesetzte Trac auszuprobieren. Leider stieß mein alter Server dabei an seine Grenzen und verweigerte für kurze Zeit sogar die Annahme von E-Mails.</p>
<p>Weil ich einen Umstieg schon seit einem Jahr immer wieder überlegte, nahm ich die Situation zum Anlass um mit meinem Provider die Optionen zu besprechen. Mir wurde ein Upgrade angeboten, das sich heute leider als ungültig erwiesen hat. Letztendlich ist der einzige Unterschied eine Monatsmiete, weil ich beide Verträge nur mit einmonatiger Bindung abgeschlossen habe.</p>
<p>Den für Redmine notwendigen Ruby Stack habe ich aus den aktuellen Quellen selbst kompiliert, weil die Versionen in den CentOS Repositories für diese junge Software stark veraltet sind. Ruby stellt mit den gut unterstützen <a href="http://rubygems.org/">Gems</a> eine gute eigene Paketverwaltung bereit.</p>
<h2>CentOS</h2>
<p>Weil ich auf meinem Laptop seit einiger Zeit auf die Linux Distribution Fedora setze, habe ich meine Distributionswahl am Server überdacht und statt Debian auf das Fedora-ähnliche aber auf den Servereinsatz aufgelegte <a href="https://www.centos.org/">CentOS</a> gesetzt. Vom Geist der Revolution beflügelt, habe ich mich auch gleich versuchsweise von Apache als Webserver verabschiedet und auf <a href="http://nginx.org/en/">Nginx</a> umgestellt. Die gerade angezeigte WordPress wird entsprechend von <a href="http://php-fpm.org/">PHP-FPM</a> ausgeführt.</p>
<p>Für die Mailserver Infrastruktur verlasse ich mich weiterhin auf das bewährte Gespann von Dovecot und Exim. Weil mein Server meine zentrale Sammelstelle für alle E-Mail Konten ist (per Fetchmail), wollte ich hier nichts riskieren und sah auch wirklich keinen einzigen Grund für eine Veränderung.</p>
<h2>VCS</h2>
<p>Meine alten Subversion Repositories habe ich natürlich unverändert kopiert. Daneben habe ich mit Hilfe von Gitosis eine für meine Zwecke perfekte Git Verwahltung eingerichtet, die (wie svn+ssh) unter einem einzelnen Systemaccount und einer Sammlung von autorisierten öffentlichen Schlüsseln beliebig viele Git Repositories mit getrennt einstellbaren Zugriffsrechten zur Verfügung stellt. Nebenbei war die Unterstützung von Git und Subversion einer der Mitgründe für den Umstieg von Trac auf Redmine.</p>
<h2>Fertig</h2>
<p>Also genug Fachjargon. Fazit: Ich habe einige glückliche Stunden mit meiner virtuellen &#8220;Immobilie&#8221; verbracht. Nur damit die Änderungen nach außen hin nicht völlig unbemerkt bleiben habe ich auch gleich das WordPress Motiv geändert.</p>
]]></content:encoded>
			<wfw:commentRss>http://fabianmoser.at/blog/2010/05/06/virtuelle-uebersiedlung/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Einrichtung eines sicheren Fileservers</title>
		<link>http://fabianmoser.at/blog/2010/02/28/einrichtung-eines-sicheren-fileservers/</link>
		<comments>http://fabianmoser.at/blog/2010/02/28/einrichtung-eines-sicheren-fileservers/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 11:15:13 +0000</pubDate>
		<dc:creator>Fabian Moser</dc:creator>
				<category><![CDATA[Server]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[FTP]]></category>
		<category><![CDATA[HOWTO]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[SSH]]></category>

		<guid isPermaLink="false">http://fabianmoser.at/?p=584</guid>
		<description><![CDATA[Theorie Bei diesem Titel versteht es sich vielleicht von selbst, dass FTP hier kein Thema ist. Es ist vermutlich zu einem nicht unwesentlichen Teil persönliche Präferenz, aber wenn ich das Wort sicher im Zusammenhang mit Servern verwende, verlasse ich mich &#8230; <a href="http://fabianmoser.at/blog/2010/02/28/einrichtung-eines-sicheren-fileservers/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h2>Theorie</h2>
<p>Bei diesem Titel versteht es sich vielleicht von selbst, dass FTP hier kein Thema ist. Es ist vermutlich zu einem nicht unwesentlichen Teil persönliche Präferenz, aber wenn ich das Wort sicher im Zusammenhang mit Servern verwende, verlasse ich mich immer gern auf SSH. Im Fall eines Fileservers bietet sich also das <a href="http://de.wikipedia.org/wiki/SSH_File_Transfer_Protocol">SFTP Protokoll</a> an. Generell wirft die Verwendung von SSH und, im Speziellen, die Weitergabe von Zugangsdaten für einen SSH Server (zumindest) zwei brennende Fragen auf.</p>
<p>Zum einen muss verhindert werden, dass der eingeloggte Benutzer beliebigen Code ausführen kann. Da er zumindest für das Upload Verzeichnis Schreibrechte hat, kann ein eventueller Upload von Exploits nicht prinzipiell verhindert werden, aber wenn man dem Benutzer erst gar keine Shell gibt, kann er die Ausführung des Schadcodes nicht veranlassen. Diese Strategie verfolgt die <a href="http://www.sublimation.org/scponly/wiki/index.php/Main_Page">scponly</a> Software.</p>
<p>Zum anderen ist man als Administator auch interessiert, dem eingeloggten Benutzer möglichst wenig Information über das System preiszugeben. Das erreicht man mit einer <code>chroot</code> Umgebung. Nun wird sogar von scponly ein Skript angeboten, um eine solche Umgebung zu erstellen. Dessen Verwendung wird auf der <a href="http://wiki.ubuntuusers.de/scponly">ubuntuusers Wiki</a> beschrieben. Leider ist dafür das Setzen des SUID Bits notwendig, was meiner Meinung nach keine saubere Lösung ist. Daher werde ich hier beschreiben, wie man eine äquivalente Umgebung mit dem <a href="http://www.floc.net/makejail/"><code>makejail</code></a> Skript erstellt. Diese Vorgehensweise orientiert sich stark an der <a href="http://www.debian.org/doc/manuals/securing-debian-howto/ap-chroot-ssh-env.de.html">Anleitung zum Absichern von Debian</a>, welche in ihrer Gesamtheit auf jeden Fall eine Lektüre wert ist, wenn man einen Debian Server administrieren muss.</p>
<h2>Praxis</h2>
<p>Diese Anleitung bezieht sich auf Debian Lenny. Zuerst werden die erforderlichen Pakete installiert:</p>
<pre># aptitude install libpam-chroot makejail scponly</pre>
<p>Nun wird das eben installierte PAM Modul <code>libpam-chroot</code> für SSH Logins aktiviert. Dazu werden die folgenden Zeilen zu der Datei <code>/etc/pam.d/sshd</code> hinzugefügt:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">session    required     pam_chroot.so</pre></div></div>

<p>Zunächst muss der entsprechende Benutzer erstellt werden, mit dem man sich später am Server anmelden kann.</p>
<pre># adduser --home /home/sftp --shell /usr/bin/scponly --no-create-home sftp</pre>
<p>Damit das PAM Modul auch wirklich greift, muss es für den neuen Benutzer aktiviert werden. Das geschieht durch folgende Zeile in der Datei <code>/etc/security/chroot.conf</code>.</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">sftp	/var/chroot/users/sftp</pre></div></div>

<p>Als nächstes wird das Verzeichnis für die <code>chroot</code> Umgebung erstellt und der neue Benutzer erhält Schreibrechte für sein Heimatverzeichnis.</p>
<pre># mkdir -p /var/chroot/users/sftp/home/sftp
# chown sftp:sftp /var/chroot/users/sftp/home/sftp</pre>
<p>Für die Verwendung des <code>makejail</code> Skripts wird eine Konfigurationsdatei mit folgendem Inhalt erstellt und als <code>sftp-jail.py</code> gespeichert.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">chroot=<span style="color: #483d8b;">&quot;/var/chroot/users/sftp&quot;</span>
users=<span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;sftp&quot;</span><span style="color: black;">&#93;</span>
testCommandsInsideJail=<span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;scponly&quot;</span>, <span style="color: #483d8b;">&quot;ls&quot;</span>, <span style="color: #483d8b;">&quot;scp&quot;</span>, <span style="color: #483d8b;">&quot;rm&quot;</span>, <span style="color: #483d8b;">&quot;ln&quot;</span>, <span style="color: #483d8b;">&quot;mv&quot;</span>, <span style="color: #483d8b;">&quot;chmod&quot;</span>, <span style="color: #483d8b;">&quot;chown&quot;</span>, <span style="color: #483d8b;">&quot;chgrp&quot;</span>, <span style="color: #483d8b;">&quot;mkdir&quot;</span>, <span style="color: #483d8b;">&quot;rmdir&quot;</span>, <span style="color: #483d8b;">&quot;pwd&quot;</span>, <span style="color: #483d8b;">&quot;groups&quot;</span>, <span style="color: #483d8b;">&quot;id&quot;</span>, <span style="color: #483d8b;">&quot;echo&quot;</span>, <span style="color: #483d8b;">&quot;passwd&quot;</span><span style="color: black;">&#93;</span>
forceCopy=<span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;/usr/lib/sftp-server&quot;</span><span style="color: black;">&#93;</span>
cleanJailFirst=<span style="color: #ff4500;">1</span>
preserve=<span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;/home/sftp&quot;</span><span style="color: black;">&#93;</span></pre></div></div>

<p>Es folgt der Aufruf des Skripts.</p>
<pre># makejail sftp-jail.py</pre>
<p>Die am Ende ausgegebenen Warnungen können getrost ignoriert werden. Wenn man so vorsichtig ist wie ich, muss man noch dafür sorgen, dass der SSH Login für den neuen Benutzer freigegeben wird. Dazu fügt man den neuen Benutzernamen dem <code>AllowUsers</code> Parameter in der Datei <code>/etc/ssh/sshd_config</code> hinzu und startet das SSH Service neu.</p>
<pre># /etc/init.d/ssh restart</pre>
]]></content:encoded>
			<wfw:commentRss>http://fabianmoser.at/blog/2010/02/28/einrichtung-eines-sicheren-fileservers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Enabling the suspend hotkey in KDE4</title>
		<link>http://fabianmoser.at/blog/2010/02/28/enabling-the-suspend-hotkey-in-kde4-2/</link>
		<comments>http://fabianmoser.at/blog/2010/02/28/enabling-the-suspend-hotkey-in-kde4-2/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 09:17:20 +0000</pubDate>
		<dc:creator>Fabian Moser</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[HOWTO]]></category>
		<category><![CDATA[KDE]]></category>
		<category><![CDATA[Konfiguration]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Thinkpad]]></category>

		<guid isPermaLink="false">http://fabianmoser.at/?p=576</guid>
		<description><![CDATA[There are several reports of problems with the suspend hotkey on KDE4 [1] [2]. And there is even a bug report on that issue. Naturally, I wouldn&#8217;t write about this if I hadn&#8217;t experienced the same problem myself. I solved &#8230; <a href="http://fabianmoser.at/blog/2010/02/28/enabling-the-suspend-hotkey-in-kde4-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>There are several reports of problems with the suspend hotkey on KDE4 <a title="Sleep Button in KDE 4 Workaround - Helpful Linux Tidbits" href="http://linuxtidbits.wordpress.com/2009/11/12/sleep-button-in-kde-4-workaround/">[1]</a> <a title="When PowerDevil does not recognize the suspend button in KDE 4.2" href="http://linuxbasement.com/content/when-powerdevil-does-not-recognize-suspend-button-kde-42">[2]</a>. And there is even a <a title="KDE Bug Tracking System" href="https://bugs.kde.org/show_bug.cgi?id=181444">bug report</a> on that issue. Naturally, I wouldn&#8217;t write about this if I hadn&#8217;t experienced the same problem myself. I solved it by slightly modifiying the approach described at <a href="http://linuxbasement.com/content/when-powerdevil-does-not-recognize-suspend-button-kde-42">Linux Basement</a>, avoiding the need to create a dedicated shell script somewhere.</p>
<p>This might not have been possible in KDE 4.2 (I haven&#8217;t verified), but it is in KDE SC 4.4. The Input Actions dialog (under System Settings) allows for the configuration of DBus calls from hotkeys. This was configured fast and works painless. I have exported the hotkey group and pasted the content below. To use it, save this as <code>PowerManagement.khotkeys</code> and import it in the Input Actions dialog.</p>

<div class="wp_syntax"><div class="code"><pre class="ini" style="font-family:monospace;"><span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>Data<span style="">&#93;</span></span>
<span style="color: #000099;">DataCount</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">1</span>
&nbsp;
<span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>Data_1<span style="">&#93;</span></span>
<span style="color: #000099;">Comment</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">Power management mappings of XF86 events</span>
<span style="color: #000099;">DataCount</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">1</span>
<span style="color: #000099;">Enabled</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">true</span>
<span style="color: #000099;">Name</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">Power Management</span>
<span style="color: #000099;">SystemGroup</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">0</span>
<span style="color: #000099;">Type</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">ACTION_DATA_GROUP</span>
&nbsp;
<span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>Data_1Conditions<span style="">&#93;</span></span>
<span style="color: #000099;">Comment</span><span style="color: #000066; font-weight:bold;">=</span>
<span style="color: #000099;">ConditionsCount</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">0</span>
&nbsp;
<span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>Data_1_1<span style="">&#93;</span></span>
<span style="color: #000099;">Comment</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">Enables suspend hotkey</span>
<span style="color: #000099;">Enabled</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">true</span>
<span style="color: #000099;">Name</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">Suspend</span>
<span style="color: #000099;">Type</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">SIMPLE_ACTION_DATA</span>
&nbsp;
<span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>Data_1_1Actions<span style="">&#93;</span></span>
<span style="color: #000099;">ActionsCount</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">1</span>
&nbsp;
<span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>Data_1_1Actions0<span style="">&#93;</span></span>
<span style="color: #000099;">Arguments</span><span style="color: #000066; font-weight:bold;">=</span>
<span style="color: #000099;">Call</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">org.freedesktop.PowerManagement.Suspend</span>
<span style="color: #000099;">RemoteApp</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">org.freedesktop.PowerManagement</span>
<span style="color: #000099;">RemoteObj</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">/org/freedesktop/PowerManagement</span>
<span style="color: #000099;">Type</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">DBUS</span>
&nbsp;
<span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>Data_1_1Conditions<span style="">&#93;</span></span>
<span style="color: #000099;">Comment</span><span style="color: #000066; font-weight:bold;">=</span>
<span style="color: #000099;">ConditionsCount</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">0</span>
&nbsp;
<span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>Data_1_1Triggers<span style="">&#93;</span></span>
<span style="color: #000099;">Comment</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">Simple_action</span>
<span style="color: #000099;">TriggersCount</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">1</span>
&nbsp;
<span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>Data_1_1Triggers0<span style="">&#93;</span></span>
<span style="color: #000099;">Key</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">Sleep</span>
<span style="color: #000099;">Type</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">SHORTCUT</span>
<span style="color: #000099;">Uuid</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"><span style="">&#123;</span>c1706a53-bde8-4364-b0af-71e9c1be6b3f<span style="">&#125;</span></span>
&nbsp;
<span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>Main<span style="">&#93;</span></span>
<span style="color: #000099;">AllowMerge</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">true</span>
<span style="color: #000099;">ImportId</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">Power Management</span>
<span style="color: #000099;">Version</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">2</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://fabianmoser.at/blog/2010/02/28/enabling-the-suspend-hotkey-in-kde4-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

