Gå til innhold

Automatisk montering av Samba/CIFS shares ved login


Anbefalte innlegg

Jeg bruker Ubuntu 14.04, og ønsker å montere diverse Samba/CIFS shares når jeg logger inn på maskinen, slik at disse alltid er tilgjengelig (f.eks på /media/<brukernavn>/<maskinnavn>/<share-navn>). Samba-passord og -brukernavn avhenger av hvilken bruker som logger inn, så jeg kan ikke ordne dette i /etc/fstab, tror jeg. Jeg ønsker heller ikke å måtte skrive inn passord ved montering (f.eks. fordi bruk av 'mount' krever 'sudo' e.l.), alt skal gå helt automatisk.

 

Dette er svært enkelt å få til i Windows, da kan man bare si at en Samba-share skal få en stasjonsbokstav ved innlogging, så trenger man aldri tenke på dette lenger - jeg ønsker den samme funksjonaliteten i Ubuntu.

Lenke til kommentar
Videoannonse
Annonse

f you want to mount share files using samba but you don’t want to put the username or password on fstab file, you could use an external file, this is useful if you want to increase a little security since fstab usually is world readable.

Using /etc/fstab

# insecure and common usage

# Add to fstab

//share/dir /mnt/myshare cifs username=user,password=pass

# more secure usage

mkdir /path/securedir

chmod 0700 /path/securedir

chown root /path/securedir

# Add to fstab

//share/dir /mt/myshare cifs credentials=/path/securedir/fileshare

cat /path/securedir/fileshare

username=yourusername

password=youpass

Kilde: http://anothersysadmin.wordpress.com/2007/12/17/howto-mount-samba-shares-in-fstab-using-a-credential-file/

Endret av kpolberg
Lenke til kommentar

Problemet er at Samba brukernavn/passord avhenger av hvem som logger inn :-)

 

Med forslaget ditt vil alle brukere logge inn med samme brukernavn og passord, det er ikke det jeg ønsker.

 

Foreløpig har jeg det slik i /etc/fstab:

# CIFS shares
//192.168.0.5/home	/media/jupiter/home	cifs	credentials=/tmp/smbcreds,user,noauto	0	0
//192.168.0.5/music     /media/jupiter/music	cifs	credentials=/tmp/smbcreds,user,noauto	0	0
//192.168.0.5/photo     /media/jupiter/photo	cifs	credentials=/tmp/smbcreds,user,noauto	0	0
//192.168.0.5/scratch   /media/jupiter/scratch	cifs	credentials=/tmp/smbcreds,user,noauto	0	0
//192.168.0.5/setup     /media/jupiter/setup	cifs	credentials=/tmp/smbcreds,user,noauto	0	0
//192.168.0.5/video     /media/jupiter/video	cifs	credentials=/tmp/smbcreds,user,noauto	0	0

Så har jeg lagt inn følgende i ~/.profile:

cp ~/smbcreds /tmp
shares="home music photo scratch setup video"
for dir in $shares; do
  mount /media/jupiter/$dir
done

Og i ~/.bash_logout:

rm /tmp/smbcreds
shares="home music photo scratch setup video"
for dir in $shares; do
  umount /media/jupiter/$dir
done

~/smbcreds inneholder Samba brukernavn og passord, og har permissions 0600 og bruker/brukergruppe satt til brukeren og brukerens egne gruppe. Det ser foreløpig ut som det virker, men sikkert noen skjær i sjøen her...

Lenke til kommentar

Mulig dette kan hjelp det litt på veien.

 

fstab

//192.168.0.5/video     /media/jupiter/video	cifs	user,users,noauto	0	0
Fikk kjørt denne som vanlig bruker i terminalen uten å bli spurt om passord

mount.cifs //192.168.0.5/video /media/jupiter/video -o user=$USER,password=$PASSWD
du kan droppe -o user=$USER,password=$PASSWD da $USER og $PASSWD er standard variablene for de feltene, se http://manpages.ubuntu.com/manpages/lucid/en/man8/mount.cifs.8.html

