<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1625266449151396326</id><updated>2024-09-23T06:25:32.351+01:00</updated><category term="exim"/><category term="ldap"/><category term="linux"/><category term="amanda"/><category term="backup"/><category term="samba"/><category term="ubuntu"/><category term="CGI"/><category term="CUPS"/><category term="Virtual Machines"/><category term="auth"/><category term="filtering"/><category term="firewall"/><category term="linux nvidia"/><category term="ltsp"/><category term="modem"/><category term="office97 windowsxp"/><category term="printing"/><category term="searching"/><category term="tape"/><category term="windows"/><category term="xming"/><category term="xwindow"/><title type='text'>Nick Porter&#39;s tech notes</title><subtitle type='html'>This space is going to be used to store notes on the various tech problems I solve or come across in my work - partly as an aid to my memory and partly in case it&#39;s useful to anyone else.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://nickportertech.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://nickportertech.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Nick Porter</name><uri>http://www.blogger.com/profile/14646232662163033810</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>43</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1625266449151396326.post-3012552211778393520</id><published>2013-04-19T15:34:00.000+01:00</published><updated>2013-04-19T15:57:22.622+01:00</updated><title type='text'>First thoughts on Ubuntu Raring</title><content type='html'>Being one who always like a new Ubuntu version to play with, I decided to upgrade slightly before the official release next Thursday.&lt;br /&gt;
&lt;br /&gt;
So far, on the whole pretty good.  Not startling changes, just incremental improvements.

