NFS is often used for accessing network shares from Raspbmc, due to its low overhead. Many tutorials describe how to set this up, for example with a Synology NAS. One subject isn’t covered much, though: A setup with restrictive permissions.
On my Synology my media files are usually owned by me, and has ‘dlna’ as group with read-only permissions. Example:
drwxr-x--- 9 jacob dlna 4096 Jun 15 2012 video
On the NAS I have created a user for Raspbmc and made it a member of this group:
DiskStation> cat /etc/group | grep dlna dlna:x:65536:admin,jacob,raspbmc DiskStation> cat /etc/passwd | grep raspbmc raspbmc:x:1046:100:Raspberry Pie XBMC:/var/services/homes/raspbmc:/sbin/nologin
To get this to work on the Raspberry I’ve first had to synchronize the GID/UID’s. Since the NAS is the master, I’ve done this on the Raspberry (logged in as the pi user):
pi@raspbmc:~$ sudo groupadd -g 65536 dlna pi@raspbmc:~$ sudo usermod -a -G dlna pi
After enabling root access, I’ve changed the pi user to match the UID of the raspbmc user on the NAS:
root@raspbmc:~# usermod -u 1046 pi
(For this to work I had to kill a number of processes first)
Changing UID of the pi user will cause a lot of trouble for Raspbmc, which expects the user to have UID 1000. This is hardcoded in at least two scripts:
- /opt/xbmc-bcm/xbmc-bin/share/xbmc/addons/script.raspbmc.settings/default.py
- /opt/xbmc-bcm/xbmc-bin/share/xbmc/addons/script.raspbmc.settings/autostart.py
Fix this by adding:
sed -i 's/getpwuid(1000)/getpwuid(1046)/g' /opt/xbmc-bcm/xbmc-bin/share/xbmc/addons/script.raspbmc.settings/default.py sed -i 's/getpwuid(1000)/getpwuid(1046)/g' /opt/xbmc-bcm/xbmc-bin/share/xbmc/addons/script.raspbmc.settings/autostart.py
to /etc/rc.local so the scripts are automatically fixed during startup. Replace 1046 with your pi UID.
Without this fix automatic updates won’t work, and you’ll see script errors during startup – and can’t launch the Raspbmc settings.