]> pere.pagekite.me Git - homepage.git/blob - blog/archive/2010/08/08.rss
Converted pages to actually temp site.
[homepage.git] / blog / archive / 2010 / 08 / 08.rss
1 <?xml version="1.0" encoding="ISO-8859-1"?>
2 <rss version='2.0' xmlns:lj='http://www.livejournal.org/rss/lj/1.0/'>
3 <channel>
4 <title>Petter Reinholdtsen - Entries from August 2010</title>
5 <description>Entries from August 2010</description>
6 <link>http://www.hungry.com/~pere/blog/</link>
7
8
9 <item>
10 <title>Forslag i stortinget om å stoppe elektronisk stemmegiving i Norge</title>
11 <link>http://www.hungry.com/~pere/blog/Forslag_i_stortinget_om___stoppe_elektronisk_stemmegiving_i_Norge.html</link>
12 <guid isPermaLink="true">http://www.hungry.com/~pere/blog/Forslag_i_stortinget_om___stoppe_elektronisk_stemmegiving_i_Norge.html</guid>
13 <pubDate>Tue, 31 Aug 2010 21:00:00 +0200</pubDate>
14 <description>&lt;p&gt;Ble tipset i dag om at et forslag om å stoppe forsøkene med
15 elektronisk stemmegiving utenfor valglokaler er
16 &lt;a href=&quot;http://www.stortinget.no/no/Saker-og-publikasjoner/Saker/Sak/?p=46616&quot;&gt;til
17 behandling&lt;/a&gt; i Stortinget.
18 &lt;a href=&quot;http://www.stortinget.no/Global/pdf/Representantforslag/2009-2010/dok8-200910-128.pdf&quot;&gt;Forslaget&lt;/a&gt;
19 er fremmet av Erna Solberg, Michael Tetzschner og Trond Helleland.&lt;/p&gt;
20
21 &lt;p&gt;Håper det får flertall.&lt;/p&gt;
22 </description>
23 </item>
24
25 <item>
26 <title>Broken hard link handling with sshfs</title>
27 <link>http://www.hungry.com/~pere/blog/Broken_hard_link_handling_with_sshfs.html</link>
28 <guid isPermaLink="true">http://www.hungry.com/~pere/blog/Broken_hard_link_handling_with_sshfs.html</guid>
29 <pubDate>Mon, 30 Aug 2010 19:30:00 +0200</pubDate>
30 <description>&lt;p&gt;Just got an email from Tobias Gruetzmacher as a followup on my
31 &lt;a href=&quot;https://people.skolelinux.org/pere/blog/Broken_umask_handling_with_sshfs.html&quot;&gt;previous
32 post about sshfs&lt;/a&gt;. He reported another problem with sshfs. It
33 fail to handle hard links properly. A simple way to spot this is to
34 look at the . and .. entries in the directory tree. These should have
35 a link count &gt;1, but on sshfs the count is 1. I just tested to see
36 what happen when trying to hardlink, and this fail as well:&lt;/p&gt;
37
38 &lt;pre&gt;
39 % ln foo bar
40 ln: creating hard link `bar&#39; =&gt; `foo&#39;: Function not implemented
41 %
42 &lt;/pre&gt;
43
44 &lt;p&gt;I have not yet found time to implement a test for this in my file
45 system test code, but believe having working hard links is useful to
46 avoid surprised unix programs. Not as useful as working file locking
47 and symlinks, which are required to get a working desktop, but useful
48 nevertheless. :)&lt;/p&gt;
49
50 &lt;p&gt;The latest version of the file system test code is available via
51 git from
52 &lt;a href=&quot;http://github.com/gebi/fs-test&quot;&gt;http://github.com/gebi/fs-test&lt;/a&gt;&lt;/p&gt;
53 </description>
54 </item>
55
56 <item>
57 <title>Sikkerhetsteateret på flyplassene fortsetter</title>
58 <link>http://www.hungry.com/~pere/blog/Sikkerhetsteateret_p__flyplassene_fortsetter.html</link>
59 <guid isPermaLink="true">http://www.hungry.com/~pere/blog/Sikkerhetsteateret_p__flyplassene_fortsetter.html</guid>
60 <pubDate>Sat, 28 Aug 2010 10:40:00 +0200</pubDate>
61 <description>&lt;p&gt;Jeg skrev for et halvt år siden hvordan
62 &lt;a href=&quot;https://people.skolelinux.org/pere/blog/Sikkerhet__teater__og_hvordan_gj__re_verden_sikrere.html&quot;&gt;samfunnet
63 kaster bort ressurser på sikkerhetstiltak som ikke fungerer&lt;/a&gt;. Kom
64 nettopp over en
65 &lt;a href=&quot;http://www.askthepilot.com/essays-and-stories/terrorism-tweezers-and-terminal-madness-an-essay-on-security/&quot;&gt;historie
66 fra en pilot fra USA&lt;/a&gt; som kommenterer det samme. Jeg mistenker det
67 kun er uvitenhet og autoritetstro som gjør at så få protesterer. Har
68 veldig sans for piloten omtalt i &lt;a
69 href=&quot;http://www.aftenposten.no/nyheter/iriks/article2057501.ece&quot;&gt;Aftenposten&lt;/a&gt; 2007-10-23,
70 og skulle ønske flere rettet oppmerksomhet mot problemet. Det gir
71 ikke meg trygghetsfølelse på flyplassene når jeg ser at
72 flyplassadministrasjonen kaster bort folk, penger og tid på tull i
73 stedet for ting som bidrar til reell økning av sikkerheten. Det
74 forteller meg jo at vurderingsevnen til de som burde bidra til økt
75 sikkerhet er svært sviktende, noe som ikke taler godt for de andre
76 tiltakene.&lt;/p&gt;
77
78 &lt;p&gt;Mon tro hva som skjer hvis det fantes en enkel brosjyre å skrive ut
79 fra Internet som forklarte hva som er galt med sikkerhetsopplegget på
80 flyplassene, og folk skrev ut og la en bunke på flyplassene når de
81 passerte. Kanskje det ville fått flere til å få øynene opp for
82 problemet.&lt;/p&gt;
83
84 &lt;p&gt;Personlig synes jeg flyopplevelsen er blitt så avskyelig at jeg
85 forsøker å klare meg med tog, bil og båt for å slippe ubehaget. Det
86 er dog noe vanskelig i det langstrakte Norge og for å kunne besøke de
87 delene av verden jeg ønsker å nå. Mistenker at flere har det slik, og
88 at dette går ut over inntjeningen til flyselskapene. Det er antagelig
89 en god ting sett fra et miljøperspektiv, men det er en annen sak.&lt;/p&gt;
90 </description>
91 </item>
92
93 <item>
94 <title>Skolelinux i Osloskolen</title>
95 <link>http://www.hungry.com/~pere/blog/Skolelinux_i_Osloskolen.html</link>
96 <guid isPermaLink="true">http://www.hungry.com/~pere/blog/Skolelinux_i_Osloskolen.html</guid>
97 <pubDate>Thu, 26 Aug 2010 22:25:00 +0200</pubDate>
98 <description>&lt;p&gt;Denne høsten skal endelig alle Osloskolene få mulighet til å bruke
99 &lt;a href=&quot;http://www.skolelinux.org/&quot;&gt;Skolelinux&lt;/a&gt;. Ny IT-løsning
100 har vært rullet ut i noen måneder nå, og så vidt jeg fikk vite før
101 sommeren skulle alle skoler ha nytt opplegg på plass før oppstart nå i
102 høst. På alle skolene skal en kunne velge ved installasjon om en skal
103 ha Windows eller Skolelinux på maskinene, og en kan i tillegg
104 PXE-boote maskinene over nett som tynne klienter eller diskløse
105 arbeidsstasjoner. Jeg er spent på hvor mange skoler som velger å ta i
106 bruk Skolelinux, og gleder meg til å se hvordan dette utvikler seg.
107 Løsningen leveres av
108 &lt;a href=&quot;http://www.logica.no/&quot;&gt;Logica&lt;/a&gt; med
109 &lt;a href=&quot;http://www.slxdrift.no/&quot;&gt;Skolelinux Drift AS&lt;/a&gt; som
110 underleverandør, og jeg har vært involvert i utviklingen av løsningen
111 via Skolelinux Drift AS siden prosjektet starter. Jeg synes det er
112 fantastisk at Skolelinux er kommet så langt siden vi startet i 2001 at
113 alle elevene i Osloskolene nå skal få mulighet til å bruke
114 løsningen. Jeg håper de vil sette pris på alle de
115 &lt;a href=&quot;http://www.skolelinux.no/linux-signpost/&quot;&gt;fantastiske
116 brukerprogrammene&lt;/a&gt; som er tilgjengelig i Skolelinux.&lt;/p&gt;
117 </description>
118 </item>
119
120 <item>
121 <title>Broken umask handling with sshfs</title>
122 <link>http://www.hungry.com/~pere/blog/Broken_umask_handling_with_sshfs.html</link>
123 <guid isPermaLink="true">http://www.hungry.com/~pere/blog/Broken_umask_handling_with_sshfs.html</guid>
124 <pubDate>Thu, 26 Aug 2010 13:30:00 +0200</pubDate>
125 <description>&lt;p&gt;My file system sematics program
126 &lt;a href=&quot;https://people.skolelinux.org/pere/blog/Testing_if_a_file_system_can_be_used_for_home_directories___.html&quot;&gt;presented
127 a few days ago&lt;/a&gt; is very useful to verify that a file system can
128 work as a unix home directory,and today I had to extend it a bit. I&#39;m
129 looking into alternatives for home directory access here at the
130 University of Oslo, and one of the options is sshfs. My friend
131 Finn-Arne mentioned a while back that they had used sshfs with Debian
132 Edu, but stopped because of problems. I asked today what the problems
133 where, and he mentioned that sshfs failed to handle umask properly.
134 Trying to detect the problem I wrote this addition to my fs testing
135 script:&lt;/p&gt;
136
137 &lt;pre&gt;
138 mode_t touch_get_mode(const char *name, mode_t mode) {
139 mode_t retval = 0;
140 int fd = open(name, O_RDWR|O_CREAT|O_LARGEFILE, mode);
141 if (-1 != fd) {
142 unlink(name);
143 struct stat statbuf;
144 if (-1 != fstat(fd, &amp;statbuf)) {
145 retval = statbuf.st_mode &amp; 0x1ff;
146 }
147 close(fd);
148 }
149 return retval;
150 }
151
152 /* Try to detect problem discovered using sshfs */
153 int test_umask(void) {
154 printf(&quot;info: testing umask effect on file creation\n&quot;);
155
156 mode_t orig_umask = umask(000);
157 mode_t newmode;
158 if (0666 != (newmode = touch_get_mode(&quot;foobar&quot;, 0666))) {
159 printf(&quot; error: Wrong file mode %o when creating using mode 666 and umask 000\n&quot;,
160 newmode);
161 }
162 umask(007);
163 if (0660 != (newmode = touch_get_mode(&quot;foobar&quot;, 0666))) {
164 printf(&quot; error: Wrong file mode %o when creating using mode 666 and umask 007\n&quot;,
165 newmode);
166 }
167
168 umask (orig_umask);
169 return 0;
170 }
171
172 int main(int argc, char **argv) {
173 [...]
174 test_umask();
175 return 0;
176 }
177 &lt;/pre&gt;
178
179 &lt;p&gt;Sure enough. On NFS to a netapp, I get this result:&lt;/p&gt;
180
181 &lt;pre&gt;
182 Testing POSIX/Unix sematics on file system
183 info: testing symlink creation
184 info: testing subdirectory creation
185 info: testing fcntl locking
186 Read-locking 1 byte from 1073741824
187 Read-locking 510 byte from 1073741826
188 Unlocking 1 byte from 1073741824
189 Write-locking 1 byte from 1073741824
190 Write-locking 510 byte from 1073741826
191 Unlocking 2 byte from 1073741824
192 info: testing umask effect on file creation
193 &lt;/pre&gt;
194
195 &lt;p&gt;When mounting the same directory using sshfs, I get this
196 result:&lt;/p&gt;
197
198 &lt;pre&gt;
199 Testing POSIX/Unix sematics on file system
200 info: testing symlink creation
201 info: testing subdirectory creation
202 info: testing fcntl locking
203 Read-locking 1 byte from 1073741824
204 Read-locking 510 byte from 1073741826
205 Unlocking 1 byte from 1073741824
206 Write-locking 1 byte from 1073741824
207 Write-locking 510 byte from 1073741826
208 Unlocking 2 byte from 1073741824
209 info: testing umask effect on file creation
210 error: Wrong file mode 644 when creating using mode 666 and umask 000
211 error: Wrong file mode 640 when creating using mode 666 and umask 007
212 &lt;/pre&gt;
213
214 &lt;p&gt;So, I can conclude that sshfs is better than smb to a Netapp or a
215 Windows server, but not good enough to be used as a home
216 directory.&lt;/p&gt;
217
218 &lt;p&gt;Update 2010-08-26: Reported the issue in
219 &lt;a href=&quot;http://bugs.debian.org/594498&quot;&gt;BTS report #594498&lt;/a&gt;&lt;/p&gt;
220
221 &lt;p&gt;Update 2010-08-27: Michael Gebetsroither report that he found the
222 script so useful that he created a GIT repository and stored it in
223 &lt;a href=&quot;http://github.com/gebi/fs-test&quot;&gt;http://github.com/gebi/fs-test&lt;/a&gt;.&lt;/p&gt;
224 </description>
225 </item>
226
227 <item>
228 <title>Elektronisk stemmegiving er ikke til å stole på - heller ikke i Norge</title>
229 <link>http://www.hungry.com/~pere/blog/Elektronisk_stemmegiving_er_ikke_til___stole_p____heller_ikke_i_Norge.html</link>
230 <guid isPermaLink="true">http://www.hungry.com/~pere/blog/Elektronisk_stemmegiving_er_ikke_til___stole_p____heller_ikke_i_Norge.html</guid>
231 <pubDate>Mon, 23 Aug 2010 19:30:00 +0200</pubDate>
232 <description>&lt;p&gt;I Norge pågår en prosess for å
233 &lt;a href=&quot;http://www.e-valg.dep.no/&quot;&gt;innføre elektronisk
234 stemmegiving&lt;/a&gt; ved kommune- og stortingsvalg. Dette skal
235 introduseres i 2011. Det er all grunn til å tro at valg i Norge ikke
236 vil være til å stole på hvis dette blir gjennomført. Da det hele var
237 oppe til høring i 2006 forfattet jeg
238 &lt;a href=&quot;http://www.nuug.no/dokumenter/valg-horing-2006-09.pdf&quot;&gt;en
239 høringsuttalelse fra NUUG&lt;/a&gt; (og EFN som hengte seg på) som skisserte
240 hvilke punkter som må oppfylles for at en skal kunne stole på et valg,
241 og elektronisk stemmegiving mangler flere av disse. Elektronisk
242 stemmegiving er for alle praktiske formål å putte ens stemme i en sort
243 boks under andres kontroll, og satse på at de som har kontroll med
244 boksen er til å stole på - uten at en har mulighet til å verifisere
245 dette selv. Det er ikke slik en gjennomfører demokratiske valg.&lt;/p&gt;
246
247 &lt;p&gt;Da problemet er fundamentalt med hvordan elektronisk stemmegiving
248 må fungere for at også ikke-krypografer skal kunne delta, har det vært
249 mange rapporter om hvordan elektronisk stemmegiving har sviktet i land
250 etter land. En
251 &lt;a href=&quot;http://wiki.nuug.no/uttalelser/2006-elektronisk-stemmegiving&quot;&gt;liten
252 samling referanser&lt;/a&gt; finnes på NUUGs wiki. Den siste er fra India,
253 der valgkomisjonen har valgt
254 &lt;a href=&quot;http://www.freedom-to-tinker.com/blog/jhalderm/electronic-voting-researcher-arrested-over-anonymous-source&quot;&gt;å
255 pusse politiet på en forsker&lt;/a&gt; som har dokumentert svakheter i
256 valgsystemet.&lt;/p&gt;
257
258 &lt;p&gt;Her i Norge har en valgt en annen tilnærming, der en forsøker seg
259 med teknobabbel for å få befolkningen til å tro at dette skal bli
260 sikkert. Husk, elektronisk stemmegiving underminerer de demokratiske
261 valgene i Norge, og bør ikke innføres.&lt;/p&gt;
262
263 &lt;p&gt;Den offentlige diskusjonen blir litt vanskelig av at media har
264 valgt å kalle dette &quot;evalg&quot;, som kan sies å både gjelde elektronisk
265 opptelling av valget som Norge har gjort siden 60-tallet og som er en
266 svært god ide, og elektronisk opptelling som er en svært dårlig ide.
267 Diskusjonen gir ikke mening hvis en skal diskutere om en er for eller
268 mot &quot;evalg&quot;, og jeg forsøker derfor å være klar på at jeg snakker om
269 elektronisk stemmegiving og unngå begrepet &quot;evalg&quot;.&lt;/p&gt;
270 </description>
271 </item>
272
273 <item>
274 <title>Robot, reis deg...</title>
275 <link>http://www.hungry.com/~pere/blog/Robot__reis_deg___.html</link>
276 <guid isPermaLink="true">http://www.hungry.com/~pere/blog/Robot__reis_deg___.html</guid>
277 <pubDate>Sat, 21 Aug 2010 22:10:00 +0200</pubDate>
278 <description>&lt;p&gt;I dag fikk jeg endelig tittet litt på mine nyinnkjøpte roboter, og
279 har brukt noen timer til å google etter interessante referanser og
280 aktuell kildekode for bruk på Linux. Det mest lovende så langt er
281 &lt;a href=&quot;http://ispykee.toyz.org/&quot;&gt;ispykee&lt;/a&gt;, som har en
282 BSD-lisensiert linux-daemon som står som mellomledd mellom roboter på
283 lokalnettet og en sentral tjeneste der en iPhone kan koble seg opp for
284 å fjernstyre roboten. Linux-daemonen implementerer deler av
285 protokollen som roboten forstår. Etter å ha knotet litt med å oppnå
286 kontakt med roboten (den oppretter et eget ad-hoc wifi-nett, så jeg
287 måtte gå av mitt vanlige nett for å få kontakt), og kommet frem til at
288 den lytter på IP-port 9000 og 9001, gikk jeg i gang med å finne ut
289 hvordan jeg kunne snakke med roboten vha. disse portene. Robotbiten
290 av protokollen er publisert av produsenten med GPL-lisens, slik at det
291 er mulig å se hvordan protokollen fungerer. Det finnes en java-klient
292 for Android som så ganske snasen ut, men fant ingen kildekode for
293 denne. Derimot hadde iphone-løsningen kildekode, så jeg tok
294 utgangspunkt i den.&lt;/p&gt;
295
296 &lt;p&gt;Daemonen ville i utgangspunktet forsøke å kontakte den sentrale
297 tjenesten som iphone-programmet kobler seg til. Jeg skrev dette om
298 til i stedet å sette opp en nettverkstjeneste på min lokale maskin,
299 som jeg kan koble meg opp til med telnet og gi kommandoer til roboten
300 (act, forward, right, left, etc). Det involverte i praksis å bytte ut
301 socket()/connect() med socket()/bind()/listen()/accept() for å gjøre
302 klienten om til en tjener.&lt;/p&gt;
303
304 &lt;p&gt;Mens jeg har forsøkt å få roboten til å bevege seg har min samboer
305 skrudd sammen resten av roboten for å få montert kamera og plastpynten
306 (armer, plastfiber for lys). Nå er det hele montert, og roboten er
307 klar til bruk. Må få flyttet den over til mitt vanlige trådløsnett
308 før det blir praktisk, men de bitene av protokollen er ikke
309 implementert i ispykee-daemonen, så der må jeg enten få tak i en mac
310 eller en windows-maskin, eller implementere det selv.&lt;/p&gt;
311
312 &lt;p&gt;Vi var tre som kjøpte slike roboter, og vi har blitt enige om å
313 samle notater og referanser på &lt;a
314 href=&quot;http://wiki.nuug.no/grupper/robot/&quot;&gt;NUUGs wiki&lt;/a&gt;. Ta en titt
315 der hvis du er nysgjerrig.&lt;/p&gt;
316 </description>
317 </item>
318
319 <item>
320 <title>2 Spykee-roboter i hus, nå skal det lekes</title>
321 <link>http://www.hungry.com/~pere/blog/2_Spykee_roboter_i_hus__n__skal_det_lekes.html</link>
322 <guid isPermaLink="true">http://www.hungry.com/~pere/blog/2_Spykee_roboter_i_hus__n__skal_det_lekes.html</guid>
323 <pubDate>Wed, 18 Aug 2010 13:30:00 +0200</pubDate>
324 <description>&lt;p&gt;Jeg kjøpte nettopp to
325 &lt;a href=&quot;http://www.spykee-robot.com/&quot;&gt;Spykee&lt;/a&gt;-roboter, for test og
326 leking. Kjøpte to da det var så billige, og gir meg mulighet til å
327 eksperimentere uten å være veldig redd for å ødelegge alt ved å bytte
328 ut firmware og slikt. Oppdaget at lekebutikken på Bryn senter hadde
329 en liten stabel på lager som de ikke hadde klart å selge ut etter
330 fjorårets juleinnkjøp, og var villig til å selge for en femtedel av
331 vanlig pris. Jeg, Ronny og Jarle har skaffet oss restbeholdningen, og
332 det blir morsomt å se hva vi får ut av dette.&lt;/p&gt;
333
334 &lt;p&gt;Roboten har belter styrt av to motorer, kamera, høytaler, mikrofon
335 og wifi-tilkobling. Det hele styrt av en GPL-lisensiert databoks som
336 jeg mistenker kjører linux. Firmware-kildekoden ble visst publisert i
337 mai. Eneste utfordringen er at kontroller-programvaren kun finnes til
338 Windows, men det må en kunne jobbe seg rundt når vi har kildekoden til
339 firmwaren. :)&lt;/p&gt;
340
341 &lt;ul&gt;
342 &lt;li&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Spykee&quot;&gt;Wikipedia-oppføring&lt;/a&gt;&lt;/li&gt;
343 &lt;li&gt;&lt;a href=&quot;http://www.spykeeworld.com/spykee/US/freeSoftware.html&quot;&gt;Nedlasting av firmware-kilden&lt;/a&gt;&lt;/li&gt;
344 &lt;li&gt;&lt;a href=&quot;http://wiki.nuug.no/grupper/robot&quot;&gt;prosjektwiki hos NUUG&lt;/a&gt;&lt;/li&gt;
345 &lt;/ul&gt;
346 </description>
347 </item>
348
349 <item>
350 <title>Rob Weir: How to Crush Dissent</title>
351 <link>http://www.hungry.com/~pere/blog/Rob_Weir__How_to_Crush_Dissent.html</link>
352 <guid isPermaLink="true">http://www.hungry.com/~pere/blog/Rob_Weir__How_to_Crush_Dissent.html</guid>
353 <pubDate>Sun, 15 Aug 2010 22:20:00 +0200</pubDate>
354 <description>&lt;p&gt;I found the notes from Rob Weir on
355 &lt;a href=&quot;http://feedproxy.google.com/~r/robweir/antic-atom/~3/VGb23-kta8c/how-to-crush-dissent.html&quot;&gt;how
356 to crush dissent&lt;/a&gt; matching my own thoughts on the matter quite
357 well. Highly recommended for those wondering which road our society
358 should go down. In my view we have been heading the wrong way for a
359 long time.&lt;/p&gt;
360 </description>
361 </item>
362
363 <item>
364 <title>No hardcoded config on Debian Edu clients</title>
365 <link>http://www.hungry.com/~pere/blog/No_hardcoded_config_on_Debian_Edu_clients.html</link>
366 <guid isPermaLink="true">http://www.hungry.com/~pere/blog/No_hardcoded_config_on_Debian_Edu_clients.html</guid>
367 <pubDate>Mon, 9 Aug 2010 20:15:00 +0200</pubDate>
368 <description>&lt;p&gt;As reported earlier, the last few days I have looked at how Debian
369 Edu clients are configured, and tried to get rid of all hardcoded
370 configuration settings on the clients. I believe the work to be
371 mostly done, and the clients seem to work just fine with dynamically
372 generated configuration.&lt;/p&gt;
373
374 &lt;p&gt;What is the point, you might ask? The point is to allow a Debian
375 Edu desktop to integrate into an existing network infrastructure
376 without any manual configuration.&lt;/p&gt;
377
378 &lt;p&gt;This is what happens when installing a Debian Edu client here at
379 the University of Oslo using PXE. With the PXE installation, I am
380 asked for language (Norwegian Bokmål), locality (Norway) and keyboard
381 layout (no-latin1), Debian Edu profile (Roaming Workstation), if I
382 accept to reformat the hard drive (yes), if I want to submit info to
383 popcon.debian.org (no) and root password (secret). After answering
384 these questions, the installer goes ahead and does its thing, and
385 after around 50 minutes it is done. I press enter to finish the
386 installation, and the machine reboots into KDE. When the machine is
387 ready and kdm asks for login information, I enter my university
388 username and password, am told by kdm that a local home directory has
389 been created and that I must log in again, and finally log in with the
390 same username and password to the KDE 4.4 desktop. At no point during
391 this process did it ask for university specific settings, and all the
392 required configuration was dynamically detected using information
393 fetched via DHCP and DNS. The roaming workstation is now ready for
394 use.&lt;/p&gt;
395
396 &lt;p&gt;How was this done, you might wonder? First of all, here is the
397 list of things that need to be configured on the client to get it
398 working properly out of the box:&lt;/p&gt;
399
400 &lt;ul&gt;
401 &lt;li&gt;IP address/netmask and DNS server.&lt;/li&gt;
402 &lt;li&gt;Web proxy URL.&lt;/li&gt;
403 &lt;li&gt;LDAP server for NSS directory information (user, group, etc).&lt;/li&gt;
404 &lt;li&gt;Kerberos server for PAM password checking.&lt;/li&gt;
405 &lt;li&gt;SMB mount point to access the network home directory. (*)&lt;/li&gt;
406 &lt;li&gt;Central syslog server to send syslog messages to. (*)&lt;/li&gt;
407 &lt;li&gt;Sitesummary collector URL to submit info to central server. (*)&lt;/li&gt;
408 &lt;/ul&gt;
409
410 &lt;p&gt;(Hm, did I forget anything? Let me knew if I did.)&lt;/p&gt;
411
412 &lt;p&gt;The points marked (*) are not required to be able to use the
413 machine, but needed to provide central storage and allowing system
414 administrators to track their machines. Since yesterday, everything
415 but the sitesummary collector URL is dynamically discovered at boot
416 and installation time in the svn version of Debian Edu.&lt;/p&gt;
417
418 &lt;p&gt;The IP and DNS setup is fetched during boot using DHCP as usual.
419 When a DHCP update arrives, the proxy setup is updated by looking for
420 http://wpat/wpad.dat and using the content of this WPAD file to
421 configure the http and ftp proxy in /etc/environment and
422 /etc/apt/apt.conf. I decided to update the proxy setup using a DHCP
423 hook to ensure that the client stops using the Debian Edu proxy when
424 it is moved outside the Debian Edu network, and instead uses any local
425 proxy present on the new network when it moves around.&lt;/p&gt;
426
427 &lt;p&gt;The DNS names of the LDAP, Kerberos and syslog server and related
428 configuration are generated using DNS information at boot. First the
429 installer looks for a host named ldap in the current DNS domain. If
430 not found, it looks for _ldap._tcp SRV records in DNS instead. If an
431 LDAP server is found, its root DSE entry is requested and the
432 attributes namingContexts and defaultNamingContext are used to
433 determine which LDAP base to use for NSS. If there are several
434 namingContexts attibutes and the defaultNamingContext is present, that
435 LDAP subtree is used as the base. If defaultNamingContext is missing,
436 the subtrees listed as namingContexts are searched in sequence for any
437 object with class posixAccount or posixGroup, and the first one with
438 such an object is used as the LDAP base. For Kerberos, a similar
439 search is done by first looking for a host named kerberos, and then
440 for the _kerberos._tcp SRV record. I&#39;ve been unable to find a way to
441 look up the Kerberos realm, so for this the upper case string of the
442 current DNS domain is used.&lt;/p&gt;
443
444 &lt;p&gt;For the syslog server, the hosts syslog and loghost are searched
445 for, and the _syslog._udp SRV record is consulted if no such host is
446 found. This algorithm works for both Debian Edu and the University of
447 Oslo. A similar strategy would work for locating the sitesummary
448 server, but have not been implemented yet. I decided to fetch and
449 save these settings during installation, to make sure moving to a
450 different network does not change the set of users being allowed to
451 log in nor the passwords required to log in. Usernames and passwords
452 will be cached by sssd when the user logs in on the Debian Edu
453 network, and will not change as the laptop move around. For a
454 non-roaming machine, there is no caching, but given that it is
455 supposed to stay in place it should not matter much. Perhaps we
456 should switch those to use sssd too?&lt;/p&gt;
457
458 &lt;p&gt;The user&#39;s SMB mount point for the network home directory is
459 located when the user logs in for the first time. The LDAP server is
460 consulted to look for the user&#39;s LDAP object and the sambaHomePath
461 attribute is used if found. If it isn&#39;t found, the home directory
462 path fetched from NSS is used instead. Assuming the path is of the
463 form /site/server/directory/username, the second part is looked up in
464 DNS and used to generate a SMB URL of the form
465 smb://server.domain/username. This algorithm works for both Debian
466 edu and the University of Oslo. Perhaps there are better attributes
467 to use or a better algorithm that works for more sites, but this will
468 do for now. :)&lt;/p&gt;
469
470 &lt;p&gt;This work should make it easier to integrate the Debian Edu clients
471 into any LDAP/Kerberos infrastructure, and make the current setup even
472 more flexible than before. I suspect it will also work for thin
473 client servers, allowing one to easily set up LTSP and hook it into a
474 existing network infrastructure, but I have not had time to test this
475 yet.&lt;/p&gt;
476
477 &lt;p&gt;If you want to help out with implementing these things for Debian
478 Edu, please contact us on debian-edu@lists.debian.org.&lt;/p&gt;
479
480 &lt;p&gt;Update 2010-08-09: Simon Farnsworth gave me a heads-up on how to
481 detect Kerberos realm from DNS, by looking for _kerberos TXT entries
482 before falling back to the upper case DNS domain name. Will have to
483 implement it for Debian Edu. :)&lt;/p&gt;
484 </description>
485 </item>
486
487 <item>
488 <title>Testing if a file system can be used for home directories...</title>
489 <link>http://www.hungry.com/~pere/blog/Testing_if_a_file_system_can_be_used_for_home_directories___.html</link>
490 <guid isPermaLink="true">http://www.hungry.com/~pere/blog/Testing_if_a_file_system_can_be_used_for_home_directories___.html</guid>
491 <pubDate>Sun, 8 Aug 2010 21:20:00 +0200</pubDate>
492 <description>&lt;p&gt;A few years ago, I was involved in a project planning to use
493 Windows file servers as home directory servers for Debian
494 Edu/Skolelinux machines. This was thought to be no problem, as the
495 access would be through the SMB network file system protocol, and we
496 knew other sites used SMB with unix and samba as the file server to
497 mount home directories without any problems. But, after months of
498 struggling, we had to conclude that our goal was impossible.&lt;/p&gt;
499
500 &lt;p&gt;The reason is simply that while SMB can be used for home
501 directories when the file server is Samba running on Unix, this only
502 work because of Samba have some extensions and the fact that the
503 underlying file system is a unix file system. When using a Windows
504 file server, the underlying file system do not have POSIX semantics,
505 and several programs will fail if the users home directory where they
506 want to store their configuration lack POSIX semantics.&lt;/p&gt;
507
508 &lt;p&gt;As part of this work, I wrote a small C program I want to share
509 with you all, to replicate a few of the problematic applications (like
510 OpenOffice.org and GCompris) and see if the file system was working as
511 it should. If you find yourself in spooky file system land, it might
512 help you find your way out again. This is the fs-test.c source:&lt;/p&gt;
513
514 &lt;pre&gt;
515 /*
516 * Some tests to check the file system sematics. Used to verify that
517 * CIFS from a windows server do not work properly as a linux home
518 * directory.
519 * License: GPL v2 or later
520 *
521 * needs libsqlite3-dev and build-essential installed
522 * compile with: gcc -Wall -lsqlite3 -DTEST_SQLITE fs-test.c -o fs-test
523 */
524
525 #define _FILE_OFFSET_BITS 64
526 #define _LARGEFILE_SOURCE 1
527 #define _LARGEFILE64_SOURCE 1
528
529 #define _GNU_SOURCE /* for asprintf() */
530
531 #include &amp;lt;errno.h&gt;
532 #include &amp;lt;fcntl.h&gt;
533 #include &amp;lt;stdio.h&gt;
534 #include &amp;lt;string.h&gt;
535 #include &amp;lt;stdlib.h&gt;
536 #include &amp;lt;sys/file.h&gt;
537 #include &amp;lt;sys/stat.h&gt;
538 #include &amp;lt;sys/types.h&gt;
539 #include &amp;lt;unistd.h&gt;
540
541 #ifdef TEST_SQLITE
542 /*
543 * Test sqlite open, as done by gcompris require the libsqlite3-dev
544 * package and linking with -lsqlite3. A more low level test is
545 * below.
546 * See also &amp;lt;URL: http://www.sqlite.org./faq.html#q5 &gt;.
547 */
548 #include &amp;lt;sqlite3.h&gt;
549 #define CREATE_TABLE_USERS \
550 &quot;CREATE TABLE users (user_id INT UNIQUE, login TEXT, lastname TEXT, firstname TEXT, birthdate TEXT, class_id INT ); &quot;
551 int test_sqlite_open(void) {
552 char *zErrMsg;
553 char *name = &quot;testsqlite.db&quot;;
554 sqlite3 *db=NULL;
555 unlink(name);
556 int rc = sqlite3_open(name, &amp;db);
557 if( rc ){
558 printf(&quot;error: sqlite open of %s failed: %s\n&quot;, name, sqlite3_errmsg(db));
559 sqlite3_close(db);
560 return -1;
561 }
562
563 /* create tables */
564 rc = sqlite3_exec(db,CREATE_TABLE_USERS, NULL, 0, &amp;zErrMsg);
565 if( rc != SQLITE_OK ){
566 printf(&quot;error: sqlite table create failed: %s\n&quot;, zErrMsg);
567 sqlite3_close(db);
568 return -1;
569 }
570 printf(&quot;info: sqlite worked\n&quot;);
571 sqlite3_close(db);
572 return 0;
573 }
574 #endif /* TEST_SQLITE */
575
576 /*
577 * Demonstrate locking issue found in gcompris using sqlite3. This
578 * work with ext3, but not with cifs server on Windows 2003. This is
579 * done in the sqlite3 library.
580 * See also
581 * &amp;lt;URL:http://www.cygwin.com/ml/cygwin/2001-08/msg00854.html&gt; and the
582 * POSIX specification
583 * &amp;lt;URL:http://www.opengroup.org/onlinepubs/009695399/functions/fcntl.html&gt;.
584 */
585 int test_gcompris_locking(void) {
586 struct flock fl;
587 char *name = &quot;testsqlite.db&quot;;
588 unlink(name);
589 int fd = open(name, O_RDWR|O_CREAT|O_LARGEFILE, 0644);
590 printf(&quot;info: testing fcntl locking\n&quot;);
591
592 fl.l_whence = SEEK_SET;
593 fl.l_pid = getpid();
594 printf(&quot; Read-locking 1 byte from 1073741824&quot;);
595 fl.l_start = 1073741824;
596 fl.l_len = 1;
597 fl.l_type = F_RDLCK;
598 if (0 != fcntl(fd, F_SETLK, &amp;fl) ) printf(&quot; - error!\n&quot;); else printf(&quot;\n&quot;);
599
600 printf(&quot; Read-locking 510 byte from 1073741826&quot;);
601 fl.l_start = 1073741826;
602 fl.l_len = 510;
603 fl.l_type = F_RDLCK;
604 if (0 != fcntl(fd, F_SETLK, &amp;fl) ) printf(&quot; - error!\n&quot;); else printf(&quot;\n&quot;);
605
606 printf(&quot; Unlocking 1 byte from 1073741824&quot;);
607 fl.l_start = 1073741824;
608 fl.l_len = 1;
609 fl.l_type = F_UNLCK;
610 if (0 != fcntl(fd, F_SETLK, &amp;fl) ) printf(&quot; - error!\n&quot;); else printf(&quot;\n&quot;);
611
612 printf(&quot; Write-locking 1 byte from 1073741824&quot;);
613 fl.l_start = 1073741824;
614 fl.l_len = 1;
615 fl.l_type = F_WRLCK;
616 if (0 != fcntl(fd, F_SETLK, &amp;fl) ) printf(&quot; - error!\n&quot;); else printf(&quot;\n&quot;);
617
618 printf(&quot; Write-locking 510 byte from 1073741826&quot;);
619 fl.l_start = 1073741826;
620 fl.l_len = 510;
621 if (0 != fcntl(fd, F_SETLK, &amp;fl) ) printf(&quot; - error!\n&quot;); else printf(&quot;\n&quot;);
622
623 printf(&quot; Unlocking 2 byte from 1073741824&quot;);
624 fl.l_start = 1073741824;
625 fl.l_len = 2;
626 fl.l_type = F_UNLCK;
627 if (0 != fcntl(fd, F_SETLK, &amp;fl) ) printf(&quot; - error!\n&quot;); else printf(&quot;\n&quot;);
628
629 close(fd);
630 return 0;
631 }
632
633 /*
634 * Test if permissions of freshly created directories allow entries
635 * below them. This was a problem with OpenOffice.org and gcompris.
636 * Mounting with option &#39;sync&#39; seem to solve this problem while
637 * slowing down file operations.
638 */
639 int test_subdirectory_creation(void) {
640 #define LEVELS 5
641 char *path = strdup(&quot;test&quot;);
642 char *dirs[LEVELS];
643 int level;
644 printf(&quot;info: testing subdirectory creation\n&quot;);
645 for (level = 0; level &amp;lt; LEVELS; level++) {
646 char *newpath = NULL;
647 if (-1 == mkdir(path, 0777)) {
648 printf(&quot; error: Unable to create directory &#39;%s&#39;: %s\n&quot;,
649 path, strerror(errno));
650 break;
651 }
652 asprintf(&amp;newpath, &quot;%s/%s&quot;, path, &quot;test&quot;);
653 free(path);
654 path = newpath;
655 }
656 return 0;
657 }
658
659 /*
660 * Test if symlinks can be created. This was a problem detected with
661 * KDE.
662 */
663 int test_symlinks(void) {
664 printf(&quot;info: testing symlink creation\n&quot;);
665 unlink(&quot;symlink&quot;);
666 if (-1 == symlink(&quot;file&quot;, &quot;symlink&quot;))
667 printf(&quot; error: Unable to create symlink\n&quot;);
668 return 0;
669 }
670
671 int main(int argc, char **argv) {
672 printf(&quot;Testing POSIX/Unix sematics on file system\n&quot;);
673 test_symlinks();
674 test_subdirectory_creation();
675 #ifdef TEST_SQLITE
676 test_sqlite_open();
677 #endif /* TEST_SQLITE */
678 test_gcompris_locking();
679 return 0;
680 }
681 &lt;/pre&gt;
682
683 &lt;p&gt;When everything is working, it should print something like
684 this:&lt;/p&gt;
685
686 &lt;pre&gt;
687 Testing POSIX/Unix sematics on file system
688 info: testing symlink creation
689 info: testing subdirectory creation
690 info: sqlite worked
691 info: testing fcntl locking
692 Read-locking 1 byte from 1073741824
693 Read-locking 510 byte from 1073741826
694 Unlocking 1 byte from 1073741824
695 Write-locking 1 byte from 1073741824
696 Write-locking 510 byte from 1073741826
697 Unlocking 2 byte from 1073741824
698 &lt;/pre&gt;
699
700 &lt;p&gt;I do not remember the exact details of the problems we saw, but one
701 of them was with locking, where if I remember correctly, POSIX allow a
702 read-only lock to be upgraded to a read-write lock without unlocking
703 the read-only lock (while Windows do not). Another was a bug in the
704 CIFS/SMB client implementation in the Linux kernel where directory
705 meta information would be wrong for a fraction of a second, making
706 OpenOffice.org fail to create its deep directory tree because it was
707 not allowed to create files in its freshly created directory.&lt;/p&gt;
708
709 &lt;p&gt;Anyway, here is a nice tool for your tool box, might you never need
710 it. :)&lt;/p&gt;
711
712 &lt;p&gt;Update 2010-08-27: Michael Gebetsroither report that he found the
713 script so useful that he created a GIT repository and stored it in
714 &lt;a href=&quot;http://github.com/gebi/fs-test&quot;&gt;http://github.com/gebi/fs-test&lt;/a&gt;.&lt;/p&gt;
715 </description>
716 </item>
717
718 <item>
719 <title>Autodetecting Client setup for roaming workstations in Debian Edu</title>
720 <link>http://www.hungry.com/~pere/blog/Autodetecting_Client_setup_for_roaming_workstations_in_Debian_Edu.html</link>
721 <guid isPermaLink="true">http://www.hungry.com/~pere/blog/Autodetecting_Client_setup_for_roaming_workstations_in_Debian_Edu.html</guid>
722 <pubDate>Sat, 7 Aug 2010 14:45:00 +0200</pubDate>
723 <description>&lt;p&gt;A few days ago, I
724 &lt;a href=&quot;https://people.skolelinux.org/pere/blog/Debian_Edu_roaming_workstation___at_the_university_of_Oslo.html&quot;&gt;tried
725 to install&lt;/a&gt; a Roaming workation profile from Debian Edu/Squeeze
726 while on the university network here at the University of Oslo, and
727 noticed how much had to change to get it operational using the
728 university infrastructure. It was fairly easy, but it occured to me
729 that Debian Edu would improve a lot if I could get the client to
730 connect without any changes at all, and thus let the client configure
731 itself during installation and first boot to use the infrastructure
732 around it. Now I am a huge step further along that road.&lt;/p&gt;
733
734 &lt;p&gt;With our current squeeze-test packages, I can select the roaming
735 workstation profile and get a working laptop connecting to the
736 university LDAP server for user and group and our active directory
737 servers for Kerberos authentication. All this without any
738 configuration at all during installation. My users home directory got
739 a bookmark in the KDE menu to mount it via SMB, with the correct URL.
740 In short, openldap and sssd is correctly configured. In addition to
741 this, the client look for http://wpad/wpad.dat to configure a web
742 proxy, and when it fail to find it no proxy settings are stored in
743 /etc/environment and /etc/apt/apt.conf. Iceweasel and KDE is
744 configured to look for the same wpad configuration and also do not use
745 a proxy when at the university network. If the machine is moved to a
746 network with such wpad setup, it would automatically use it when DHCP
747 gave it a IP address.&lt;/p&gt;
748
749 &lt;p&gt;The LDAP server is located using DNS, by first looking for the DNS
750 entry ldap.$domain. If this do not exist, it look for the
751 _ldap._tcp.$domain SRV records and use the first one as the LDAP
752 server. Next, it connects to the LDAP server and search all
753 namingContexts entries for posixAccount or posixGroup objects, and
754 pick the first one as the LDAP base. For Kerberos, a similar
755 algorithm is used to locate the LDAP server, and the realm is the
756 uppercase version of $domain.&lt;/p&gt;
757
758 &lt;p&gt;So, what is not working, you might ask. SMB mounting my home
759 directory do not work. No idea why, but suspected the incorrect
760 Kerberos settings in /etc/krb5.conf and /etc/samba/smb.conf might be
761 the cause. These are not properly configured during installation, and
762 had to be hand-edited to get the correct Kerberos realm and server,
763 but SMB mounting still do not work. :(&lt;/p&gt;
764
765 &lt;p&gt;With this automatic configuration in place, I expect a Debian Edu
766 roaming profile installation would be able to automatically detect and
767 connect to any site using LDAP and Kerberos for NSS directory and PAM
768 authentication. It should also work out of the box in a Active
769 Directory environment providing posixAccount and posixGroup objects
770 with UID and GID values.&lt;/p&gt;
771
772 &lt;p&gt;If you want to help out with implementing these things for Debian
773 Edu, please contact us on debian-edu@lists.debian.org.&lt;/p&gt;
774 </description>
775 </item>
776
777 <item>
778 <title>Debian Edu roaming workstation - at the university of Oslo</title>
779 <link>http://www.hungry.com/~pere/blog/Debian_Edu_roaming_workstation___at_the_university_of_Oslo.html</link>
780 <guid isPermaLink="true">http://www.hungry.com/~pere/blog/Debian_Edu_roaming_workstation___at_the_university_of_Oslo.html</guid>
781 <pubDate>Tue, 3 Aug 2010 23:30:00 +0200</pubDate>
782 <description>&lt;p&gt;The new roaming workstation profile in Debian Edu/Squeeze is fairly
783 similar to the laptop setup am I working on using Ubuntu for the
784 University of Oslo, and just for the heck of it, I tested today how
785 hard it would be to integrate that profile into the university
786 infrastructure. In this case, it is the university LDAP server,
787 Active Directory Kerberos server and SMB mounting from the Netapp file
788 servers.&lt;/p&gt;
789
790 &lt;p&gt;I was pleasantly surprised that the only three files needed to be
791 changed (/etc/sssd/sssd.conf, /etc/ldap.conf and
792 /etc/mklocaluser.d/20-debian-edu-config) and one file had to be added
793 (/usr/share/perl5/Debian/Edu_Local.pm), to get the client working.
794 Most of the changes were to get the client to use the university LDAP
795 for NSS and Kerberos server for PAM, but one was to change a hard
796 coded DNS domain name in the mklocaluser hook from .intern to
797 .uio.no.&lt;/p&gt;
798
799 &lt;p&gt;This testing was so encouraging, that I went ahead and adjusted the
800 Debian Edu scripts and setup in subversion to centralise the roaming
801 workstation setup a bit more and avoid the hardcoded DNS domain name,
802 so that when I test this tomorrow, I expect to get away with modifying
803 only /etc/sssd/sssd.conf and /etc/ldap.conf to get it to use the
804 university servers.&lt;/p&gt;
805
806 &lt;p&gt;My goal is to get the clients to have no hardcoded settings and
807 fetch all their initial setup during installation and first boot, to
808 allow them to be inserted also into environments where the default
809 setup in Debian Edu has been changed or as with the university, where
810 the environment is different but provides the protocols Debian Edu
811 uses.&lt;/p&gt;
812 </description>
813 </item>
814
815 </channel>
816 </rss>