Script in Ubuntu erstellen

ArrorRT

Lieutenant
Registriert
Jan. 2021
Beiträge
847
Hallo alle miteinander.

Ich habe vor kurzem einen SFTP Server in Ubuntu 22.04.3 LTS aufgesetzt und der läuft auch einwandfrei.

Da ich nun sehr viele Benutzer anlegen muss, dachte ich das es einfach wäre ein Skript dafür zu schreiben. Leider habe ich keine Ahnung wie das in Ubuntu funktioniert und ob es so wie ich es mir denke überhaupt umsetzbar ist, aber da ist dann eure Expertise gefragt.

Das Skript soll so ablaufen bzw. diese Befehle ausführen:
  1. einen Benutzer anlegen
  2. meiner Gruppe namens sftp zuordnen
  3. 2x Ordner anlegen Namens Upload und Download
  4. Die Ordner dem root user zuweisen (also als Besitzer)
  5. Rechte zuweisen (755)
  6. Dann wieder dem User XY zuweisen
  7. diesen Block in der SSH Konfig einfügen immer (unten anfügen)
    1. Makefile:
      Match User XY
      ChrootDirectory /var/sftp
      X11Forwarding no
      AllowTcpForwarding no
      ForceCommand internal-sftp
  8. SSH neu starten


Ich hoffe das es so möglich ist, denn aktuell mache ich es per Hand und das ist natürlich kein Beinbruch aber recht aufwändig.
 
Eigentlich musst du nur die Befehle, die du händisch nutzt, in ein Textfile schreiben, .sh ranhängen und mit chmod +x dem ganzen passende Rechte geben.
 
  • Gefällt mir
Reaktionen: nutrix
Okay das hört sich ja schonmal gut an.
Aber wie kann ich damit die SSH Config bearbeiten, das mache ich ha ''per Hand''
 
@madmax2010 wie setze ich den Command richtig ein? Ich habe mir gerade mal die Parameter angesehen und würde es so machen.
Code:
sed '$aMatch User XY
ChrootDirectory /var/sftp
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp' /etc/ssh/sshd_config

Wäre das so korrekt?
 
Das geht mit cat einfacher:

Zeugs in eine Datei packen und dann einfach
Code:
cat erzeugte_datei >>/etc/ssh/sshd_config

Deine Variable mußt Du natürlich korrekt vorher entsprechend setzen und erzeugen. Ich würde immer noch ein Header bzw. Kommentar reinbauen, so das ersichtlich ist, wer und wann und was warum da angefügt wurde.
 
also eine normale Textdatei? und der Inhalt wird dann in das Script übertragen, richtig?
 
ArrorRT schrieb:
4.Die Ordner dem root user zuweisen (also als Besitzer)
Autsch, würde ich so nicht machen. Nur dediziert mit eingeschränkten Berechtigungen!
ArrorRT schrieb:
also eine normale Textdatei? und der Inhalt wird dann in das Script übertragen, richtig?
Richtig. @honky-tonk hats richtig bezeichnet, cat mit >> macht ein append, also anhängen an eine bereits bestehende Textdatei.
 
@nutrix wie genau würde das dann aussehen? Und aus welchem Grund würdest du es anders machen?
 
Überleg dir, ob es nicht vielleicht besser/einfacher/eleganter wäre für jeden User eine eigene Datei in /etc/ssh/sshd_config.d/ anzulegen. Glaube die sshd config sollte hierfür schon ein Include enthalten.
 
  • Gefällt mir
Reaktionen: nutrix
@boeck ich bin für alles offen, das den Prozess optimiert. Ich müsste nur wissen, wie ich es umsetzen kann
 
ArrorRT schrieb:
@nutrix wie genau würde das dann aussehen?
Eigener User mit entsprechender eigener Gruppe, z.B.

Gruppe ftpuser anlegen
User A darauf berechtigen, siehe auch https://manpages.ubuntu.com/manpages/trusty/de/man8/adduser.8.html

Code:
chown -R ftpuser:ftpuser /myverzeichnis
.

Du brauchst dann nur in der /etc/groups den User dieser Gruppe zuordnen, und schon haben alle in der Gruppe zugriff drauf.

/etc/group
Code:
ftpuser:x:1000:usera,userb,userc
ArrorRT schrieb:
Und aus welchem Grund würdest du es anders machen?
Sicherheit! Niemals einen Benutzer mit root laufen lassen, never ever!
 
  • Gefällt mir
Reaktionen: madmax2010
Ich möchte aber erreichen, dass jeder Benutzer seine eigenen Ordner hat. Also es sollen nicht alle auf die gleichen zugreifen, sie sollen nur gleich heißen.

Der zweite Punkt macht natürlich absolut Sinn, danke für den Hinweis
 
boeck schrieb:
Überleg dir, ob es nicht vielleicht besser/einfacher/eleganter wäre für jeden User eine eigene Datei in /etc/ssh/sshd_config.d/ anzulegen. Glaube die sshd config sollte hierfür schon ein Include enthalten.
Das ist eindeutig die bessere Lösung.
 
  • Gefällt mir
Reaktionen: madmax2010 und ArrorRT
Die wäre dann wohl auch übersichtlicher, aber wie stelle ich das an?
 
ArrorRT schrieb:
Ich möchte aber erreichen, dass jeder Benutzer seine eigenen Ordner hat. Also es sollen nicht alle auf die gleichen zugreifen, sie sollen nur gleich heißen.
Nur mal so, ich hab ja auch so Zeugs mehrfach gemacht, würde hier aber nicht für jeden User eine eigene sshd_config verpassen. Ich hab die sshd_config immer schön so belassen, daß sie für alle User gleich gilt. Warum willst Du das so machen?
 
Das liegt daran, dass jeder Benutzer andere Daten braucht und auf die Wiese ist es für mich einfacher jedem die richtigen Dateien zuzuweisen.
Außerdem soll Benutzer A keinen Zugriff auf die Daten von Benutzer B haben und so weiter
 
Ok, aber den Zugriff kannst Du doch per Datei- und Ordnermaskierung erledigen, und fertig. Dafür mußt Du nicht in der sshd_config rumbasteln. Ist das für Business oder privat? Bei Business, gibts dann bei Euch kein LDAP oder AD, womit Ihr Zugriffsberechtigungen regelt?

Wie gesagt, Du kannst das alles so machen, ohne das Du weiter ssh mit seiner Konfig anfassen mußt.
 
  • Gefällt mir
Reaktionen: madmax2010
Das wäre sogar noch besser, was muss ich dafür tun?

Achso und es ist in dem Fall privat, aber mit seeehr vielen Leuten
 
Zurück
Oben