Vraag & Antwoord

OS Linux

Samba share als Linux home *update

31 antwoorden
  • Ik heb een netwerk met daarin een Windows 2000 Server met Active Directory, en een aantal Windows XP werkstations. Het is de bedoeling dat Linux Windows XP gaat vervangen. Ik ben nu al een tijdje bezig met een test werkstation (Kubuntu 5.10). Ik kan mij nu al succesvol authenticeren tegen de Active Directory. Met dank aan het erg handige SADMS ([url]http://sadms.sourceforge.net[/url]). Ik was eerst erg lang bezig om handmatig alles in te kloppen. Met varierende resultaten. Nu ik dat voor elkaar heb wil ik dat de Linux Homedirectory dezelfde is als de Windows Homedirectory. In SADMS kan ik met behulp van PAM links krijgen in de lokale Homedirectory naar de Homedirectory op de Windows 2000 Server. Maar dat is niet mijn bedoeling. Ik wil dat de samba share \\server\home\%username% de home directory wordt van de gebruikers op de Linux machine. Dit is zodat mensen dan niet computer gebonden zijn, ze kunnen op elk werkstation inloggen, en alle instellingen van hun programma's (Thunderbird, Firefox, etc) en desktop meteen meenemen. En mochten de gebruikers een keer op een Windows machine inloggen hebben ze nog beschikking over hun email, bookmarks, etc. Ook is het erg makkelijk voor de gebruikers om alles te vinden in hun home directory. Andere shares worden gewoon naar een submap in hun home gelinkt. Nu ben ik al een tijdje aan het zoeken op Internet, maar kom niet veel tegen. Wat ik wel vondt is dit http://uranus.it.swin.edu.au/~jn/linux/smbfs/. Wat ongeveer doet wat ik wil, alleen is het voor Red Hat, anders had ik het stap voor stap kunnen volgen. Samenvattend Ik heb: Windows 2000 Server (Active Directory) met daarop de home directory's van de gebruikers \\server\home\%username% Een Linux machine die zonder problemen gebruikers in de Active Directory laat inloggen. Ik wil: Dat de home op de linux machine hetzelfde is als de home op de 2000 server (~ = \\server\home\%username%) Iemand die dit al eens voor elkaar heeft gekregen, of een link waar ik mee verder kan.
  • Ik weet het niet zeker, maar volgens mij kun je dit in /etc/fstab regelen. Maak in dat bestand regels aan die de windows-shares mounten op /home/gebruikersnaam tijdens het opstarten van Linux /home/gebruikersnaam moet een bestaande map zijn op het linux-systeem, de daar onderliggende mappen zijn dan afkomstig van de windows-share die er aan gemount is.
  • Dat wordt moeilijk, om toegang te krijgen tot de homedrive moet de gebruiker zijn username en password invoeren. De drives in fstab worden al voor het inloggen gemount (toch?). En er zijn meerdere gebruikers, pietje's homedrive is bijvoorbeeld \\server\home\pietje, terwijl die van hans \\server\home\hans is. Het hangt dus van de gebruiker af welke dir er gemount moet worden. Wat er moet gebeuren: pietje logt in met zijn username/password pietjes homedrive wordt gemount als ~ (/home/piet) met de gegevens van de login Ik ben al bezig geweest met pam_mount. Het is al gelukt om in de home een link naar de homedrive te hebbben. Dan heb je dus /home/pietje/net-home waarbij net home \\server\home\pietje is. En niet /home/pietje waabij pietje \\server\home\pietje is, wat ik dus graag wil
  • Ik geloof dat hier: http://www.hants.lug.org.uk/cgi-bin/wiki.pl?LinuxHints/SambaAuth aardig word beschreven wat jij wilt.
  • [quote:2a1da3f566="Tekkie"]Ik geloof dat hier: http://www.hants.lug.org.uk/cgi-bin/wiki.pl?LinuxHints/SambaAuth aardig word beschreven wat jij wilt.[/quote:2a1da3f566] Ja, klopt. Deze heb ik al een keer doorgewerkt. Alleen klopt er iets niet of er mist iets. Ik ben niet ervaren genoeg met Linux om te zien wat er niet klopt (afgezien van de spelfouten). Ik voer alles tot aan het testen uit, en bij het testen gaat het mis. Wanneer ik op deze manier het werkstation toe wil voegen aan het domain (met net join) krijg ik de volgende melding. realm must be set in in smb.conf for ADS join to succeed. ADS join did not work, falling back to RPC... Realm is geloof ik het domain. Maar dat is ingesteld bij workgroup. Er staat niets in smb.conf over realm. Ik heb het gevoel dat het niet helemaal lekker zit met kerberos. Maar ik ga nu weer SADMS gebruiken om het werkstation toe te voegen aan het domain. En daarna ga ik de stappen voor het mounten van de home volgen, mischien dat ik zo verder kom.
  • Als een optie niet in het voorbeeld smb.conf bestand voorkomt, wilt niet zeggen dat die optie niet bestaat; zie hier de meeste recente manpage voor smb.conf; http://de.samba.org/samba/docs/man/manpages-3/smb.conf.5.html Met een <control>+<f> en "realm" kom je de optie tegen.
  • Ja, je hebt gelijk dat het er in zit. Alleen volgens de how-to is het niet nodig dit in te stellen. Zo kan ik een hele tijd er mee bezig blijven. Daarom ga ik SADMS gebruiken om het werkstation lid te maken van het domain. En vervolgens ga ik me verder verdiepen in het mounten van de home. In ieder geval bedankt. Als iemand nog verdere tips heeft hoor ik het erg graag.
  • De howto gaat ook uit van een Linux client op een Samba PDC zonder ADS, waarschijnlijk is de optie voor een 2000 server met ADS wel nodig. Ik heb het nog nooit geprobeerd op deze manier, maar het lijkt me dat je er met de docs op samba.org wel uit moet kunnen komen. Er staan ook wat andere zaken te lezen, die je niet rechtstreeks uit de howto kunt overnemen, zoals "SECURITY = ADS" ipv "SECURITY = domain" zoals in de howto staat. ADS en samba zijn nog een vrij onontgonnen gebied, dus je bent hoogswaarschijnlijk (op dit forum alvast) de eerste die er mee bezig is. Ik kan je ook aanraden een zo nieuw mogelijke samba op te halen, en/of zelf te compilen uit cvs voor dit soort dingen, en niet mer een rpm van je distro in zee te gaan, aangezien die zeker al weken/maanden oud zijn.
  • Werkstation is lid van domein. Ik kan inloggen met de user accounts die in de Active Directory aanwezig zijn. Waar het nu fout gaat is met pam_mount Ik krijg steeds de melding in het sytem log dat pam_mount failed, verder geen info daar. Ik vermoed dat ik het pad verkeerd heb Ik heb: volume * grandserver & /home/GRAND/& uid=&,gid=&,dmask=0700,workgroup=GRAND - - (overgenomen van HantsLUG Wiki) Dit klopt niet helemaal denk ik. Wanneer ik inlog wordt er wel netjes een map aangemaakt in /home/GRAND/ met de username. Alleen wordt de homedirectory niet gemount. Iemand enig idee?
  • Probeer eens debug 1 te zetten bovenin je pam_mount.conf. War meer info mbt tot foutconditie zou handig zijn.
  • Haha, had ik net gedaan :D das toevallig (stom dat ik daar niet mee begon) Is best wel handig. Wat bleek nu, ik probeerde een subdirectory van een share te mounten. Dat kan dus niet Ik heb het nu zo gedaan volume * smb grandserver home /home/GRAND uid= etc,etc Waarbij home de share is op de server waar alle home directory's in zitten dus pietje home is nu /home/Grand/pietje, maar wanneer pietje is ingelogd zijn alle homes dus verbonden met het werkstation. Niet echt wenselijk, maar mischien de enige oplossing. Kan ik ook een subdirectory van een smb share mounten? Ik wil zeg maar alleen server\home\pietje mounten en niet \server\home Kan dit met smbmount?? aangeziek pam_mount gewoon smbmount uitvoert met de in pam_mount.conf ingestelde waardes.
  • Hmm, deze oplossing is niet echt wat ik wil. Wanneer ik in gnome in wil loggen krijg ik deze foutmelding Unable to create ~/.gnome2 directory: Permission denied Heeft dit met de NTFS of Share permissies te maken?? Of is het zo dat een directory die begint met een . (.genome2) niet aangemaakt kan worden?
  • Ik denk dat het met je permissies te maken heeft, ik kan namelijk op een ntfs partitie lokaal gewoon een directory aanmaken die met een punt begint. Kun je wel andere bestanden aanmaken in je homedirectory?
  • Gellukig, ander zou het hele feest niet doorgaan. Het vreemde is dat het alleen gebeurt wanneer ik met gnome inlog. Als ik vanaf de terminal inlog (login pietje) wil het wel gewoon, en kan ik ook schrijven. Met welke user worden de standaard mappen in de home aangemaakt? En is het mogelijk om alleen een submap van een share te mounten?
  • De mappen in de homedirectory van een user worden aangemaakt onder die user waarmee je in de homedirectory bent. Dus als pietje in zijn homedir een bestand maakt, is de eigenaar van dat bestand pietje. Ook als pietje in zijn gnome logt, worden de setting under user pietje weggeschreven. Misschien kun je eens proberen alvast de directory .gnome aan te maken in je homedir voor het inloggen met Gnome? Alleen een submap van een share kan niet denk ik, werkt onder windows ook niet geloof ik, het protocol heeft daar geen methode voor denk ik.
  • okok Zal het eens proberen Kan het zijn dat het niet wil omdat ik in pam_mount.conf het volgende heb: volume * smb grandserver home /home/GRAND uid=&,gid=&,dmask=0700,workgroup=GRAND - - Dan doel ik op dmask, ik heb namelijk in een paar andere how-to's gezien dat deze waarde 0750 is. Kan dat het zijn? Dat je geen submap kan mounten is wel erg jammer. Dat betekend dat ik dus altijd de share \\server\home moet mounten in /home/domain. Ik wou juist \\server\home\user mounten in /home/domain/user. Maar dit gaat dus niet lukken? Jammer Probleem kan dan zijn dat de windows loginnaam niet case sensitive is, maar die van linux wel. Want welke home map een gebruiker krijgt hangt af van zijn inlog naam (Pietje != pietje). En dan moet de homemap altijd de zelfde naam hebben als de user.
  • Dat met die homedirs is toch hetzelfde als op een windows->windows server verbinding; daarop heb je ook geen //profiles export met daaronder al je gebruiker, maar een profile pad per gebruiker (aparte automagisch gemaakte share). Misschien doe je er ook goed aan om die hele dmask entry uit de pam config te gooien; weet niet of die 2000 server linux permissie maskers goed vertaald. Lijkt me niet dat je ze verder nodig hebt.
  • Nou, zoals ik het heb geleerd maak je een share aan waar alle homedirs in komen (\\server\home). Vervolgens stel je voor de user de homedir in als (\\server\home\%username%). Voor profiles in princiepe hetzelfde. Wanneer ik in Windows naar \\server\username ga vindt ie niets, wanneer ik naar \\server\home\username ga kom ik wel in de home. Maar voor elke user een share maken is mischien een optie (zoveel gebruikers zijn er nou ook weer niet). Alleen is het niet de meest nette optie Ik zal iig die dmask er uit gooien. En dan weer proberen
  • Oke, zonder dmask precies hetzelfde Ik heb ook iets vreemd opgemerkt. Wanneer ik in een terminal inlog met een gebruiker uit de active directory kan ik niet schrijven in de gemounte directory. Maar met root kan ik wel gewoon schrijven in de homedirectory van de gebruiker. Dit zou betekenen dat het ergens in Linux niet goed zit (aangezien gebruiker root niet bestaat in de active directory). NTFS permissie geven de gebruiker waar ik het mee test alle rechten op die map (ook everyone toegevoegd voor de zekerheid) Dus in het kort, wanneer de smb share wordt gemount, met gegevens van de gebruiker uit de AD. Kan Die gebruiker alleen lezen, niet schrijven. Met de root account kan ik wel lezen en schrijven. pam_mount voert de volgende aktie uit om de share te mounten /usr/bin/smbmount //grandserver/home /home/GRAND -o username=wes,uid=wes,gid=wes,workgroup=GRAND Na dat pam_mount deze opdracht heeft uitgevoerd krijg ik deze error: pam_mount: mount errors (should be empty): gevolgd door dezen: pam_mount: pam_mount: setting uid to 0 (is root als ik me niet vergis) pam_mount: pam_mount: real and effective user ID are 0 and 0. Wat mis ik :-? Nu heb ik als root eens gekeken naar de permissies op de directory. Blijkt dat de owner mag lezen. Dus ik de owner schrijf rechten gegeven, opnieuw ingelogd. Krijg ik nu de volgende melding: [code:1:a0fbd378ba]/etc/gdm/PreSession/Default: Registering your session with wtmp and utmp /etc/gdm/PreSession/Default: running: /usr/bin/X11/sessreg -a -w /var/log/wtmp -u /var/run/utmp -x "/var/lib/gdm/:20.Xservers" -h "" -l ":20" "wes" /etc/gdm/Xsession: Beginning session setup... _IceTransTransNoListen: unable to find transport: tcp _IceTransmkdir: ERROR: euid != 0,directory /dev/X will not be created. _IceTransmkdir: ERROR: Cannot create /dev/X _IceTransPTSOpenServer: mkdir(/dev/X) failed, errno = 13 _IceTransOpen: transport open failed for pts/ubuntu: _IceTransMakeAllCOTSServerListeners: failed to open listener for pts _IceTransISCOpenServer: Protocol is not supported by a ISC connection _IceTransOpen: transport open failed for isc/ubuntu: _IceTransMakeAllCOTSServerListeners: failed to open listener for isc _IceTransSCOOpenServer: Protocol is not supported by a SCO connection _IceTransOpen: transport open failed for sco/ubuntu: _IceTransMakeAllCOTSServerListeners: failed to open listener for sco ** (gnome-session:23826): WARNING **: Unable to lock ICE authority file: /home/GRAND/wes/.ICEauthority [/code:1:a0fbd378ba] En dat gaat mij toch echt even boven de pet. Waar loopt het nou op vast? Oke, ik heb even gegoogled op _IceTransTransNoListen: unable to find transport: tcp Ik kwam op een tip uit die weer te maken had met filepermissions. Maar op het bestand .ICEAuthority en die heb ik dus niet :-? Ik heb wel .ICEauthority-c Oke, ik de boel als root gemount, sudo chown -R wes /home/GRAND/wes uitgevoerd, maakt geen verschil. Omdat het een smb share is denk ik. Ik zit helemaal vast nu. Iemand een tip :cry:
  • Oke, ik zit nog steeds met hetzelfde probleem. Mischien dat ik iets fout doe bij het instellen. Daarom heb ik vanuit een clean install de volgende stappen uitgevoerd. Mischien een leuke how-to voor mensen die linux in hun Windows omgeving willen gebruiken. Dit is een samenvoeging van verschillende documenten op het net. Alleen uitgevoerd door mij, Met een paar aanpassingen. Let op! Wanneer je configuratie bestanden wijzigt zorg dan dat je eerst een backup maakt (cp filename filename_bakcup) Windows Server: Windows 2000 Server met Active Directory Windows Server FQDN: server.domain.local Client: Ubuntu 5.10 (Breezy) Hostnaam client: ubuntu Eerst gaan we de client toevoegen in de Active Directory, en zorgen we er voor dat de user authenticatie via de Active Directory gaat. (Dit gaat bij mij dus goed. Maar ik zet het er toch bij, mischien dat ik hier al de fout in ga, en dat dit het gebruik van smb als home tegengaat) [size=18:d22b37bd19]Client toevoegen aan Active Directory[/size:d22b37bd19] [b:d22b37bd19]Stap 1:[/b:d22b37bd19] Installeer de benodigde packages Voer in een terminal de volgende commando's uit (sudo! of als root) [code:1:d22b37bd19] apt-get install krb5-user apt-get install winbind samba [/code:1:d22b37bd19] *Bij krb5 (kerberos) moet je de FQDN van de server 2x opgeven *Installeer alle additional packages [b:d22b37bd19]Stap 2:[/b:d22b37bd19] Aanpassen van /etc/krb5.conf Het volgende moet in je krb5.conf file staan [code:1:d22b37bd19] [logging] default = FILE10000:/var/log/krb5lib.log [libdefaults] ticket_lifetime = 24000 default_realm = DOMAIN.LOCAL default_tkt_enctypes = des3-hmac-sha1 dec-cbc-crc default_tgs_enctypes = des3-hmac-sha1 dec-cbc-crc [realms] DOMAIN.LOCAL = { kdc = server.domain.local admin_server = server.domain.local default_domain = DOMAIN.LOCAL } [domain_realm] .domain.local = DOMAIN.LOCAL domain.local = DOMAIN.LOCAL [/code:1:d22b37bd19] [b:d22b37bd19]Stap 3:[/b:d22b37bd19] Aanpassen van /etc/samba/smb.conf Het volgende moet in je smb.conf staan [code:1:d22b37bd19] [global] security = ads netbios name = UBUNTU realm = DOMAIN.LOCAL password server = server.domain.local workgroup = DOMAIN idmap uid = 500 - 10000000 idmap uid = 500 - 10000000 winbind separator = + winbind enum users = no winbind enum groups = no winbind use default domain = yes template homedir = /home/%D/%U template shell = /bin/bash client use spnego = yes domain master = no [/code:1:d22b37bd19] Testen met testparm vanuit de terminal [b:d22b37bd19]Stap 4:[/b:d22b37bd19] Aanpassen /etc/nsswitch.conf nsswitch.conf moet er als volgt uit zien [code:1:d22b37bd19] passwd: compat winbind group: compat winbind shadow: compat hosts: files dns wins networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: nis [/code:1:d22b37bd19] [b:d22b37bd19]Stap 5:[/b:d22b37bd19] Aanpassen PAM /etc/pam.d/common-account moet er als volgt uit zien [code:1:d22b37bd19] account sufficient pam_winbind.so account required pam_unix.so [/code:1:d22b37bd19] /etc/pam.d/common-auth moet er als volgt uit zien [code:1:d22b37bd19] auth sufficient pam_winbind.so auth required pam_unix.so nullok_secure use_first_pass [/code:1:d22b37bd19] /etc/pam.d/common-password moet er als volgt uit zien [code:1:d22b37bd19] password required pam_unix.so nullok obscure min=4 max=50 md5 [/code:1:d22b37bd19] /etc/pam.d/common-session moet er als volgt uit zien [code:1:d22b37bd19] session required pam_unix.so session required pam_mkhomedir.so umask=0022 skel=/etc/skel [/code:1:d22b37bd19] [b:d22b37bd19]Stap 6:[/b:d22b37bd19] Maak een directory aan waar de homes van de active directory gebruikers in komen In een terminal [code:1:d22b37bd19] mkdir /home/DOMAIN [/code:1:d22b37bd19] [b:d22b37bd19]Stap 7:[/b:d22b37bd19] Initialiseren Kerberos Vraag een ticket aan (in terminal) [code:1:d22b37bd19] kinit administrator@DOMAIN.LOCAL [/code:1:d22b37bd19] Controleren of je een ticket hebt [code:1:d22b37bd19] klist [/code:1:d22b37bd19] [b:d22b37bd19]Stap 8:[/b:d22b37bd19] Client toevoegen in Active Directory [code:1:d22b37bd19] net ads join -U administrator@DOMAIN.LOCAL [/code:1:d22b37bd19] [b:d22b37bd19]Stap 9:[/b:d22b37bd19] Reboot het werkstation. Je kan ook alle services stoppen en starten, maar het is makkelijker om gewoon even te rebooten. Je kan nu inlogeen met de gebruikersaccounts uit de Active Directory 8) Tot zover gaat alles goed. Maar nu wil ik ook nog de homedirectory van de gebruikers mounten als home in linux (\\server\home\wes = ~). Nu komt het eerste probleem om de hoek. Ik kan geen subdirectory van een share mounten, alleen de share (\\server\home :) \\server\home\wes :( ) Een mogelijk oplossing is om \\server\home ergens anders te mounten en dat met --bind wes als ~ te krijgen. Maar dit heb ik verder nog niet getest. Voor het gemak heb ik op de server de share wes (\\server\wes) aangemaakt. Waar iedereen in mag lezen en schrijven (zowel Share als NTFS permissies) [size=18:d22b37bd19]\\server\wes mounten als home (~)[/size:d22b37bd19] DIT WERKT DUS NIET (BIJ MIJ ALTHANS) [b:d22b37bd19]Stap 1:[/b:d22b37bd19] Installeer de benodigde packages Voer in een terminal de volgende commando's uit (sudo! of als root) [code:1:d22b37bd19] apt-get install libpam-mount apt-get install smbfs [/code:1:d22b37bd19] [b:d22b37bd19]Stap 2:[/b:d22b37bd19] Aanpassen pam_mount.conf /etc/security/pam_mount.conf moet er als volgt uit zien [code:1:d22b37bd19] debug 0 #heb ik op 1 staan voor het testen mkmountpoint 1 luserconf .pam_mount.conf options_allow nosuid,nodev options_deny suid,dev options_require nosuid,nodev lsof /usr/bin/lsof %(MNTPT) fsck /sbin/fsck -p %(FSCKLOOP) cifsmount /bin/mount -t cifs //%(SERVER)/%(VOLUME) %(MNTPT) -S -o "user=%(USER)%(before=\",\" OPTIONS)" smbmount /usr/bin/smbmount //%(SERVER)/%(VOLUME) %(MNTPT) -o "username=%(USER)%(before=\",\" OPTIONS)" smbumount /usr/bin/smbumount %(MNTPT) umount /bin/umount %(MNTPT) mntagain /bin/mount --bind %(PREVMNTPT) %(MNTPT) volume * smb grandserver & /home/GRAND/& uid=&,gid=domeingebruikers,dmask=0700,workgroup=GRAND - - [/code:1:d22b37bd19] [b:d22b37bd19]Stap 3:[/b:d22b37bd19] Aanpassen PAM /etc/pam.d/common-auth moet er als volgt uit zien [code:1:d22b37bd19] auth required pam_mount.so auth sufficient pam_winbind.so use_first_pass auth required pam_unix.so nullok_secure use_first_pass [/code:1:d22b37bd19] /etc/pam.d/common-password moet er als volgt uit zien [code:1:d22b37bd19] password sufficient pam_unix.so nullok obscure min=4 max=50 md5 password sufficient pam_winbind.so use_authtok password required pam_deny.so [/code:1:d22b37bd19] /etc/pam.d/common-session moet er als volgt uit zien [code:1:d22b37bd19] session required pam_unix.so session required pam_mkhomedir.so umask=0022 skel=/etc/skel session optional pam_mount.so [/code:1:d22b37bd19] Meer heb ik niet. Vanuit de terminal login wes werkt. De user word aangemeld, home wordt zonder problemen gemount. De user kan lezen en schrijven in zijn home. Perfect toch? Nou niet bij mij. Wanneer ik via GDM wil inloggen krijg ik elke keer de volgende melding. Iemand enig idee? Ik ben zo dichtbij (althans dat denk ik) maar het laatste stuk wil maar niet lukken [code:1:d22b37bd19] /etc/gdm/PreSession/Default: Registering your session with wtmp and utmp /etc/gdm/PreSession/Default: running: /usr/bin/X11/sessreg -a -w /var/log/wtmp -u /var/run/utmp -x "/var/lib/gdm/:20.Xservers" -h "" -l ":20" "wes" /etc/gdm/Xsession: Beginning session setup... _IceTransTransNoListen: unable to find transport: tcp _IceTransmkdir: ERROR: euid != 0,directory /dev/X will not be created. _IceTransmkdir: ERROR: Cannot create /dev/X _IceTransPTSOpenServer: mkdir(/dev/X) failed, errno = 13 _IceTransOpen: transport open failed for pts/ubuntu: _IceTransMakeAllCOTSServerListeners: failed to open listener for pts _IceTransISCOpenServer: Protocol is not supported by a ISC connection _IceTransOpen: transport open failed for isc/ubuntu: _IceTransMakeAllCOTSServerListeners: failed to open listener for isc _IceTransSCOOpenServer: Protocol is not supported by a SCO connection _IceTransOpen: transport open failed for sco/ubuntu: _IceTransMakeAllCOTSServerListeners: failed to open listener for sco ** (gnome-session:23826): WARNING **: Unable to lock ICE authority file: /home/GRAND/wes/.ICEauthority [/code:1:d22b37bd19]

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.