<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Zugriffsbeschränkung on zefanjas.de - Open Source &amp; Education</title>
    <link>https://zefanjas.de/tags/zugriffsbeschr%C3%A4nkung/</link>
    <description>Recent content in Zugriffsbeschränkung on zefanjas.de - Open Source &amp; Education</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>de-DE</language>
    <lastBuildDate>Tue, 21 Nov 2017 22:57:46 +0000</lastBuildDate><atom:link href="https://zefanjas.de/tags/zugriffsbeschr%C3%A4nkung/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Zugang in Ubuntu für Schüler einschränken – 2 Möglichkeiten</title>
      <link>https://zefanjas.de/zugang-in-ubuntu-fuer-schueler-einschraenken-2-moeglichkeiten/</link>
      <pubDate>Tue, 21 Nov 2017 22:57:46 +0000</pubDate>
      
      <guid>https://zefanjas.de/zugang-in-ubuntu-fuer-schueler-einschraenken-2-moeglichkeiten/</guid>
      <description>&lt;p&gt;Seit mehr als einem Jahr verwenden wir [die freie Musterlösung linuxmuster.net][1] in unserer Schule. Neben den Computern im Computerraum haben wir auch in einigen Klassenzimmern Computer stehen, z.B. in den Räumen mit fest installiertem Beamer oder in den Grundschulklassenzimmern. An einigen dieser Rechner wollten wir deshalb den Zugang aus folgenden Gründen einschränken:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Schüler sollen sie nicht an einem Lehrerrechner einloggen können&lt;/li&gt;
&lt;li&gt;Manche Räume sind auch am Nachmittag für Schüler/innen mehr oder weniger frei zugänglich. In diesen Räumen soll ein Login für Schüler nur zur Unterrichtszeit möglich sein.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Unter Ubuntu (welches wir ausschließlich auf den betroffenen Rechnern benutzen) kann man mit [PAM][2]-Modulen den Zugriff auf einen Rechner einschränken. In unserem Fall sind das die Module &lt;em&gt;&lt;strong&gt;pam_access&lt;/strong&gt;&lt;/em&gt; und &lt;em&gt;&lt;strong&gt;pam_time&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;h3 id=&#34;zugang-für-schüler-auf-lehrerrechner-einschränken&#34;&gt;Zugang für Schüler auf Lehrerrechner einschränken&lt;/h3&gt;
&lt;p&gt;Damit sich nur Lehrkräfte und Mitarbeiter an einem bestimmten Rechner anmelden können, müssen folgende Dateien angepasst werden. In der Datei &lt;strong&gt;/etc/security/access.conf&lt;/strong&gt; legt man fest, wer auf welche Dienste Zugriff hat. Am Ende der Datei haben wir deshalb folgenden Eintrag ergänzt:&lt;/p&gt;
&lt;pre class=&#34;&#34;&gt;-:ALL EXCEPT root linuxadmin (teachers) (staff):ALL
```

Diese Zeile bedeutet, dass niemand Zugriff auf alle Dienste hat, außer die Benutzer root, linuxadmin und die Gruppen teachers und staff.

Damit PAM diese Datei bei der Anmeldung mit überprüft muss noch folgende Zeile _am Anfang_ der Datei **/etc/pam.d/common-auth** eingetragen werden:

&lt;pre class=&#34;&#34;&gt;account required pam_access.so
```

Nun sollten sich nur noch Lehrkräfte und Mitarbeiter anmelden können.

### Zugang für Schüler nur zu Unterrichtszeiten ermöglichen

Diese Art von Zugangsbeschränkung lies sich leider nicht so leicht wie die erste umsetzen. PAM unterstützt zwar eine zeitbasierte Anmeldung, aber leider lassen sich in diesem Modul nur einzelne Benutzer und keine Gruppen angeben. Deshalb muss jeder Benutzer in das PAM Modul eingetragen werden, damit die Zugangsbeschränkung auch funktioniert. Damit man nicht jeden Benutzernamen einzeln eintragen muss, habe ich ein Skript geschrieben, das die Benutzernamen ausließt und eine passende Vorlage für die Datei **/etc/security/time.conf** erstellt.

&lt;pre class=&#34;&#34;&gt;#!/usr/bin/python3
import csv
from subprocess import call

classes = {}
out = &#34;&#34;
user = &#34;&#34;

#creates updated csv in /var/lib/sophomorix/print-data/all.csv
call([&#34;sophomorix-print&#34;, &#34;-a&#34;])

with open(&#39;/var/lib/sophomorix/print-data/all.csv&#39;, &#39;rU&#39;) as exemplarfile:
    reader = csv.reader(exemplarfile, delimiter=&#39;;&#39;)
    i = 0
    #get all classes and put the user in the right class
    for row in reader:
        if row[1] != &#34;teachers&#34;:
            if row[1] not in classes:
                classes[row[1]] = []
            classes[row[1]].append(row[2])

    #create the strings for /etc/security/time.conf
    for grade in classes:
        #print(&#34;\n&#34;+grade)
        user = &#34;* ; * ; &#34;
        for i in range(0, len(classes[grade])):
            #print(classes[grade][i])
            if i == 0:
                user += classes[grade][i]
            else:
                user += &#34;|&#34; + classes[grade][i]
        out += &#34;\n&#34; + user + &#34;; Wk0730-1330&#34;

print(out)

```

Das Skript erzeugt zuerst eine Liste mit allen Benutzernamen und liest diese dann aus und erzeugt folgende Zeile(n):

&lt;pre class=&#34;&#34;&gt;* ; * ; user1|user2|user3 ; Wk0730-1330
```

Das bedeutet das die user1, user2 und user3 Zugriff auf alle Dienste haben (die zwei &amp;#8222;*&amp;#8220; am Anfang), aber nur an Werktagen zwischen 7:30 Uhr und 13:30 Uhr (Wk0730-1330). Weitere Infos zu weiteren Möglichkeiten findet man [hier][3].

Die Ausgabe des Skripts muss man jetzt nur noch nach **/etc/security/time.conf** kopieren und noch diese Zeile in **/etc/pam.d/common-auth** ergänzen:

&lt;pre class=&#34;&#34;&gt;account required pam_time.so
```

### Fazit

Mit PAM hat man viele Möglichkeiten den Zugriff auf einen Ubuntu-Rechner einzuschränken und genau festzulegen, wer wann an welchem Rechner Zugang hat. Dank [postsync][4] (neben [LINBO][5] das Killerfeature der linuxmuster.net) kann man gezielt festlegen, welche Rechner diese Konfiguration bekommen, ohne verschiedene Images pflegen zu müssen.

_Beitragsbild [CC by Adelson Raimundo Reis Amaral][6]_

 [1]: https://zefanjas.de/2017/11/18/5-grossartige-open-source-programme-die-wir-in-unserer-schule-einsetzen/
 [2]: https://de.wikipedia.org/wiki/Pluggable_Authentication_Modules
 [3]: https://wiki.ubuntuusers.de/pam_time/
 [4]: http://docs.linuxmuster.net/de/latest/howtos/use-postsync/index.html
 [5]: http://docs.linuxmuster.net/de/latest/manuals/linbo/index.html
 [6]: https://commons.wikimedia.org/wiki/File:Access-denied_story.jpg</description>
    </item>
    
  </channel>
</rss>
