Samba ved UiO

Ved Universitetet i Oslo tilbys for Linux-maskinar Samba-tjener fra Red Hat sine offisielle repositories, med sentralt distribuert konfigurasjonsfil.

1   Forutsetninger

For at maskinen skal være en Samba-server må den være meldt inn i Active Directory (AD), domenet "UIO.NO". Dette har vi en prosedyre for, se Join Windows-domene. Maskinen må kjøre en UiO-støttet variant av RHEL Server, og må ha et DNS-navn direkte under domenet uio.no. Dette vil si at:

maskinnavn.fak.uio.no

ikke er et gyldig navn ifm. medlemskap i AD. Navnet må være:

maskinnavn.uio.no

For øvrig brukes Red Hats distribusjon av Samba. Konfigurasjonsfil distes av USIT via CFEngine, noe som skjer via innmelding av maskinen i riktig rolle. Hovedkonfigurasjonen ligger her, og kan ikke endres på av lokal administrator:

/etc/samba/smb.conf

Konfigurasjon av shares og ev. annen lokal konfigurasjon gjøres i filen:

/etc/samba/smb.conf-<maskinnavn>

2   Installere Samba

2.1   RHEL6 (Samba 3.6.x)

  1. Installer pakken "samba":

    # yum -y install samba
    
  2. Sørg for at Samba starter ved boot:

    # chkconfig smb on
    
  3. Be usit-gsd@rt.uio.no melde maskinen inn i domenet, se Join Windows-domene

  4. Meld fra til usit-gsd@rt.uio.no om at maskinen skal være en Samba-tjener. Da vil UiOs driftsopplegg sørge for at Samba er riktig satt opp. SSD kjører i mreg:

    mreg> policy host_add samba_server <maskinnavn>
    OK: : Added <maskinnavn>.uio.no to samba_server
    
  5. Samba kan startes med:

    # service smb start
    

SELinux kjører Enforcing på RHEL6, og dette kan forårsake problemer. Se dokumentasjon:

2.2   RHEL7 og RHEL8 (Samba 4.x)

  1. Be usit-gsd@rt.uio.no melde maskinen inn i domenet, se Join Windows-domene

  2. Meld fra til usit-gsd@rt.uio.no om at maskinen skal være en Samba-tjener. Da vil UiOs driftsopplegg sørge for at Samba er riktig satt opp. SSD kjører i mreg:

    mreg> policy host_add samba_server <maskinnavn>
    OK: : Added <maskinnavn>.uio.no to samba_server
    
  3. Når CFEngine har konfigurert Samba ihht. policy, sjekk status med:

    # systemctl status smb
    # systemctl status winbind
    
  4. Sørg for at firewalld slipper gjennom trafikk til Samba:

    # firewall-cmd --add-service=samba
    success
    # firewall-cmd --add-service=samba --permanent
    success
    

SELinux kan i noen tilfeller forårsake problemer. Se dokumentasjon:

3   Join Windows-domene

Viktig

Dette må gjøres av SSD.

Advarsel

På grunn av en bug i Samba 4.10.4 i RHEL8 er prosedyren inntil videre på RHEL8:

yum downgrade -y samba-4.9.1-8.el8
net ads join -U brukernavn createcomputer=sambasrv
net ads testjoin
yum update -y

Slik gjøres join til AD samtidig som vi sørger for at maskinen havner i riktig OU sambasrv for ryddighetens skyld:

# net ads join -U <brukernavn> createcomputer=sambasrv

Brukernavnet her tilhører en brukar som er medlem i gruppen ucore. Andre brukere har ikke tilgang til å melde inn i dette OU-et i AD.

Det kommer gjerne et par feilmeldinger ved selve innmeldingen i domenet. Dette er normalt ikke et problem og indikerer ikke at innmeldingen feilet. Man kan teste tilknytning til domenet slik:

# net ads testjoin
Join is OK

Dersom maskinen tidligere var innmeldt i domenet, eller en annen maskin med samme navn var innmeldt, må den fjernes fra domenet før den kan meldes inn igjen. Kontakt i tilfelle windows-drift@usit.uio.no og be dem fjerne maskinen fra domenet.

4   Konfigurasjon

Den sentrale konfigurasjonsfilen /etc/samba/smb.conf vedlikeholdes av USIT via CFEngine.

Testing av konfigurasjon kan gjøres slik:

# testparm

Dersom man har behov for andre innstillinger i sentral konfigurasjonsfil, dvs. under [global], ta kontakt med usit-gsd@usit.uio.no.

4.1   Eksempel på konfigurasjon

For oppsett av shares, redigerer du /etc/samba/smb.conf-<maskinnamn>. Denne filen må opprettes dersom den ikke finnes fra før.

Eksempel:

[share-navn]
    path = /avdeling/maskin/katalog/underkatalog
    create mode = 0774
    directory mode = 0775
    browseable = yes
    public = no
    guest ok = no
    read only = no
    invalid users = root
    valid users = <brukernavn>
    veto files = /.??*/

Sharet får her den endelege stien \\maskinnavn\share-navn.

Dette sharet vil kunne åpnes av en enkelt brukar. For å gi tilgang til en hel gruppe, kan man istedenfor skrive:

valid users = &<gruppenavn>

'&' betyr "slå opp nettgruppen i NIS/LDAP".

4.2   Nettgrupper og filgrupper

For å gi tilgang kan man bruke oppslag på filgrupper eller nettgrupper, eller en kombinasjon av disse:

valid users = +osx-core    # filgruppe
valid users = @ucore       # nettgruppe
valid users = &osx-core    # nettgruppe viss den finnest, ellers filgruppe

Se smb.conf(5) for mer info.

4.3   Ikke vise skjulte filer

Direktivet veto files = /.??*/ gjemmer alle skjulte filer og katalogar (som begynner på '.').

4.4   Dele ut hjemmeområder

Dersom maskinen skal dele ut hjemmeområder, vil det automatisk bli lagt til konfigurasjon i smb.conf via policy homedir_server. Hjemmeområdene vil da være tilgjengelig på vanlig måte som \\maskinnavn\brukernavn.

5   Stopp og start av Samba

CFEngine vil starte tjenestene dersom de ikke kjører. For manuell stopp/start kan man bruke:

På RHEL6:

# service smb stop|start|restart

På RHEL7 og RHEL8:

# systemctl stop|start|restart smb
# systemctl stop|start|restart winbind

Samba logger ved UiO til /var/log/samba/log.smbd

Av Trond Hasle Amundsen
Publisert 17. feb. 2020 10:52 - Sist endret 17. feb. 2020 10:54