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