bash - Skrypt tworzący użytkownika sftp bazujacy na certyfikacie

Potrzebujesz pomocy z C, C++, perl, python, itp.
Nerus87
Posty: 6
Rejestracja: 25 września 2016, 13:25

bash - Skrypt tworzący użytkownika sftp bazujacy na certyfikacie

Post autor: Nerus87 »

Hej,

chciałbym stworzyć skrypt do automatycznego tworzenie użytkownika sftp, użytkownik ten ma możliwość łączenia się z serwerem tylko przez sftp oraz nie posiada wglądu do katalogów za wyjątkiem swojego katalogu.

Lista czego oczekuję:
  • Sprawdzenie czy użytkownik uruchamiający jest superuser lub ma prawa przez sudo,
  • Sprawdzenie czy grupa sftp istnieje, jeżeli nie należy ją utworzyć,
  • Wprowadzenie użytkownika z klawiatury, stworzenie nowego użytkownika przez adduser bez możliwości zmiany katalogów oraz innego typu połączeń jak tylko z sftp,
  • Wprowadzenie MAC adresu dla danego użytkownika i dodanie do zasad frewall'a,
  • Stworzenie certyfikatu po którym będzie się łączył dany użytkownik,
  • Przesłanie maila z informacjami: nazwa użytkownika, treść maila oraz plik dołączony jako certyfikat prywatny.
Aktualny kod:

Kod: Zaznacz cały

#!/bin/bash

#Check user acess
if [ "$EUID" -ne 0 ]
  then echo "Please run as superuser or sudo"
  exit
fi

#Check is sftp group exist
getent group sftp || groupadd sftp

echo "Please give name of new user:"
read -r USER

#User exists ?
if id "$USER" >/dev/null 2>&1; then
        echo "User: $USER exists"
        exit
fi

HOME_PATH="/home/$USER"
SSH_PATH="$HOME_PATH/.ssh"

ssh-keygen -b 4096 -f "$USER"

"$SSH_PATH"/id_rsa.pub > ~"$USER"/.ssh/authorized_keys
rm "$SSH_PATH"/id_rsa.pub

exit
ptk 1) Sprawdzanie czy użytkownik jest uprzywilejowany
Awatar użytkownika
LordRuthwen
Moderator
Posty: 2324
Rejestracja: 18 września 2009, 21:45
Lokalizacja: klikash?

Re: bash - Skrypt tworzący użytkownika sftp bazujacy na certyfikacie

Post autor: LordRuthwen »

Pytanie po co? Przecież nie mając uprawnień nie dodasz użytkownika ani grupy.
Po co limitować po MAC? Przecież to zadziała tylko po sieci lokalnej.
Awatar użytkownika
lizard
Beginner
Posty: 287
Rejestracja: 08 lutego 2016, 18:47

Re: bash - Skrypt tworzący użytkownika sftp bazujacy na certyfikacie

Post autor: lizard »

Wymiana klucza idzie w nie tę stronę, co powinna. Przesyła się klucz publiczny, a nie prywatny. Użytkownik powinien sam wygenerować parę kluczy SSH i przesłać Tobie publiczny do umieszczenia w jego katalogu domowym.

Sprawdzanie, czy grupa lub użytkownik istnieje nie ma sensu, bo useradd i groupadd same wyświetlą stosowny komunikat i zwrócą odpowiedni status, który sprawdzisz zmienną $? lub warunkiem, np.:

Kod: Zaznacz cały

useradd "${User}" || exit
Mój każdy skrypt zaczyna się ustawieniem flagi "-e". Dzięki temu przy pierwszym wystąpieniu błędu skrypt jest przerywany i nie ma ryzyka dziwnego zachowania. Jeśli dopuszczasz w jakimś miejscu błąd (np. dodawana grupa już istnieje), to sprawdza się:

Kod: Zaznacz cały

groupadd sftp 2> /dev/null || true
ODPOWIEDZ