Update lfs-uefi.txt
[linux_from_scratch_hints.git] / starting-and-stopping-fusesmb-with-kdm.txt
blob449e564ccb42e437d34d16dd607f3806c47511eb
1 AUTHOR: Stef Bon <stef at bononline dot nl>
3 DATE: 2006-04-15
5 LICENSE: GNU Free Documentation License Version 1.2
7 SYNOPSIS: Starting and stopping Fusesmb at a KDE-session using KDM.
9 DESCRIPTION: 
10 This hint is about starting the sessionpart of the fusesmb. 
12 This is based on my hint 
13 "Execute scripts at begin and end of a KDE-session using KDM".
15 In this hint is described in general how scripts and commands are 
16 started at the begin and end of a KDE session using KDM.
19 ATTACHMENT:
21 PREREQUISITES:
22 This hint requires sufficient knowledge of LINUX in general, and scripts in particular.
23 Futher sudo should be installed, and you should start KDE via KDM.
26 HINT:
28 Content:
30 1. Browsing the network using FUSE, fusesmb and PAM
31 1.1 Installation of FUSE and FuseSMB.
32 1.2 Starting fusesmb.
33 1.3 Stopping fusesmb.
36 ---------------------------------------------------
37 1. Browsing the network using FUSE, fusesmb and PAM
38 ---------------------------------------------------
40 Very new is FUSE. At this moment the FUSE package contains a kernelmodule, a library and utilities.
41 Soon the module will be standard in the kernel. For more information see the website of course.
43 -------------------------------------
44 1.1 Installation of FUSE and FuseSMB.
45 -------------------------------------
47 Get FUSE from the projectsite:
49 http://fuse.sourceforge.net
51 Installing FUSE:
53 cd fuse-2.3.0
54 ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-kernel-module --enable-lib --enable-util
55 make
56 make install
58 A module is installed, fuse.
60 To load it:
62 modprobe fuse
64 and add it to /etc/sysconfig/modules.
66 Note:
68 In the newest kernels (>=2.6.14) the kernelmodule is included in the kernel. You still
69 need the package above, because of the library and the utilities.
71 Configuration of fuse goes via the fuse.conf file in the /etc directory:
73 cat >> /etc/fuse.conf << "EOF"
75 mount_max = 999
77 user_allow_other
78 EOF
80 Get fusesmb:
82 Look for a link at :
84 http://freshmeat.net/projects/fusesmb/
86 Installing fusesmb:
88 cd fusesmb-0.8.3
89 ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
90 make
91 make install
93 It requires samba-3.0.*.
97 ---------------------
98 1.2 Starting fusesmb.
99 ---------------------
102 Now the actual scripts:
104 cd /etc/session.d/kdm/startup
106 cat >> fusesmb.sh << "EOF"
107 #!/bin/bash
109 retcode=0;
111 userid=$1
112 userproperties=$(getent passwd | grep -m 1-E "^$userid")
113 homedir=$(echo $userproperties | cut -d ":" -f 6);
114 gidnr=$(echo $userproperties | cut -d ":" -f 4);
115 uidnr=$(echo $userproperties | cut -d ":" -f 3);
117 if [ -d $homedir ]; then
119     if [ ! -d $homedir/network ]; then
120         mkdir -p $homedir/network
121         chown $uidnr:$gidnr $homedir/network
122     fi
124     if [ $(id -u) -eq 0 ]; then
125         sudo -H -u $userid /bin/sh -c "fusesmb $homedir/network -o fsname=fusesmb,default_permissions,allow_other"
126         retcode=$?
127     elif [ $(id -u) -eq $uidnr ]; then 
128         fusesmb $homedir/network -o fsname=fusesmb,default_permissions,allow_other
129         retcode=$?
130     fi  
134 if [ $retcode -ne 0 ]; then
135     echo "An error with fusesmb ($retcode)."
138 exit $retcode
142 Now with fusesmb running you can access your SMB(Windows)
143 network environment via a filesystem in userspace, with
144 **any** (not only KDE apps with kio's or GNOME with vfs) 
145 application, like MC or vi.
147 This configuration allows other users to enter the fusesmb filesystem. If you don't want this, you should remove 
148 the "allow_other" flag.
151 ------------------------
152 1.3 Stopping of fusesmb.
153 ------------------------
155 And the logout script:
157 cd /etc/session.d/kdm/reset
159 cat >> fusesmb.sh << "EOF"
160 #!/bin/bash
162 retcode=0;
164 userid=$1
165 userproperties=$(getent passwd | grep -m 1 -E "^$userid")
166 homedir=$(echo $userproperties | cut -d ":" -f 6);
167 gidnr=$(echo $userproperties | cut -d ":" -f 4);
168 uidnr=$(echo $userproperties | cut -d ":" -f 3);
170 if [ -d $homedir ]; then
172     if [ -n "$(mount | grep $homedir/network)" ]; then
174         fusermount -u $homedir/network
176     fi;
181 if [ $retcode -ne 0 ]; then
182     echo "An error with fusesmb ($retcode)."
185 exit $retcode
191 ACKNOWLEDGEMENTS:
194 CHANGELOG:
195 [2006-01-24]
196   * Initial hint.
197 [2006-01-30]
198   * fixed some typos
199 [2006-04-16]
200   * deleted everything about PAM