However, there were two &quot;gotchas&quot;.&lt;br /&gt;
&lt;br /&gt;
Firstly skype.  There seems to be some clash between skype and proprietary nVidia drivers.  The solution is easily applied as suggested &lt;a href=&quot;http://havilahzekirosa.blogspot.co.uk/2013/04/fix-skype-not-working-in-ubuntu-1304.html&quot;&gt;here&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
The second one is CUPS.  As of CUPS 1.6 the old CUPS browsing protocol that makes printers visible to other CUPS machines has been deprecated - which is a real shame for those of use used to just turning up and seeing all the relevant local printers from the CUPS server in the building.&lt;br /&gt;
&lt;br /&gt;
After much searching, I finally found that the nice people at Ubuntu had determined not to let this change upset their users, and that the simple solution was to edit /etc/cupsd/cups-browsed.conf and add &quot;CUPS&quot; to the BrowseRemoteProtocols line and then restart the cups-browsed service.  My list of printers is now back :)</content><link rel='replies' type='application/atom+xml' href='http://nickportertech.blogspot.com/feeds/3012552211778393520/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1625266449151396326/3012552211778393520' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/3012552211778393520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/3012552211778393520'/><link rel='alternate' type='text/html' href='http://nickportertech.blogspot.com/2013/04/first-thoughts-on-ubuntu-raring.html' title='First thoughts on Ubuntu Raring'/><author><name>Nick Porter</name><uri>http://www.blogger.com/profile/14646232662163033810</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1625266449151396326.post-2464377333289229614</id><published>2011-11-30T17:07:00.002+00:00</published><updated>2011-11-30T17:10:08.675+00:00</updated><title type='text'>Ford IDS software fault</title><content type='html'>So today&#39;s fun was fighting the Ford IDS software.  Our fleet garage has happily been installing many versions of this as new ones come out - until version 75 comes out.  Then during the installation, where it is &quot;updating the database&quot; it comes up with an error UT0000 - very profound!&lt;br /&gt;&lt;br /&gt;The solution turned out to be:&lt;br /&gt;&lt;br /&gt;Install the new calibration data&lt;br /&gt;Disable antivirus (not totally sure if this was needed, but some suggested it may be)&lt;br /&gt;Do a repair install of IDS&lt;br /&gt;&lt;br /&gt;and then it decided to go all the way through the install.</content><link rel='replies' type='application/atom+xml' href='http://nickportertech.blogspot.com/feeds/2464377333289229614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1625266449151396326/2464377333289229614' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/2464377333289229614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/2464377333289229614'/><link rel='alternate' type='text/html' href='http://nickportertech.blogspot.com/2011/11/ford-ids-software-fault.html' title='Ford IDS software fault'/><author><name>Nick Porter</name><uri>http://www.blogger.com/profile/14646232662163033810</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1625266449151396326.post-7642123335030712228</id><published>2011-09-07T16:07:00.002+01:00</published><updated>2011-09-07T16:16:17.054+01:00</updated><title type='text'>Fighting domain logins in a Samba domain</title><content type='html'>A while ago, one of the servers I look after developed a strange fault with Samba domain logins.&lt;br /&gt;&lt;br /&gt;Machines that were already part of the domain were fine, but new machines were not happy.  You could join them to the domain as normal, but when you then tried to log in as a domain user, you got the error message &quot;the system cannot log you on now because the domain &lt;DOMAIN NAME&gt; is not available&quot;.&lt;br /&gt;&lt;br /&gt;Much internet searching and scratching of the head didn&#39;t resolve it - so we went into &quot;limp along&quot; mode with some machines not being put in the domain.  Even an upgrade to Samba didn&#39;t solve it.&lt;br /&gt;&lt;br /&gt;A few weeks ago the same thing happened to another system I look after - so back to Google again.  Whilst no-one seemed to be talking about exactly the same issue, I did get some ideas and bingo - found the answer.&lt;br /&gt;&lt;br /&gt;Our Samba configs are quite old and back when we started using Samba, WINS was a good thing to help windows machines along so we had &quot;wins support = yes&quot; and our dhcp server was giving out the wins server details.  It would appear that somehow WINS was the cuplrit.  So I&#39;ve turned &quot;wins support&quot; to &quot;no&quot; and removed the details from the dhcp server and now it all works as before.</content><link rel='replies' type='application/atom+xml' href='http://nickportertech.blogspot.com/feeds/7642123335030712228/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1625266449151396326/7642123335030712228' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/7642123335030712228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/7642123335030712228'/><link rel='alternate' type='text/html' href='http://nickportertech.blogspot.com/2011/09/fighting-domain-logins-in-samba-domain.html' title='Fighting domain logins in a Samba domain'/><author><name>Nick Porter</name><uri>http://www.blogger.com/profile/14646232662163033810</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1625266449151396326.post-5344777943272826510</id><published>2010-10-22T15:49:00.002+01:00</published><updated>2010-10-22T16:40:16.842+01:00</updated><title type='text'>Remote software installation on Windows workstations</title><content type='html'>There are various articles out there about how such things may be done, but here are my collective thoughts on the matter.&lt;br /&gt;&lt;br /&gt;Given a collection of machines that are members of an NT domain, and access to a domain user account that has administrative privileges on the workstations (such as a member of Domain Administrators).&lt;br /&gt;&lt;br /&gt;Then you need to get hold of the &lt;a href=&quot;http://technet.microsoft.com/en-us/sysinternals/bb896649.aspx&quot;&gt;PsTools&lt;/a&gt; suite from sysinternals.  Just install this on the machine you will be running the installations from.&lt;br /&gt;&lt;br /&gt;On the file server, I have a folder called swupdates which contains all the installers.  In particular I have Firefox, Thunderbird, Adobe Reader, Flash Player, OpenOffice, Java JRE and RealVNC.&lt;br /&gt;&lt;br /&gt;Firefox and Thunderbird need extracting from their original installers using &lt;a href=&quot;http://www.7-zip.org/&quot;&gt;7-Zip&lt;/a&gt;.  OpenOffice also needs extracting and this can be done by starting the installer and letting it run through the the extraction of files and then cancel the installation.  I make sure that the folder names involved don&#39;t include spaces for the sake of simplicity in the scripts.&lt;br /&gt;&lt;br /&gt;The installer for Flash Player can be downloaded from http://fpdownload.adobe.com/get/flashplayer/current/install_flash_player.exe to avoid the Adobe Download Manager.&lt;br /&gt;&lt;br /&gt;For Thunderbird, I take advantage of this to put the custom Thunderbird customisation that I &lt;a href=&quot;http://nickportertech.blogspot.com/2010/05/thunderbird-3-in-business-setup.html&quot;&gt;previously discussed&lt;/a&gt; on to the clients.&lt;br /&gt;&lt;br /&gt;With OpenOffice I take the opportunity to install an &lt;a href=&quot;http://wiki.services.openoffice.org/wiki/Documentation/Administration_Guide/Deactivating_Registration_Wizard&quot;&gt;extension&lt;/a&gt; that disables the first run wizard.&lt;br /&gt;&lt;br /&gt;Configuring RealVNC is done by setting up one machine and then exporting the HLML\Software\RealVNC key to a .reg file which is then imported after the software is installed on the target machine.&lt;br /&gt;&lt;br /&gt;Then we require a script to actually do the installations - for the current software collection at the time of writing this is as follows:&lt;br /&gt;&lt;br /&gt;swupdate.cmd:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;@echo off&lt;br /&gt;echo &quot;checking for installers directory on the target...&quot;&lt;br /&gt;if not exist \\%1\C$\installers mkdir \\%1\C$\installers&lt;br /&gt;if not exist \\%1\C$\installers\Firefox3.6.11 mkdir \\%1\C$\installers\Firefox3.6.11&lt;br /&gt;if not exist \\%1\C$\installers\Thunderbird3.1.5 mkdir \\%1\C$\installers\Thunderbird3.1.5&lt;br /&gt;if not exist \\%1\C$\installers\OOo mkdir \\%1\c$\installers\OOo&lt;br /&gt;echo &quot;copying installers...&quot;&lt;br /&gt;copy \\server\software\swupdates\AdbeRdr940_en_US.exe \\%1\C$\installers\&lt;br /&gt;copy \\server\software\swupdates\install_flash_player.exe \\%1\C$\installers\&lt;br /&gt;xcopy &quot;\\server\software\swupdates\Firefox3.6.11\*&quot; &quot;\\%1\C$\installers\Firefox3.6.11\&quot; /e /y&lt;br /&gt;xcopy &quot;\\server\software\swupdates\Thunderbird3.1.5\*&quot; &quot;\\%1\C$\installers\Thunderbird3.1.5\&quot; /e /y&lt;br /&gt;xcopy &quot;\\server\software\swupdates\OOo\*&quot; &quot;\\%1\C$\installers\OOo\&quot; /e/y&lt;br /&gt;copy \\server\software\swupdates\jre-6u22-windows-i586-s.exe \\%1\C$\installers\&lt;br /&gt;copy \\server\software\swupdates\vnc-4_1_3-x86_win32.exe \\%1\C$\installers\&lt;br /&gt;copy \\server\software\swupdates\realvnc.reg \\%1\C$\installers\&lt;br /&gt;echo &quot;Installing Firefox...&quot;&lt;br /&gt;psexec.exe \\%1 &quot;C:\installers\Firefox3.6.11\setup.exe&quot; -ms&lt;br /&gt;psexec.exe \\%1 &quot;C:\Program Files\Mozilla Firefox\uninstall\helper.exe&quot; /SetAsDefaultappGlobal&lt;br /&gt;echo &quot;Installing Thunderbird...&quot;&lt;br /&gt;psexec.exe \\%1 &quot;C:\installers\Thunderbird3.1.5\setup.exe&quot; -ms&lt;br /&gt;copy \\exodus\software\swupdates\custom.cfg &quot;\\%1\C$\Program Files\Mozilla Thunderbird\&quot;&lt;br /&gt;copy \\exodus\software\swupdates\custom.js &quot;\\%1\C$\Program Files\Mozilla Thunderbird\defaults\pref\&quot;&lt;br /&gt;echo &quot;Installing Adobe Reader....&quot;&lt;br /&gt;psexec.exe \\%1 &quot;C:\installers\AdbeRdr940_en_US.exe&quot; /sAll /rs&lt;br /&gt;del &quot;\\%1\C$\Documents and Settings\All Users\desktop\Adobe*.lnk&quot;&lt;br /&gt;echo &quot;Installing Flash Player...&quot;&lt;br /&gt;psexec.exe \\%1 &quot;C:\installers\install_flash_player.exe&quot; -install&lt;br /&gt;echo &quot;Installing OpenOffice...&quot;&lt;br /&gt;psexec.exe \\%1 msiexec /qn /norestart /i C:\installers\OOo\openofficeorg32.msi ADDLOCAL=ALL REMOVE=gm_o_Onlineupdate&lt;br /&gt;copy \\exodus\software\swupdates\DisableFirstStartWzd_ooo321.oxt &quot;\\%1\C$\Program Files\OpenOffice.org 3\program&quot;&lt;br /&gt;psexec.exe \\%1 &quot;C:\Program Files\OpenOffice.org 3\program\unopkg&quot; add --shared &quot;C:\Program Files\OpenOffice.org 3\program\DisableFirstStartWzd_ooo321.oxt&quot;&lt;br /&gt;echo &quot;Installing Java VM&quot;&lt;br /&gt;psexec.exe \\%1 &quot;C:\installers\jre-6u22-windows-i586-s.exe&quot; /s /v/qn&lt;br /&gt;echo &quot;Installing RealVNC&quot;&lt;br /&gt;psexec.exe \\%1 &quot;C:\installers\vnc-4_1_3-x86_win32.exe&quot; /SP- /VERYSILENT /NORESTART&lt;br /&gt;psexec.exe \\%1 regedit /s c:\installers\realvnc.reg&lt;br /&gt;echo &quot;All done&quot;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Then from a second script you call this first one with the name of each machine:&lt;br /&gt;&lt;br /&gt;updatemachine.cmd:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;@echo off&lt;br /&gt;call swupdate.cmd machine1&lt;br /&gt;call swupdate.cmd machine2&lt;br /&gt;call swupdate.cmd machine3&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Providing each machine has firewall settings set so that File and Print access is allowed in, then this will suitably run the installations on each of the machines.&lt;br /&gt;&lt;br /&gt;There are obviously many other variations that could be achieved with this - the key thing is to find the method to silent install each piece of software that you&#39;re interested in. A lot of useful info can be found on the &lt;a href=&quot;http://www.appdeploy.com/packages/&quot;&gt;AppDeploy&lt;/a&gt; site.</content><link rel='replies' type='application/atom+xml' href='http://nickportertech.blogspot.com/feeds/5344777943272826510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1625266449151396326/5344777943272826510' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/5344777943272826510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/5344777943272826510'/><link rel='alternate' type='text/html' href='http://nickportertech.blogspot.com/2010/10/remote-software-installation-on-windows.html' title='Remote software installation on Windows workstations'/><author><name>Nick Porter</name><uri>http://www.blogger.com/profile/14646232662163033810</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1625266449151396326.post-1910014203649202563</id><published>2010-08-09T10:15:00.003+01:00</published><updated>2010-08-09T10:28:48.831+01:00</updated><title type='text'>Using Ubuntu 10.04 ltsp workstations as character terminals</title><content type='html'>I&#39;ve finally got round to updating our LTSP setup to use Lucid.  We have a number of LTSP terminals that work just at the character terminal level, with the screens doing a telnet into another system and with no X Window running on them at all.&lt;br /&gt;&lt;br /&gt;Lucid&#39;s switch to the Plymouth startup system has an interesting side effect with this - namely that with the default setup, you are left just looking at the Plymouth screen and are not able to access any of the VTs to do anything else.&lt;br /&gt;&lt;br /&gt;The solution is a custom entry in the pxelinux.cfg directory relevant to the Lucid boot set (in my case /srv/tftp/ltsp/lucidi386/pxelinux.cfg - note the change from previous versions where /var/lib/tftpboot has been replaced by /srv/tftp)&lt;br /&gt;&lt;br /&gt;I&#39;ve rearranged the IP addresses of my text only workstations so that they are all in a block of 16 IP addresses which will look for the same config file using the hex address notation that PXE uses.  Then in that file I put&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;default ltsp-text&lt;br /&gt;&lt;br /&gt;label ltsp-text&lt;br /&gt;kernel vmlinuz&lt;br /&gt;append ro initrd=initrd.img quiet splash nbdport=2004 vga=normal nomodeset&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This has the added advantage that the console stays at 80x30 characters which is very usable for the application that we are using.</content><link rel='replies' type='application/atom+xml' href='http://nickportertech.blogspot.com/feeds/1910014203649202563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1625266449151396326/1910014203649202563' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/1910014203649202563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/1910014203649202563'/><link rel='alternate' type='text/html' href='http://nickportertech.blogspot.com/2010/08/using-ubuntu-1004-ltsp-workstations-as.html' title='Using Ubuntu 10.04 ltsp workstations as character terminals'/><author><name>Nick Porter</name><uri>http://www.blogger.com/profile/14646232662163033810</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1625266449151396326.post-2229242768174596730</id><published>2010-07-26T10:49:00.002+01:00</published><updated>2010-07-26T11:25:34.565+01:00</updated><title type='text'>Using https with wget</title><content type='html'>The version of wget installed on a debian box seems to not like doing https by default due to not knowing about the CA certificates.&lt;br /&gt;&lt;br /&gt;Here&#39;s a solution I found:&lt;br /&gt;&lt;br /&gt;Download cacert.pem from http://curl.haxx.se/docs/caextract.html and put it in /etc/ssl/certs&lt;br /&gt;&lt;br /&gt;Then amend /etc/wgetrc to add the line&lt;br /&gt;&lt;br /&gt;ca_certificate=/etc/ssl/certs/cacert.pem&lt;br /&gt;&lt;br /&gt;Then wget knows about the CA certificates and all is well for https</content><link rel='replies' type='application/atom+xml' href='http://nickportertech.blogspot.com/feeds/2229242768174596730/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1625266449151396326/2229242768174596730' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/2229242768174596730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/2229242768174596730'/><link rel='alternate' type='text/html' href='http://nickportertech.blogspot.com/2010/07/using-https-with-wget.html' title='Using https with wget'/><author><name>Nick Porter</name><uri>http://www.blogger.com/profile/14646232662163033810</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1625266449151396326.post-3051171983742278452</id><published>2010-05-24T09:34:00.006+01:00</published><updated>2010-08-24T15:56:42.632+01:00</updated><title type='text'>Thunderbird 3 in a business setup</title><content type='html'>For a number of years we&#39;ve used Thunderbird as the mail client of choice.  It has a good feature set and does IMAP well.  However, the advent of Thunderbird 3 adds a little issue.&lt;br /&gt;&lt;br /&gt;To reduce the size of roaming profiles (and therefore speed up login and log out) we have thunderbird profiles mapped to a directory within the users&#39; login directory - and hence stored on the server.  Thunderbird 3, automatically downloads copies of all the users&#39; IMAP email to make both an offline cache and to index the mail for the new search facility.&lt;br /&gt;&lt;br /&gt;This would mean that the server space used by the Thunderbird profile would grow considerably.&lt;br /&gt;&lt;br /&gt;So there&#39;s two choices.  Either disable the global indexing and off line store or put the off line store somewhere else.&lt;br /&gt;&lt;br /&gt;As the new search is a good tool, I&#39;ve opted for the second - though I&#39;ll leave it up to the users as to whether they use the search tool or not.&lt;br /&gt;&lt;br /&gt;The solution here is to add a couple of files to each machine running Thunderbird:&lt;br /&gt;&lt;br /&gt;Firstly in the defaults/pref/ folder (/usr/lib/thunderbird-3.0.4/defaults/pref on linux , C:\Program Files\Thunderbird\defaults\pref on windows) I add a little file custom.js&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;/* Custom local config */&lt;br /&gt;&lt;br /&gt;pref(&quot;general.config.obscure_value&quot;, 0);&lt;br /&gt;pref(&quot;general.config.filename&quot;, &quot;custom.cfg&quot;);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The first of those settings means that you can write your config file in plain ASCII rather than a strange encoding and the second is the name of the custom config.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Next, the custom config goes in /usr/lib/thunderbird-3.0.4 for linux or C:\Program Files\Thunderbird for windows&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;//&lt;br /&gt;/* This will disable indexation by default - can be enabled per user */&lt;br /&gt;defaultPref(&quot;mailnews.database.global.indexer.enabled&quot;, false);&lt;br /&gt;&lt;br /&gt;/* This will disable offline download by default */&lt;br /&gt;defaultPref(&quot;mail.server.default.offline_download&quot;, false);&lt;br /&gt;&lt;br /&gt;/* This will parse the prefs.js and set the directory for &quot;offline_download&quot; for each IMAP account */&lt;br /&gt;&lt;br /&gt;if(getenv(&quot;USER&quot;) != &quot;&quot;) {&lt;br /&gt; // *NIX settings&lt;br /&gt; var env_user    = getenv(&quot;USER&quot;);&lt;br /&gt; var env_home    = getenv(&quot;HOME&quot;);&lt;br /&gt; var env_os = &quot;linux&quot;;&lt;br /&gt;} else {&lt;br /&gt; // Windows settings&lt;br /&gt; var env_user    = getenv(&quot;USERNAME&quot;);&lt;br /&gt; var env_home    = getenv(&quot;HOMEPATH&quot;);&lt;br /&gt; var env_os = &quot;windows&quot;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;if (getPref(&quot;mail.accountmanager.accounts&quot;)) {&lt;br /&gt;&lt;br /&gt;  var listExistingAccounts = getPref(&quot;mail.accountmanager.accounts&quot;);&lt;br /&gt;  var arrayExistingAccounts = listExistingAccounts.split(&#39;,&#39;);&lt;br /&gt;&lt;br /&gt;  for (var i=0; i &lt; arrayExistingAccounts.length; i++){&lt;br /&gt;    var serverFromAccount = getPref(&quot;mail.account.&quot; + arrayExistingAccounts[i] + &quot;.server&quot;);&lt;br /&gt;    var configType = getPref(&quot;mail.server.&quot; + serverFromAccount + &quot;.type&quot;);&lt;br /&gt;    if (configType == &quot;imap&quot;) {&lt;br /&gt;      defaultPref(&quot;mail.server.&quot; + serverFromAccount + &quot;.offline_download&quot;, false);&lt;br /&gt;      lockPref(&quot;mail.server.&quot; + serverFromAccount + &quot;.server_sub_directory&quot;, &quot;INBOX.&quot;);&lt;br /&gt;      var serverName = getPref(&quot;mail.server.&quot; + serverFromAccount + &quot;.hostname&quot;);&lt;br /&gt;      var userName = getPref(&quot;mail.server.&quot; + serverFromAccount + &quot;.userName&quot;);&lt;br /&gt;      if (env_os == &quot;windows&quot;) {&lt;br /&gt;        lockPref(&quot;mail.server.&quot; + serverFromAccount + &quot;.directory&quot;, &quot;[LocalAppData]Thunderbird/&quot; + serverName + &quot;/&quot; + userName);&lt;br /&gt;        lockPref(&quot;mail.server.&quot; + serverFromAccount + &quot;.directory-rel&quot;, &quot;[LocalAppData]Thunderbird/&quot; + serverName + &quot;/&quot; + userName);&lt;br /&gt;      }&lt;br /&gt;      if (env_os == &quot;linux&quot;) {&lt;br /&gt;        lockPref(&quot;mail.server.&quot; + serverFromAccount + &quot;.directory&quot;, &quot;/opt/mailcache/&quot; + env_user + &quot;/&quot; + serverName + &quot;/&quot; + userName);&lt;br /&gt;        lockPref(&quot;mail.server.&quot; + serverFromAccount + &quot;.directory-rel&quot;, &quot;/opt/mailcache/&quot; + env_user + &quot;/&quot; + serverName + &quot;/&quot; + userName);&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I also take advantage of this to set the server directory for the IMAP folders to INBOX. as that gives the better layout of mailboxes in Thunderbird when talking to a Courier IMAP server.&lt;br /&gt;&lt;br /&gt;On a Windows machine, I set the users&#39; offline cache to being in the Local Settings part of their profile - this keeps it safe to the user but avoids it being synced to the server.&lt;br /&gt;&lt;br /&gt;For a Linux machine, I set up an area called /opt/mailcache with the same kind of permissions as /tmp i.e. globally writable but with the sticky bit set.  This has the result that individual users can&#39;t get at each others mail cache.&lt;br /&gt;&lt;br /&gt;In our LTSP setup, /opt/mailcache will be excluded from the backup as there is no need to back this stuff up as it is simply a copy of what is already in the mailbox.</content><link rel='replies' type='application/atom+xml' href='http://nickportertech.blogspot.com/feeds/3051171983742278452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1625266449151396326/3051171983742278452' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/3051171983742278452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/3051171983742278452'/><link rel='alternate' type='text/html' href='http://nickportertech.blogspot.com/2010/05/thunderbird-3-in-business-setup.html' title='Thunderbird 3 in a business setup'/><author><name>Nick Porter</name><uri>http://www.blogger.com/profile/14646232662163033810</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1625266449151396326.post-2541951111862117787</id><published>2010-04-06T19:17:00.002+01:00</published><updated>2010-04-06T20:11:19.339+01:00</updated><title type='text'>Windows 7 on a Samba domain</title><content type='html'>After years of happily running Samba domains controlling Windows XP machines, I&#39;ve had to investigate how Windows 7 integrates into that environment.&lt;br /&gt;&lt;br /&gt;I usually use Debian as the server platform of choice.  This has the benefit of a stable software platform at the detriment of not always being up to date.  And in this instance that is a problem.  Some of the bits that are required in Samba to support 7 in a domain environment don&#39;t appear until later versions of Samba than the one currently shipped with Debian &quot;lenny&quot; - the current stable release.&lt;br /&gt;&lt;br /&gt;Fortunately the very nice people at SerNet provide Debian packages for the latest Samba release (http://enterprisesamba.com/index.php?id=148) - so by simply adding the relevant repository and installing sernet-samba in place of the normal samba, we can get these extra features.&lt;br /&gt;&lt;br /&gt;There are still a couple of registry hacks needed to make 7 work:&lt;br /&gt;&lt;br /&gt;     HKLM\System\CCS\Services\LanmanWorkstation\Parameters&lt;br /&gt;            DWORD  DomainCompatibilityMode = 1&lt;br /&gt;            DWORD  DNSNameResolutionRequired = 0&lt;br /&gt;&lt;br /&gt;And then it will join the domain.  There is a warning that pops up about dns issues, but that is fine to ignore and it will work.&lt;br /&gt;&lt;br /&gt;Now, the next fun part is that due to the drastic changes in profile data between XP and 7, the two won&#39;t share a profile - so you end up with two for each user if you are in a mixed environment.  This is not a problem as such, but you will want to consider some folder redirection, particularly of My Documents to a location that both can see, otherwise you&#39;ll have a different copy of documents for each operating systems.&lt;br /&gt;&lt;br /&gt;If you set that to be a network location - which would be the most sensible - then on desktop PCs you&#39;ll probably also want to disable offline files.  While they&#39;re great for laptop users, there is no point in syncing each users files to the desktop in an environment where the machines never leave the network, plus the system tends to get rather confused as it keeps trying to connect to sync other users files without the appropriate permissions to do so.</content><link rel='replies' type='application/atom+xml' href='http://nickportertech.blogspot.com/feeds/2541951111862117787/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1625266449151396326/2541951111862117787' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/2541951111862117787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/2541951111862117787'/><link rel='alternate' type='text/html' href='http://nickportertech.blogspot.com/2010/04/windows-7-on-samba-domain.html' title='Windows 7 on a Samba domain'/><author><name>Nick Porter</name><uri>http://www.blogger.com/profile/14646232662163033810</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1625266449151396326.post-2756725385267985387</id><published>2010-02-10T18:26:00.002+00:00</published><updated>2010-02-10T18:56:31.994+00:00</updated><title type='text'>Ubuntu machine with NFS home and LDAP authentication</title><content type='html'>A while ago I posted about joining &lt;a href=&quot;http://nickportertech.blogspot.com/2008/01/joining-ubuntu-kubuntu-machine-to-nis.html&quot;&gt;Ubuntu machines to an NFS / NIS setup.&lt;/a&gt; Well, things have moved on since then; both later Ubuntu distros and our authentication is now LDAP.  So, here&#39;s the up to date procedure.  This does assume some knowledge of linux commands and familiarity with editing config files.&lt;br /&gt;&lt;br /&gt;As before, the first issue is that of moving /home.  And that hasn&#39;t changed.  When setting up the machine create a user who is local to the machine - pick a name that won&#39;t clash with any user in the LDAP - and then after the initial setup, boot in single user mode and move /home to /localhome.  Then edit /etc/passwd to change references to /home into /localhome.&lt;br /&gt;&lt;br /&gt;To allow NFS shares to be mounted install the nfs-common package.  Then you can edit /etc/fstab to include the mounting of any NFS shares (after having made the mount point)&lt;br /&gt;&lt;br /&gt;e.g.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: courier new;&quot;&gt;bigserver:/home    /home   nfs     defaults        0       0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Then to get the authentication going you want to install libnss-ldap and libpam-ldap.  The installation of these packages will ask for the details of your LDAP setup such as the base dn and the admin cn and password.&lt;br /&gt;&lt;br /&gt;Give it a re-boot and you should be off and running.&lt;br /&gt;&lt;br /&gt;One caveat - due to the timing of things launching - you may see warnings about certain partitions not being mounted.  This can be caused by delays in getting a network address.&lt;br /&gt;&lt;br /&gt;A quick fix for this is to add &quot;&lt;span style=&quot;font-family: courier new;&quot;&gt;mount -a&lt;/span&gt;&quot; to the /etc/rc.local file to force a re-try at any mounts that fail at the end of the boot process.&lt;br /&gt;&lt;br /&gt;If you want to allow any of your users to have special powers on the desktop then &lt;span style=&quot;font-family: courier new;&quot;&gt;/etc/security/group.conf&lt;/span&gt; is your friend.  This grants extra group membership to logged in users depending on where they come from and what time / day it is.&lt;br /&gt;&lt;br /&gt;You will probably want a line like:&lt;br /&gt;&lt;span style=&quot;font-family: courier new;&quot;&gt;gdm;*;*;Al0000-2400;cdrom, floppy, audio, video, plugdev&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;to allow all users at the desktop access to relevant hardware&lt;br /&gt;&lt;br /&gt;But you may also want&lt;br /&gt;&lt;span style=&quot;font-family: courier new;&quot;&gt;gdm;*;importantuser;Al0000-2400;lpadmin, admin&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To allow importantuser to do administrative things.  You&#39;ll then need to add&lt;br /&gt;&lt;span style=&quot;font-family: courier new;&quot;&gt;auth  optional   pam_group.so&lt;/span&gt;&lt;br /&gt;to /etc/pam.d/common-auth to make this active.</content><link rel='replies' type='application/atom+xml' href='http://nickportertech.blogspot.com/feeds/2756725385267985387/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1625266449151396326/2756725385267985387' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/2756725385267985387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/2756725385267985387'/><link rel='alternate' type='text/html' href='http://nickportertech.blogspot.com/2010/02/ubuntu-machine-with-nfs-home-and-ldap.html' title='Ubuntu machine with NFS home and LDAP authentication'/><author><name>Nick Porter</name><uri>http://www.blogger.com/profile/14646232662163033810</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1625266449151396326.post-2947301156257203362</id><published>2009-11-20T16:54:00.002+00:00</published><updated>2009-11-20T17:03:46.193+00:00</updated><title type='text'>Creating user based firewalls on inbound pptp connections</title><content type='html'>There are certain security situations where you want to be able to allow a remote user to connect to your network using pptp, but you want to lock down what devices on the network they have access to.&lt;br /&gt;&lt;br /&gt;Usually with the linux pptp system, once the user is connected, assuming ip forwarding is running on the host that is the pptp end point, they have access to anything on the local subnet.&lt;br /&gt;&lt;br /&gt;What I&#39;ve done to allow some control over this situation is create some custom scripts to go in /etc/ppp/ip-up.d and /etc/ppp/ip-down.d&lt;br /&gt;&lt;br /&gt;For the &quot;up&quot; version I have:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;#!/bin/sh&lt;br /&gt;&lt;br /&gt;PPP_USER=`/usr/bin/w | /bin/grep &quot;$PPP_IFACE&quot; | sed &quot;s/ .*//&quot;`&lt;br /&gt;&lt;br /&gt;if [ -x &quot;/etc/ppp/userfw/$PPP_USER&quot; ]; then&lt;br /&gt; &quot;/etc/ppp/userfw/$PPP_USER&quot;&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;exit 0&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;and for the down version I have&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;#!/bin/sh&lt;br /&gt;&lt;br /&gt;PPP_RULE=`/sbin/iptables -L FORWARD -n -v --line-numbers | /bin/grep &quot;$PPP_IFACE&quot; | /usr/bin/head -1 | /bin/sed &quot;s/ .*//&quot;`&lt;br /&gt;while [ &quot;$PPP_RULE&quot; != &quot;&quot; ]&lt;br /&gt;do&lt;br /&gt;       /sbin/iptables -D FORWARD &quot;$PPP_RULE&quot;&lt;br /&gt;       PPP_RULE=`/sbin/iptables -L FORWARD -n -v --line-numbers | /bin/grep &quot;$PPP_IFACE&quot; | /usr/bin/head -1 | /bin/sed &quot;s/ .*//&quot;`&lt;br /&gt;done&lt;br /&gt;&lt;br /&gt;PPP_RULE=`/sbin/iptables -L INPUT -n -v --line-numbers | /bin/grep &quot;$PPP_IFACE&quot; | /usr/bin/head -1 | /bin/sed &quot;s/ .*//&quot;`&lt;br /&gt;while [ &quot;$PPP_RULE&quot; != &quot;&quot; ]&lt;br /&gt;do&lt;br /&gt;       /sbin/iptables -D INPUT &quot;$PPP_RULE&quot;&lt;br /&gt;       PPP_RULE=`/sbin/iptables -L INPUT -n -v --line-numbers | /bin/grep &quot;$PPP_IFACE&quot; | /usr/bin/head -1 | /bin/sed &quot;s/ .*//&quot;`&lt;br /&gt;done&lt;br /&gt;&lt;br /&gt;exit 0&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Then create a directory /etc/ppp/userfw and put in there per user scripts&lt;br /&gt;&lt;br /&gt;e.g.&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;#!/bin/sh&lt;br /&gt;/sbin/iptables -A FORWARD -i &quot;$PPP_IFACE&quot; -j ACCEPT&lt;br /&gt;/sbin/iptables -A INPUT -i &quot;$PPP_IFACE&quot; -j ACCEPT&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;(yes - that&#39;s a silly example as it just gives complete access - which they had anyway)&lt;br /&gt;&lt;br /&gt;With this lot, you have a simple method to lock certain users down to only be able to access certain things on your network - within the flexibility of the iptables system.  The important thing to do is to make sure that your user based rules all reference the interface with $PPP_IFACE so that they are attached to the right connection and they&#39;re deleted again with the down script when the interface is removed.</content><link rel='replies' type='application/atom+xml' href='http://nickportertech.blogspot.com/feeds/2947301156257203362/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1625266449151396326/2947301156257203362' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/2947301156257203362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/2947301156257203362'/><link rel='alternate' type='text/html' href='http://nickportertech.blogspot.com/2009/11/creating-user-based-firewalls-on.html' title='Creating user based firewalls on inbound pptp connections'/><author><name>Nick Porter</name><uri>http://www.blogger.com/profile/14646232662163033810</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1625266449151396326.post-2614084612291316069</id><published>2009-11-02T12:01:00.003+00:00</published><updated>2011-09-19T17:14:08.793+01:00</updated><title type='text'>Bluetooth pairing on the command line</title><content type='html'>I use a debian linux box with the Gnokii SMS daemon to do computer based texting.  Now normally on a server I wouldn&#39;t want to go to the bother of installing Gnome - after all, you don&#39;t sit at the server console.  But, that can be an issue for doing the bluetooth pairing needed before you can use the phone with gnokii.&lt;br /&gt;&lt;br /&gt;The answer is in /usr/share/doc/bluez-utils/examples.  There&#39;s some C code in there called passkey-agent.c&lt;br /&gt;&lt;br /&gt;Make sure you have build-essential and pkg-config and libdbus-1-dev installed then you can build it.&lt;br /&gt;&lt;br /&gt;Then, in one terminal window run &quot;passkey-agent 1234&quot; and in another do &quot;rfcomm connect rfcomm1 xx:xx:xx:xx:xx:xx&quot; to connect to your device.  The pairing will then be on the key 1234.&lt;br /&gt;&lt;br /&gt;A useful trick to avoid installing a huge amount of stuff just to do a one off job.&lt;br /&gt;&lt;br /&gt;Update:&lt;br /&gt;Debian squeeze ships with a command &quot;bluetooth-agent&quot; which replaces the passkey-agent and is already complied, so you just need to do &quot;bluetooth-agent 1234&quot; in one terminal to set up the passkey.</content><link rel='replies' type='application/atom+xml' href='http://nickportertech.blogspot.com/feeds/2614084612291316069/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1625266449151396326/2614084612291316069' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/2614084612291316069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/2614084612291316069'/><link rel='alternate' type='text/html' href='http://nickportertech.blogspot.com/2009/11/bluetooth-pairing-on-command-line.html' title='Bluetooth pairing on the command line'/><author><name>Nick Porter</name><uri>http://www.blogger.com/profile/14646232662163033810</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1625266449151396326.post-8240309519154973993</id><published>2009-08-11T20:03:00.004+01:00</published><updated>2009-08-11T20:09:25.145+01:00</updated><title type='text'>Printing from SCO OpenServer to CUPS on Debian</title><content type='html'>Ah the joys of the hideous SCO OpenServer!&lt;br /&gt;&lt;br /&gt;So here&#39;s the plan - print jobs from a SCO OpenServer machine printing via CUPS queues so that everything&#39;s in one place.  Jobs are sent by lpd from one machine to the other with the cups lpd daemon receiving the jobs and putting them in the queues for formatting as appropriate.&lt;br /&gt;&lt;br /&gt;Now SCO&#39;s printing system is trying to be clever and do all sorts of driver things and that somehow is getting passed through as the banner page option or something like that. Either way the error:&lt;br /&gt;&lt;br /&gt;Unable to create job - Bad job-sheets value &quot;standard&quot;!&lt;br /&gt;&lt;br /&gt;Was coming up in /var/log/syslog on the debian box.&lt;br /&gt;&lt;br /&gt;The solution - get the SCO box to include &quot;-o nobanner&quot; in its lp command e.g.&lt;br /&gt;&lt;br /&gt;lp -o nobanner -p printer file&lt;br /&gt;&lt;br /&gt;Then it all passes through properly.</content><link rel='replies' type='application/atom+xml' href='http://nickportertech.blogspot.com/feeds/8240309519154973993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1625266449151396326/8240309519154973993' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/8240309519154973993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/8240309519154973993'/><link rel='alternate' type='text/html' href='http://nickportertech.blogspot.com/2009/08/printing-from-sco-openserver-to-cups-on.html' title='Printing from SCO OpenServer to CUPS on Debian'/><author><name>Nick Porter</name><uri>http://www.blogger.com/profile/14646232662163033810</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1625266449151396326.post-4108274172776593458</id><published>2009-07-15T08:58:00.002+01:00</published><updated>2009-07-15T09:04:00.506+01:00</updated><title type='text'>Extracting addresses from a Maildir folder</title><content type='html'>From time to time, one of our users wants to send an email to all the people who&#39;s addresses are in one of her mailboxes.  Our IMAP setup uses Maildir folders as the back end, which have the very nice feature of each mail being a separate file.&lt;br /&gt;&lt;br /&gt;With a little appropriate use of some linux command line tools, the following will give a list of the senders addresses that are found in the given Maildir folder:&lt;br /&gt;&lt;br /&gt;grep Return-path ~username/Maildir/.mailboxname/cur/* | sed -e &#39;s/^.*&amp;lt;//&#39; | sed -e &#39;s/&amp;gt;//&#39; | sort  -u &gt; ~/email.addr&lt;br /&gt;&lt;br /&gt;replace username with the user in question and mailboxname with the appropriate mailbox and you will have a list of addresses in email.addr</content><link rel='replies' type='application/atom+xml' href='http://nickportertech.blogspot.com/feeds/4108274172776593458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1625266449151396326/4108274172776593458' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/4108274172776593458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/4108274172776593458'/><link rel='alternate' type='text/html' href='http://nickportertech.blogspot.com/2009/07/extracting-addresses-from-maildir.html' title='Extracting addresses from a Maildir folder'/><author><name>Nick Porter</name><uri>http://www.blogger.com/profile/14646232662163033810</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1625266449151396326.post-8411511594279567876</id><published>2009-06-30T01:50:00.002+01:00</published><updated>2009-06-30T01:59:01.167+01:00</updated><title type='text'>Kyocera FS2020 network printing</title><content type='html'>This is tentative post - as we&#39;re not sure this is solved yet.&lt;br /&gt;&lt;br /&gt;A new Kyocera FS2020 was having trouble printing over the network.  This appears to have been solved by setting up the host name on the printer&#39;s network interface to match the name set on the DNS.</content><link rel='replies' type='application/atom+xml' href='http://nickportertech.blogspot.com/feeds/8411511594279567876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1625266449151396326/8411511594279567876' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/8411511594279567876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/8411511594279567876'/><link rel='alternate' type='text/html' href='http://nickportertech.blogspot.com/2009/06/kyocera-fs2020-network-printing.html' title='Kyocera FS2020 network printing'/><author><name>Nick Porter</name><uri>http://www.blogger.com/profile/14646232662163033810</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1625266449151396326.post-3324660584625597526</id><published>2009-06-30T01:38:00.002+01:00</published><updated>2009-06-30T01:50:02.352+01:00</updated><title type='text'>Setting mailman user passwords</title><content type='html'>Been doing so stuff using a bunch of email addresses that are handled by scripts to customise various mailman behaviour - in particular a script that does a subscribe via email command, then reads the result and then mails the user to determine if they are already on the list or not.&lt;br /&gt;&lt;br /&gt;However, to do this we needed to set all the users up with a pre-determined password, but the initial listing of mailing list recipients was done using the mass subscription which generates random passwords.&lt;br /&gt;&lt;br /&gt;Some hunting on the internet didn&#39;t yield anything for resetting them - they could be seen using&lt;br /&gt;&lt;br /&gt;/var/lib/mailman/bin/dumpdb /var/lib/mailman/lists/&lt;listname&gt;/config.pck | less&lt;br /&gt;&lt;br /&gt;but nothing poped out about changing them - then I looked in the bin directory and found reset_pw.py.&lt;br /&gt;&lt;br /&gt;This is intented to be used to reset the passwords to new random ones - but a little edit to the script and you can use it to set the password to whatever you want running it with:&lt;br /&gt;&lt;br /&gt;withlist -l -r reset_pw &lt;listname&gt; -v</content><link rel='replies' type='application/atom+xml' href='http://nickportertech.blogspot.com/feeds/3324660584625597526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1625266449151396326/3324660584625597526' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/3324660584625597526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/3324660584625597526'/><link rel='alternate' type='text/html' href='http://nickportertech.blogspot.com/2009/06/setting-mailman-user-passwords.html' title='Setting mailman user passwords'/><author><name>Nick Porter</name><uri>http://www.blogger.com/profile/14646232662163033810</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1625266449151396326.post-6679096575410772343</id><published>2009-06-09T18:31:00.003+01:00</published><updated>2009-06-09T18:42:29.814+01:00</updated><title type='text'>Connecting to the Internet from Ubuntu using bluetooth to a Nokia E65</title><content type='html'>Having just set this up for about the 4th time, I thought it was about time to record what I actually do - rather than working it out each time!&lt;br /&gt;&lt;br /&gt;First off, I get the phone and laptop paired - easy enough using the bluetooth icon on the gnome panel.&lt;br /&gt;&lt;br /&gt;Then, edit /etc/bluetooth/rfcomm.conf to look like:&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;#&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;# RFCOMM configuration file.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;#&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;rfcomm0 {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;#       # Automatically bind the device at startup&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;        bind yes;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;#&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;#       # Bluetooth address of the device&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;        device 00:AA:BB:CC:DD:EE;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;#&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;#       # RFCOMM channel for the connection&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;        channel 2;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;#&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;#       # Description of the connection&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;        comment &quot;Nokia E65&quot;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;using the appropriate device MAC.  If you don&#39;t know this then&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;hcitool scan&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;will reveal devices that are visible in your locality and then&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;sdptool browse &lt;mac&gt;&lt;/mac&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;will let you find the channel number for Dialup Networking.&lt;br /&gt;&lt;br /&gt;Restart bluetooth after this change.&lt;br /&gt;&lt;br /&gt;Next create /etc/ppp/peers/orange&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;noauth&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;#change this if you move the path to your connect script&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;connect &quot;/usr/sbin/chat -v -f /etc/chatscripts/orange-connect&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;#change this if you move the path to your disconnect script&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;disconnect &quot;/usr/sbin/chat -v -f /etc/chatscripts/orange-disconnect&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;#I found that I needed this to remove problems with loopback on connecting&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;silent&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;#remove this if you don&#39;t want lots of information going to /var/log/messages&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;debug&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;#this is the device specified in your rfcomm.conf file&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;/dev/rfcomm0&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;#speed at which to connect - might be worth trying higher...&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;115200&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;#this is needed so that a default route is added to your routing table&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;defaultroute&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;#this is needed so that you pick up Orange&#39;s DNS settings&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;usepeerdns&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;lcp-echo-failure 0&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;lcp-echo-interval 0&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;nomagic&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;noccp&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;And /etc/chatscripts/orange-connect:&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;TIMEOUT 5&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;ECHO ON&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;ABORT &#39;\nBUSY\r&#39;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;ABORT &#39;\nERROR\r&#39;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;ABORT &#39;\nNO ANSWER\r&#39;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;ABORT &#39;\nNO CARRIER\r&#39;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;ABORT &#39;\nNO DIALTONE\r&#39;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;ABORT &#39;\nRINGING\r\n\r\nRINGING\r&#39;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;&#39;&#39; \rAT&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;TIMEOUT 12&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;OK ATE1&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;#here&#39;s the magic bit!&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;OK &#39;AT+CGDCONT=1,&quot;IP&quot;,&quot;orangeinternet&quot;&#39;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;OK ATD*99***1#&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;TIMEOUT 30&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;CONNECT &quot;&quot;&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;And /etc/chatscripts/orange-disconnect&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;ABORT &quot;BUSY&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;ABORT &quot;ERROR&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;ABORT &quot;NO DIALTONE&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;SAY &quot;\nSending break to the modem\n&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;&quot;&quot; &quot;\K&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;&quot;&quot; &quot;\K&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;&quot;&quot; &quot;\K&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;&quot;&quot; &quot;+++ATH&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;&quot;&quot; &quot;+++ATH&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;&quot;&quot; &quot;+++ATH&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;SAY &quot;\nPDP context detached\n&quot;&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;With all this in place, &lt;span style=&quot;font-family:courier new;&quot;&gt;sudo pon orange&lt;/span&gt; should make the connection and &lt;span style=&quot;font-family:courier new;&quot;&gt;sudo poff orange&lt;/span&gt; should break it.</content><link rel='replies' type='application/atom+xml' href='http://nickportertech.blogspot.com/feeds/6679096575410772343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1625266449151396326/6679096575410772343' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/6679096575410772343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/6679096575410772343'/><link rel='alternate' type='text/html' href='http://nickportertech.blogspot.com/2009/06/connecting-to-internet-from-ubuntu.html' title='Connecting to the Internet from Ubuntu using bluetooth to a Nokia E65'/><author><name>Nick Porter</name><uri>http://www.blogger.com/profile/14646232662163033810</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1625266449151396326.post-4542922775430080325</id><published>2009-06-08T11:17:00.002+01:00</published><updated>2009-06-08T11:24:15.071+01:00</updated><title type='text'>Scanning documents using SANE and an ADF on a Fujitus M4097Ddm</title><content type='html'>Working on a document scanning project to sort out some paperless office systems, I came across an interesting problem while using the ADF on our Fujitsu M4097Ddm scanner. &lt;br /&gt;&lt;br /&gt;The command scanimage -y 297 --source=&quot;ADF Front&quot; resulted in a message back from sane of&lt;br /&gt;&lt;br /&gt;scanimage: rounded value of br-y from 297 to 279.364&lt;br /&gt;&lt;br /&gt;I.e. the page was getting truncated to US Letter length - not very helpful.&lt;br /&gt;&lt;br /&gt;The solution is to change the order of the parameters and add an extra one:&lt;br /&gt;&lt;br /&gt;scanimage --source=&quot;ADF Front&quot; --pageheight=297 -y 297&lt;br /&gt;&lt;br /&gt;Once the document source is specified then the list of available options changes and the pageheight and pagewidth options become available.</content><link rel='replies' type='application/atom+xml' href='http://nickportertech.blogspot.com/feeds/4542922775430080325/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1625266449151396326/4542922775430080325' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/4542922775430080325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/4542922775430080325'/><link rel='alternate' type='text/html' href='http://nickportertech.blogspot.com/2009/06/scanning-documents-using-sane-and-adf.html' title='Scanning documents using SANE and an ADF on a Fujitus M4097Ddm'/><author><name>Nick Porter</name><uri>http://www.blogger.com/profile/14646232662163033810</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1625266449151396326.post-4167401640143174392</id><published>2009-05-06T08:35:00.002+01:00</published><updated>2009-05-06T08:59:34.242+01:00</updated><title type='text'>Permissions on USB devices on LTSP terminals</title><content type='html'>In our linux environment, all our users have the same primary group, rather than having a private group.  For the vast majority of stuff this is fine and keeps things simpler.  However the method that ltsp uses for mounting USB sticks (or other local media) creates a directory called /media/&lt;username&gt; on the server which is has the group set to the primary group of the user and the owner set to root with permissions of rwxr_x___&lt;br /&gt;&lt;br /&gt;This, combined with the users all being in the same primary group leads to the devices that users plug in being shown on all users&#39; desktops.  They can&#39;t actually access the devices - those have different permissions - but they can see their existence which at the least is annoying and in the case of several people using CD drives, confusing.&lt;br /&gt;&lt;br /&gt;My current solution is a little convoluted - but does the trick.&lt;br /&gt;&lt;br /&gt;Firstly you need a program that can change ownership of a directory.  This has to be installed as a suid program as the mounting script is run by the user who is logged into the terminal.&lt;br /&gt;&lt;br /&gt;I just have a little piece of C to do the job:&lt;br /&gt;&lt;br /&gt;&lt;blockquote style=&quot;font-family: courier new;&quot;&gt;#include &lt;stdlib.h&gt;&lt;br /&gt;#include &lt;stdio.h&gt;&lt;br /&gt;#include &lt;string.h&gt;&lt;br /&gt;&lt;br /&gt;int main(int argc, char *argv[]) {&lt;br /&gt;&lt;br /&gt; char buff[100];&lt;br /&gt;&lt;br /&gt; if (argc != 2)&lt;br /&gt;   exit(1);&lt;br /&gt;&lt;br /&gt; sprintf(buff, &quot;/bin/chown %s:root /media/%s&quot;, argv[1], argv[1]);&lt;br /&gt; system(buff);&lt;br /&gt;&lt;br /&gt; return(0);&lt;br /&gt;}&lt;/string.h&gt;&lt;/stdio.h&gt;&lt;/stdlib.h&gt;&lt;/blockquote&gt;&lt;br /&gt;I call this program mediafix and have installed it in /usr/local/bin&lt;br /&gt;&lt;br /&gt;Then, in /usr/sbin/ltspfsmounter, add a line saying&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: courier new;&quot;&gt;call([&#39;mediafix&#39;], username)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;towards the end of the main function after the mounting has taken place.&lt;br /&gt;&lt;br /&gt;This ensures that any time a device is mounted, the containing directory has it&#39;s ownership amended and keeps the icons hidden from other users.&lt;br /&gt;&lt;/username&gt;</content><link rel='replies' type='application/atom+xml' href='http://nickportertech.blogspot.com/feeds/4167401640143174392/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1625266449151396326/4167401640143174392' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/4167401640143174392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/4167401640143174392'/><link rel='alternate' type='text/html' href='http://nickportertech.blogspot.com/2009/05/permissions-on-usb-devices-on-ltsp.html' title='Permissions on USB devices on LTSP terminals'/><author><name>Nick Porter</name><uri>http://www.blogger.com/profile/14646232662163033810</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1625266449151396326.post-8262267549026584844</id><published>2009-05-06T08:04:00.002+01:00</published><updated>2009-05-06T08:10:30.375+01:00</updated><title type='text'>Debian Lenny on a Poweredge 2600</title><content type='html'>Usually the Debian upgrade procedure is pretty straight forward, and my recent upgrade of a Poweredge 2600 from etch to lenny was no exception.  Just change the sources and do an apt-get update; aptitude dist-upgrade and answer some questions along the way.&lt;br /&gt;&lt;br /&gt;Occasionally there&#39;s a gotcha - and this one had an issue with our lvm based file system.  Using the new kernel that comes with lenny (2.6.26), it failed to find the lvm and therefore wouldn&#39;t boot.&lt;br /&gt;&lt;br /&gt;A little googling revealed a potential solution - add the option &quot;rootdelay=9&quot; to the kernel options for boot - and surely enough the machine was back to life.</content><link rel='replies' type='application/atom+xml' href='http://nickportertech.blogspot.com/feeds/8262267549026584844/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1625266449151396326/8262267549026584844' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/8262267549026584844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/8262267549026584844'/><link rel='alternate' type='text/html' href='http://nickportertech.blogspot.com/2009/05/debian-lenny-on-poweredge-2600.html' title='Debian Lenny on a Poweredge 2600'/><author><name>Nick Porter</name><uri>http://www.blogger.com/profile/14646232662163033810</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1625266449151396326.post-695410482953362420</id><published>2008-12-10T11:12:00.002+00:00</published><updated>2008-12-10T11:30:37.668+00:00</updated><title type='text'>Flashing the firmware on a 3c905c network card</title><content type='html'>There&#39;s two revisions of the 3C905C out there.  The earlier one has an issue when using boot code on the card in that you can&#39;t make use of the &quot;next server&quot; option in your dhcp config - it simply fails to boot from the correct server reporting a timeout during the TFTP.&lt;br /&gt;&lt;br /&gt;The later version works fine - so here&#39;s the trick - take the firmware from a later one and flash it to the earlier.&lt;br /&gt;&lt;br /&gt;Using a debian box this is relatively simple.  &lt;br /&gt;&lt;br /&gt;Install the etherboot package to get the tools needed.&lt;br /&gt;&lt;br /&gt;Then in /usr/share/doc/etherboot/contrib/3c90xutil/ gunzup cromutil.c.gz and bromutil.c.gz&lt;br /&gt;&lt;br /&gt;Make sure you have built-essential on your system and then use make to compile the tools&lt;br /&gt;&lt;br /&gt;Now, with the good card in the system, do&lt;br /&gt;&lt;br /&gt;lspci -v | less&lt;br /&gt;&lt;br /&gt;and look for the ethernet controller.  Make a note of it&#39;s I/O port address  (ours was a000&lt;br /&gt;&lt;br /&gt;Then to get the rom image type&lt;br /&gt;&lt;br /&gt;./cromutil [ioport] read &gt; [imagename]&lt;br /&gt;&lt;br /&gt;e.g.&lt;br /&gt;&lt;br /&gt;./cromutil a000 read &gt; working.rom&lt;br /&gt;&lt;br /&gt;Now shut down the machine and replace the good card with the one that needs programming&lt;br /&gt;&lt;br /&gt;Once you&#39;ve booted back up, go to /usr/share/doc/etherboot/3x90xutil/&lt;br /&gt;&lt;br /&gt;Use lspci -v again to check the address of this card&lt;br /&gt;&lt;br /&gt;Then do &lt;br /&gt;&lt;br /&gt;./cromutil [ioport] erase&lt;br /&gt;./cromutil [ioport] prog &lt; [imagename]&lt;br /&gt;&lt;br /&gt;You should now have a card programmed with the later firmware and capable of correct remote booting where the boot host is other than the dhcp host.</content><link rel='replies' type='application/atom+xml' href='http://nickportertech.blogspot.com/feeds/695410482953362420/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1625266449151396326/695410482953362420' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/695410482953362420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/695410482953362420'/><link rel='alternate' type='text/html' href='http://nickportertech.blogspot.com/2008/12/flashing-firmware-on-3c905c-network.html' title='Flashing the firmware on a 3c905c network card'/><author><name>Nick Porter</name><uri>http://www.blogger.com/profile/14646232662163033810</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1625266449151396326.post-3969050700894759109</id><published>2008-11-26T14:29:00.003+00:00</published><updated>2008-11-26T14:33:14.674+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="exim"/><category scheme="http://www.blogger.com/atom/ns#" term="ldap"/><title type='text'>Using LDAP for email aliases</title><content type='html'>As I gradually migrate various servers to using LDAP as the auth back end, it occured to me that there was some duplication going on in terms of adding the users&#39; email addresses to the LDAP so that they could be looked up on clients and then having an aliases file that was being used by exim to do the delivery.&lt;br /&gt;&lt;br /&gt;So I&#39;ve come up with the following for allowing exim to take advantage of the email addresses stored in the LDAP database:&lt;br /&gt;&lt;br /&gt;### router/450_local_ldap_aliases&lt;br /&gt;#################################&lt;br /&gt;&lt;br /&gt;# This router handles aliasing looking up email addresses in an ldap database.&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;ldap_aliases:&lt;br /&gt;  debug_print = &quot;R: ldap_aliases for $local_part@$domain&quot;&lt;br /&gt;  driver = redirect&lt;br /&gt;  domains = +local_domains&lt;br /&gt;  allow_fail&lt;br /&gt;  allow_defer&lt;br /&gt;  data = ${lookup ldap {ldap://127.0.0.1/ou=Users,dc=...?uid?sub?(mail=$local_part@$domain)}}</content><link rel='replies' type='application/atom+xml' href='http://nickportertech.blogspot.com/feeds/3969050700894759109/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1625266449151396326/3969050700894759109' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/3969050700894759109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/3969050700894759109'/><link rel='alternate' type='text/html' href='http://nickportertech.blogspot.com/2008/11/using-ldap-for-email-aliases.html' title='Using LDAP for email aliases'/><author><name>Nick Porter</name><uri>http://www.blogger.com/profile/14646232662163033810</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1625266449151396326.post-9204604361978040583</id><published>2008-11-06T09:27:00.002+00:00</published><updated>2008-11-06T09:34:33.898+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>Ubuntu on a Dell XPS M1530</title><content type='html'>With the release of Ubuntu 8.10 (Intrepid Ibex) the vast majority of stuff on a Dell XPS M1530 works out of the box.  One caveat is the touchpad.  It jumps around like a demented rabbit!&lt;br /&gt;&lt;br /&gt;The solution is simple.&lt;br /&gt;&lt;br /&gt;Edit /boot/grub/menu.lst&lt;br /&gt;&lt;br /&gt;Find the line that starts &lt;br /&gt;# kopt=root=UUID....&lt;br /&gt;&lt;br /&gt;Add i8042.nomux=1 to the end of that line&lt;br /&gt;&lt;br /&gt;Then run update-grub and reboot.</content><link rel='replies' type='application/atom+xml' href='http://nickportertech.blogspot.com/feeds/9204604361978040583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1625266449151396326/9204604361978040583' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/9204604361978040583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/9204604361978040583'/><link rel='alternate' type='text/html' href='http://nickportertech.blogspot.com/2008/11/ubuntu-on-dell-xps-m1530.html' title='Ubuntu on a Dell XPS M1530'/><author><name>Nick Porter</name><uri>http://www.blogger.com/profile/14646232662163033810</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1625266449151396326.post-3816682691963799632</id><published>2008-10-31T10:54:00.003+00:00</published><updated>2008-10-31T11:03:59.028+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="office97 windowsxp"/><title type='text'>Office 97 as a normal user</title><content type='html'>Usually when you put a Windows XP machine on a user&#39;s desktop you want to have them logging in as a standard user rather than a power user.  However various bits of software have issues with that due to poor design of the way they handle the registry.  They try to write to keys or create keys in areas that they don&#39;t have permission.&lt;br /&gt;&lt;br /&gt;One such delight is Office 97.  There are two specific problems.  Firstly, spelling and grammar checking is disabled.  This has to be fixed with a registry permissions edit.&lt;br /&gt;&lt;br /&gt;HKEY_LOCAL_MACHINE\Software\Microsoft\Shared Tools\Proofing Tools\Spelling&lt;br /&gt;&lt;br /&gt;HKEY_LOCAL_MACHINE\Software\Microsoft\Shared Tools\Proofing Tools\Grammar&lt;br /&gt;&lt;br /&gt;both need to have Set Value and Create Subkey enabled for the group Users&lt;br /&gt;&lt;br /&gt;The other issue is VBA macros.  There are two solutions here.  One is another set of permissions changes - but these open up quite a lot in the registry.  Much better is this solution.&lt;br /&gt;&lt;br /&gt;As administrator run a macro - doesn&#39;t matter what - just something to get the macro system used.&lt;br /&gt;&lt;br /&gt;Then in&lt;br /&gt;&lt;br /&gt;C:\Documents and Settings\Administrator\Local Settings\Temp\VBE\&lt;br /&gt;&lt;br /&gt;you will find MSForms.EXD&lt;br /&gt;&lt;br /&gt;Copy that to somewhere accessible.  Then for each user who needs to run VBA macros, copy this file into their Local Settings\Temp\VBE folder.</content><link rel='replies' type='application/atom+xml' href='http://nickportertech.blogspot.com/feeds/3816682691963799632/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1625266449151396326/3816682691963799632' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/3816682691963799632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/3816682691963799632'/><link rel='alternate' type='text/html' href='http://nickportertech.blogspot.com/2008/10/office-97-as-normal-user.html' title='Office 97 as a normal user'/><author><name>Nick Porter</name><uri>http://www.blogger.com/profile/14646232662163033810</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1625266449151396326.post-9186337952545180393</id><published>2008-06-11T13:19:00.003+01:00</published><updated>2008-06-11T13:29:42.311+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="ltsp"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>LTSP 5 local devices fun</title><content type='html'>Been working on using LTSP 5 on a Kubuntu machine to replace our current LTSP 4 set up on debian.  Part of this has been about getting local devices operational which, on the whole, works &quot;out of the box&quot; with the (k)ubuntu ltsp packages.  The local devices appear under /media/&lt;username&gt; - which you could create a symlink to on the desktop for the users to easily access their devices.&lt;br /&gt;&lt;br /&gt;However, I plugged in one of my USB memory sticks and nothing happened.  So I went through the debugging routine:&lt;br /&gt;Check that the device is partitioned (/dev/sdb1 rather than just /dev/sdb when plugged into my linux laptop)&lt;br /&gt;Check that the ltsp workstation is seeing the device by logging into the local shell as root and using dmesg after plugging it in&lt;br /&gt;Check the udev stuff is happening (look for an entry in /var/run/ltspfs_fstab)&lt;br /&gt;&lt;br /&gt;That was where it was failing - no entry.&lt;br /&gt;&lt;br /&gt;So I dug around in the udev rules and looked at the script that adds the entry to the fstab.  Here was the source of the problem.  This script uses the label on the volume to create the mount point and the volume label on my usb stick had a space in it - that was enough to prevent it from running the script properly.&lt;br /&gt;&lt;br /&gt;So - if you want your removable media to work on a (k)ubuntu LTSP set up then make sure that any volume labels are without spaces.</content><link rel='replies' type='application/atom+xml' href='http://nickportertech.blogspot.com/feeds/9186337952545180393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1625266449151396326/9186337952545180393' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/9186337952545180393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/9186337952545180393'/><link rel='alternate' type='text/html' href='http://nickportertech.blogspot.com/2008/06/ltsp-5-local-devices-fun.html' title='LTSP 5 local devices fun'/><author><name>Nick Porter</name><uri>http://www.blogger.com/profile/14646232662163033810</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1625266449151396326.post-3205501290778831924</id><published>2008-05-30T16:15:00.006+01:00</published><updated>2008-06-02T15:16:16.854+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="auth"/><category scheme="http://www.blogger.com/atom/ns#" term="exim"/><category scheme="http://www.blogger.com/atom/ns#" term="ldap"/><title type='text'>Exim SMTP AUTH from LDAP</title><content type='html'>This turned out to be very simple indeed.&lt;br /&gt;&lt;br /&gt;Here&#39;s a suitable config for LOGIN and PLAIN type auth:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;ldap_login:&lt;br /&gt; driver = plaintext&lt;br /&gt; public_name = LOGIN&lt;br /&gt; server_prompts = Username:: : Password::&lt;br /&gt; server_condition = ${if ldapauth {user=&quot;uid=${quote_ldap:$1},ou=Users,dc=.....&quot; pass=&quot;$2&quot; ldap://localhost/}{yes}{no}}&lt;br /&gt; server_set_id = $1&lt;br /&gt; server_advertise_condition = ${if eq{$tls_cipher}{}{}{*}}&lt;br /&gt;&lt;br /&gt;ldap_plain:&lt;br /&gt; driver = plaintext&lt;br /&gt; public_name = PLAIN&lt;br /&gt; server_prompts = :&lt;br /&gt; server_condition = ${if ldapauth {user=&quot;uid=${quote_ldap:$2},ou=Users,dc=....&quot; pass=&quot;$3&quot; ldap://localhost/}{yes}{no}}&lt;br /&gt; server_set_id = $2&lt;br /&gt; server_advertise_condition = ${if eq{$tls_cipher}{}{}{*}}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The bit which wasn&#39;t explained very well (or at least not obvious to me) was what ldapauth did.  There were various examples around which were pulling passwords out of a directory, having logged in with a suitable dn, but what this simple solution does is attempt to log into the LDAP directory using the credentials that &quot;user&quot; and &quot;pass&quot; are set to and since the LDAP directory contains the user authentication data as used by other systems (such as PAM or the unix NSS) it is authenticating against exactly the same thing.&lt;br /&gt;&lt;br /&gt;This method won&#39;t work with the cram_md5 authentication driver as that requires a password to be pulled from somewhere and given to exim to work with.</content><link rel='replies' type='application/atom+xml' href='http://nickportertech.blogspot.com/feeds/3205501290778831924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1625266449151396326/3205501290778831924' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/3205501290778831924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625266449151396326/posts/default/3205501290778831924'/><link rel='alternate' type='text/html' href='http://nickportertech.blogspot.com/2008/05/exim-smtp-auth-from-ldap.html' title='Exim SMTP AUTH from LDAP'/><author><name>Nick Porter</name><uri>http://www.blogger.com/profile/14646232662163033810</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>