Hi all, I always 'forget' that in this list 'reply' doesn't mean 'reply to the list'. So, here's some follow-up of my mail... And my additional question...
Hi, thanks... this works fine. I didn't use the 'mask'-things in the right way. Anyway, major 'problem' solved. I still have one more question. I would like to put some things in a (global) startup-script. I think if I use /etc/profile and use a login manager (not everyone likes to log on using a text console), it'll not work (since 'profile' is the startup-script for bash. So, I should change 'Xsession'. I'm not very sure where to put a lines like: mount //labmetserver/common /mnt/labmet/common -o uid=$USER,gid=staff,dmask=1740,fmask=1740,credentials=$HOME/.smbpasswd mount //labmetserver/information /mnt/labmet/information -o uid=root,gid=staff,dmask=1754,fmask=1754,credentials=$HOME/.smbpasswd [...] in the script. (I would like to have it this way, so the drives are not mounted when nobody is using the computer; I actually don't know why, it just gives me a 'safer' feeling. Now, I log onto the server with administrator password. If I could put things in a login-script, everyone can use their own login and password and put it in '~/.smbpasswd'.) tnx, Kurt. In Debian, Xsession looks like this: ----- #!/bin/sh # # /etc/X11/Xsession # # global Xsession file -- used by display managers and xinit (startx) set -e message () { # pretty-print messages of arbitrary length echo "$*" | fold -s -w ${COLUMNS:-80} >&2; } message_nonl () { # pretty-print messages of arbitrary length (no trailing newline) echo -n "$*" | fold -s -w ${COLUMNS:-80} >&2; } errormsg () { # exit script with error message "$*" exit 1; } internal_errormsg () { # exit script with error; essentially a "THIS SHOULD NEVER HAPPEN" message message "$*" message "Please report the package name, version, and the text of the" \ "above error message(s) to <[EMAIL PROTECTED]>."; exit 1; } run_parts () { # until run-parts --noexec is implemented if [ -z "$1" ]; then internal_errormsg "internal run_parts called without an argument" fi if [ ! -d "$1" ]; then internal_errormsg "internal run_parts called, but $1 does not exist or is not a directory." fi for F in $(ls $1); do if expr "$F" : '[[:alnum:]_-]\+$' > /dev/null 2>&1; then if [ -f "$1/$F" ]; then echo "$1/$F" fi fi done; } # initialize variables for use by all session scripts OPTIONFILE=/etc/X11/Xsession.options SYSRESOURCES=/etc/X11/Xresources USRRESOURCES=$HOME/.Xresources SYSSESSIONDIR=/etc/X11/Xsession.d STARTUP=$HOME/.xsession ALTSTARTUP=$HOME/.Xsession ERRFILE=$HOME/.xsession-errors # attempt to create an error file; abort if we cannot if touch $ERRFILE 2> /dev/null && [ -w $ERRFILE ]; then chmod 600 "$ERRFILE" elif ERRFILE=$(tempfile 2> /dev/null); then if ! ln -sf "$ERRFILE" "${TMPDIR:=/tmp}/xsession-$USER"; then message "Xsession: unable to symlink \"$TMPDIR/xsession-$USER\" to" \ "\"$ERRFILE\"." fi else errormsg "Xsession: unable to create X session log/error file. Aborting." fi exec > "$ERRFILE" 2>&1 # sanity check; is our session script directory present? if [ ! -d "$SYSSESSIONDIR" ]; then errormsg "Xsession: no $SYSSESSIONDIR directory found. Aborting." >&2 fi # use run-parts to source every file in the session directory; we # source instead of executing so that the variables and functions # defined above are available to the scripts, and so that they can # pass variables to each other SESSIONFILES=$(run_parts $SYSSESSIONDIR) if [ -n "$SESSIONFILES" ]; then for SESSIONFILE in $SESSIONFILES; do . $SESSIONFILE done fi exit 0 # vim:ai:et:sts=2:sw=2:tw=80: ----- and '$SYSSESSIONDIR' (/etc/X11/Xsession.d) contains: ----- $ ls -l total 20 -rw-r--r-- 1 root root 1361 Mar 19 2003 20xfree86-common_process-args -rw-r--r-- 1 root root 329 Mar 19 2003 30xfree86-common_xresources -rw-r--r-- 1 root root 933 Mar 19 2003 50xfree86-common_determine-startup -rw-r--r-- 1 root root 449 Mar 19 2003 90xfree86-common_ssh-agent -rw-r--r-- 1 root root 18 Mar 19 2003 99xfree86-common_start $ ----- -- Mail from [EMAIL PROTECTED] sent on Wednesday October 22 2003 at 01:43 (GMTGMT): Try with fmask=1777,dmask=1777 - 0000 gives me the same as you see below, 1777 gives everyone all permissions. If that doesn't work, you should be able to put your mount command (w/ -o uid=xxx) into a login script. There are several login scripts you can choose from, depending on what shell you use etc. Some standard ones are "/etc/profile" (global for all users; this is where path & stuff is set); "~/.profile", "~/.bash_profile" and "~/.bashrc" for personal/individual logins. But I think there are a number of problems with doing the mount in a login script. You would need to set either the login script or smbmount setuid root; you would need seperate mount points for each user; only the user who's script mounted the smb share would have access; etc. Some of these may not be problems, depending on what you want, but if I'm understanding your goal correctly, it would be much simpler to get the permissions in fstab working right. Wish you luck, Conway S. Smith -- Kurt Sys <[EMAIL PROTECTED]> wrote: Hi, thanks for your reply. However, this doesn't work (I remember I used to try it, but for one reason or another, it wouldn't work, I'm guessing, but it might be some 'Debian-security' thing?) I tried again... ----- # /etc/fstab: static file system information. # # <file system> <mount point> <type> <options> <dump> <pass> /dev/hda5 / ext2 errors=remount-ro 0 1 /dev/hda3 none swap sw 0 0 proc /proc proc defaults 0 0 /dev/fd0 /floppy auto users,noauto 0 0 /dev/cdrom /cdrom iso9660 ro,users,noauto 0 0 /dev/hda6 /usr ext2 defaults 0 2 /dev/hda7 /var ext2 defaults 0 2 /dev/hda8 /tmp ext2 defaults 0 2 /dev/hda9 /boot ext2 defaults 0 2 /dev/hda10 /root ext2 defaults 0 2 /dev/hda11 /home ext2 defaults 0 2 /dev/hda2 /mnt/winxp ntfs umask=0022 0 0 /dev/sda4 /mnt/zip vfat users,noauto 0 0 //labmetserver/common /mnt/labmet/common smbfs dmask=0000,fmask=0000,noauto,credentials=/etc/samba/smbpasswd 0 0 //labmetserver/information /mnt/labmet/information smbfs dmask=0000,fmask=0000,noauto,credentials=/etc/samba/smbpasswd 0 0 //labmetserver/students /mnt/labmet/students smbfs dmask=0000,fmask=0000,noauto,credentials=/etc/samba/smbpasswd 0 0 //labmetserver/researchers /mnt/labmet/researchers smbfs dmask=0000,fmask=0000,noauto,credentials=/etc/samba/smbpasswd 0 0 ----- I log on (as root) and 'mount /mnt/labmet/common'. The drive is mounted: ----- kurtpjoeter:/mnt/labmet# mount common Unknown parameter encountered: "passdb backend" Ignoring unknown parameter "passdb backend" 1639: session request to LABMETSERVER failed (Called name not present) kurtpjoeter:/mnt/labmet# ls -al total 24 drwxr-xr-x 6 root root 4096 Mar 19 2003 . drwxr-xr-x 6 root root 4096 Sep 4 00:23 .. drwxr-xr-x 1 root root 4096 Oct 17 16:36 common drwxrwxrwx 2 root root 4096 Mar 19 2003 information drwxrwxrwx 2 root root 4096 Mar 19 2003 researchers drwxrwxrwx 2 root root 4096 Mar 19 2003 students kurtpjoeter:/mnt/labmet# ----- but no file/directory in 'common' has write permissions for 'groups' or 'other users'. However: ----- kurtpjoeter:/mnt/labmet# umount common/ kurtpjoeter:/mnt/labmet# mount common -o uid=kurt Unknown parameter encountered: "passdb backend" Ignoring unknown parameter "passdb backend" 2209: session request to LABMETSERVER failed (Called name not present) kurtpjoeter:/mnt/labmet# ls -al total 24 drwxr-xr-x 6 root root 4096 Mar 19 2003 . drwxr-xr-x 6 root root 4096 Sep 4 00:23 .. drwxr-xr-x 1 kurt root 4096 Oct 17 16:36 common drwxrwxrwx 2 root root 4096 Mar 19 2003 information drwxrwxrwx 2 root root 4096 Mar 19 2003 researchers drwxrwxrwx 2 root root 4096 Mar 19 2003 students kurtpjoeter:/mnt/labmet# ----- In this case, 'kurt' has write access to the drive. It would be great if I can put such thing in a login-script. This would also allow me to give other permissions to the drives, depending on which user logs on. Actually, I don't really want other users to be able to smbmount, but they should be able to access the 'shared' drives on the server. Some have more permissions than other ones, but this is not the main problem now... I should simply be able to give a user write permissions to a drive when he/she logs on. Oh yeah, the 'session request to LABMETSERVER failed'-thing... I already posted that to the list (I guess this one) and the conclusion seemed to be 'do not bother as long as it works'. tnx, Kurt. -- Mail from [EMAIL PROTECTED] sent on Tuesday October 21 2003 at 04:16 (GMTGMT): You should be able to set it up in the fstab to give all users rw permissions. You will probably just need to set the fmask and dmask to values you want (see the mount(8) & smbmount(8) man pages). <qoute> fmask=<arg> sets the file mask. This determines the permissions that remote files have in the local filesystem. The default is based on the current umask. dmask=<arg> sets the directory mask. This determines the permissions that remote directories have in the local filesystem. The default is based on the current umask. </qoute> Also, you may need to chmod smbmount setuid root; IIRC smbmount has to be run as root, regardless of fstab & other config files. But this should only be done if you want/need nonroot users to be able to mount/umount the remote smb filesystem(s). Hope this helps, Conway S. Smith -- Kurt Sys <[EMAIL PROTECTED]> wrote: >Hi all, > >I'm having the following situation here: There is a windowsNT >network available. I can connect to the network. However, only >'root' can write to the NT-disk. So, I have to connect as >'another user': > >smbmount //labmetserver/common /mnt/labmet/common -o >>credentials=/home/kurt/.smbmountcred,uid=kurt > >In this way, I connect to the server, with 'kurt' as the user, >so 'kurt' can write to the NT-disk. So all this works, what's >my problem? That it only works if I am root. I would like all >users to be able to connect to the server and read and write. I >thinking of something like, if someone logs in on linux, the >connection is made automatically. Can I put something like: > >smbmount //labmetserver/common /mnt/labmet/common -o >>credentials=$HOME/.smbmountcred,uid=$USER > >in some script (which runs with 'root'-permissions). Or even >better, if '$HOME/.smbmountcred exists, it should use it, >otherwhise, it should use a general 'smbmountcred'-file >(somewhere in /etc/smbmount)? I'm using Debian sarge, >linux-kernel 2.4.20, smbmount version >2.2.3a-14. > >Untill now, I did put it in fstab, but in that case, I logged >in onto the windowsNT-server as root, so no user had any write >permission. > > >tnx, Kurt. ________________________________________________________________ The best thing to hit the internet in years - Juno SpeedBand! Surf the web up to FIVE TIMES FASTER! Only $14.95/ month - visit www.juno.com to sign up today! -- To live a creative life, we must lose our fear of being wrong. -- Joseph Chilton Pearce - To unsubscribe from this list: send the line "unsubscribe linux-newbie" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.linux-learn.org/faqs