Er ikke sikker på om $PASSWD har en verdi til å begynne med, så det må muligens settes. Testet kun i terminalen og da etter å ha satt verdien med export PASSWD=mittpassord

Lenke til kommentar

Jeg laget et par skript som ligger et bruker-uavhengig sted, som hver bruker kan kalle for å montere/demontere samba shares. Skriptet som monterer ser slik ut:

cp ~/smbcreds /tmp
mntbase=/media
server=jupiter
shares="home music photo scratch setup video"
for dir in $shares; do
  mount $mntbase/$server/$dir
done
rm /tmp/smbcreds

Jeg kunne selvfølgelig brukt en variabel slik Crowly skriver, men må da ha et skript som setter denne før og fjerner den etter at skriptet over er kalt (evt. gjøre det i det skriptet som kaller skriptet over, men da må dette skriptet ha veldig begrensede bruker-rettigheter også), synes det ble greiere med en fil med brukernavn/passord. Denne fila bør da kun kunne leses av brukeren som eier den, selvfølgelig.

 

Disse skriptene bør kalles når brukeren logger inn og ut vha. det grafiske brukergrensesnittet. Så lenge det er kun en bruker som er logget inn på den måten (altså bruker X), bør dette fungere. Jeg er imidlertid usikker på hvor jeg bør kalle disse skriptene, nå gjør jeg det i ~/.profile og ~/.bash_logout, som jeg mistenker blir feil.

Lenke til kommentar

Jeg laget et par skript som ligger et bruker-uavhengig sted, som hver bruker kan kalle for å montere/demontere samba shares. Skriptet som monterer ser slik ut:

cp ~/smbcreds /tmp
mntbase=/media
server=jupiter
shares="home music photo scratch setup video"
for dir in $shares; do
  mount $mntbase/$server/$dir
done
rm /tmp/smbcreds

Jeg kunne selvfølgelig brukt en variabel slik Crowly skriver, men må da ha et skript som setter denne før og fjerner den etter at skriptet over er kalt (evt. gjøre det i det skriptet som kaller skriptet over, men da må dette skriptet ha veldig begrensede bruker-rettigheter også), synes det ble greiere med en fil med brukernavn/passord. Denne fila bør da kun kunne leses av brukeren som eier den, selvfølgelig.

 

Disse skriptene bør kalles når brukeren logger inn og ut vha. det grafiske brukergrensesnittet. Så lenge det er kun en bruker som er logget inn på den måten (altså bruker X), bør dette fungere. Jeg er imidlertid usikker på hvor jeg bør kalle disse skriptene, nå gjør jeg det i ~/.profile og ~/.bash_logout, som jeg mistenker blir feil.

 

Dersom du kun ønsker at scriptet skal kjøre ved innlogging i X, må du sjekke om DISPLAY-variabelen er satt, ellers vil det også kjøre ved SSH-tilkoblinger, eller login-shell i terminal.

 

Den vanlige måten å kjøre programmer/kommandoer på når man logger inn i X er derimot via .desktop-filer. Ubuntu har i programmenyen et program kalt "Startup Applications" (gnome-session-properties). Her kan du legge inn kommandoer som skal kjøre ved innlogging. Dette lager en .desktop-fil og legger den i ~/.config/autostart. Du vil ha den gjeldene for alle brukere, så da legger du den i /etc/xdg/autostart i stedet.

 

Du kan bare lage filen selv i /etc/xdg/autostart uten å bruke det grafiske verktøyet og så flytte. Filen må ha .desktop-endelse.

[Desktop Entry]
Type=Application
Name=NavnPåScript
Exec=kommando

Her er kommando path til scriptet ditt (evt bare navnet på scriptet om det ligger i PATH, som /usr/local/bin).

 

Kjøring av script ved utlogging kan gjøres via innloggingsmanager. Ubuntu bruker LightDM. Se her for hvordan kjøre script ved utlogging:

 

https://wiki.ubuntu.com/LightDM#Adding_System_Hooks

Endret av oj88
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...