Witaj na Forum Linuxiarzy
Zanim zalogujesz się, by pisać na naszym forum, zapoznaj się z kilkoma zasadami savoir-vivre'u w dziale Administracja.
Wiadomości z problemami zamieszczone w wątku "Przywitaj się" oraz wszelkie reklamy na naszym forum będą usuwane.

Skrypt tworzący nowego użytkownika linux

Zaczęty przez gorus1, Styczeń 09, 2019, 09:02:34 PM

Poprzedni wątek - Następny wątek

gorus1

Dzień Dobry,
nie jestem zbyt doświadczonym użytkownikiem linux w związku z tym chciałbym prosić o pomoc w napisaniu (dla niektórych zapewne prostego) skryptu.
Otóż posiadam serwer NAS zyxela nsa310 i chciałbym na niego wysyłać automatycznie kopie poprzez ssh.
Na tym zyxelu jest dystrubucja Linux nas 2.6.31.8 i obsługuje komenda adduser itp., ale niestety po restarcie jakiekolwiek zmiany są usuwane.
W związku z tym potrzebuję stworzyć skrypt autostartu, który automatycznie zakładałby użytkownika i definiowałby mu dostęp ssh tylko do jednego wybranego katalogu.
Chodzi o to, że podając dane do mojego prywatnego NAS komuś z zewnątrz, kto wysyłałby po SSH backupy chcę mieć pewność, że ten ktoś nie będzie miał nieuprawnionego dostępu do innych katalogów.
Czy mógłbym liczyć na pomoc?

gosc

Lepiej się zastanowić dlaczego te konta się kasują.
Odpowiedź zapewne znajdziesz w dokumentacji.

gorus1

Kasuje się ponieważ system jest tak skompilowany, że domyślnie katalog domowy użytkownika "root" jest ustawiony na /home , który znajduje się w wewnętrznej pamięci flash. Ta pamięć jest usuwana przy każdym ponownym uruchomieniu urządzenia. Jednak udało mi się poradzić z tym problemem dzięki tym http://dp.nonoo.hu/installing-ffp-on-zyxel-nsa325/ tutkom.
Natomiast dzięki metodzie autoryzacji SSH kluczem publicznym rozwiązał się mój problem z obawą udostępnienia hasła root gdyż rsync działa dwukierunkowo i mogłem go skonfigurować na swoim domowym NAS, który pobiera pliki ze zdalnego VPS.
Ponadto dzięki drugiej metodzie z powyższego linku dotyczącą crontaba mogę zaplanować te zadania.
W zasadzie to by było wszystko ale chciałbym Was podpytać jak użyć rsync w taki sposób, aby jedną komendą pobrał wszystkie katalogi o nazwie "public_html" z katalogu /home/NAZWAUŻYTKOWNIKA/domains/NAZWADOMENY/public_html
?
pomoże ktoś?

lesio

Ja używam rsync w takiej postaci:
rsync -arvtHAX --delete -e "ssh -p 1234" root@NAZWA_HOSTA:/home/user/domena/public_html .

Oczywiście zarówno port (tutaj 1234) jak i opcje polecenia rsync można dobrać stosownie do potrzeb.
W poleceniu katalogiem docelowym jest katlog bieżący "." - może być oczywiście dowolny inny.
Dla portu standardowego dla ssh nie trzeba żadnej opcji dla portu, czyli po prostu stosuje się samo "ssh".
Jest tylko jeden katalog public_html - nie rozumiem, co oznacza "wszystkie katalogi o nazwie public_html"?

gorus1

Ja chcę pobierać z innego serwera więc rsync powinienem użyć w takiej postaci
rsync -chavzP --stats -e "ssh -p 1111 -i /sciezka/do/kluczaSSH" root@111.22.33.44:/home/domains/public_html/ /katalog/z/backupem
jednak to polecenie kopiuje tylko jeden wybrany katalog, a ja chciałbym kopiować wszystkie katalogi o nazwie public_html - każdy z użytkowników taki posiada, a ścieżka do niego wygląda tak:
/home/NAZWAUŻYTKOWNIKA/domains/NAZWADOMENY/public_html
chciałbym jedną komendą rsync robić backup tj. pobierać katalogi "public_html z wszystkich domen każdego użytkownika.
Ponadto chciałbym, aby kopie były archiwizowane oraz wykonywane codziennie, a każda następna nadpisuje ostatnią tak aby było dostępnych 7 ostatnich dni.
Jest to możliwe do wykonania?

TataPingu

Cytat: gorus1 w Styczeń 14, 2019, 02:30:33 AM
Jest to możliwe do wykonania?

Spróbuj z tym algorytmem (oczywiście, "źródło" i "cel" odpowiednio dopasować):



ZRODLO=/home/domains/public_*

CEL=/katalog/z/backupem

rsync -r -t -p -o -g -v --progress --delete --modify-window=1 -l -H "${ZRODLO}" "${CEL}"


gorus1

Coś jest nie tak - pojawia się komunikat o złej składni a używam dokładnie takiej:
rsync -r -t -p -o -g -v --progress --delete --modify-window=1 -l -H -e "ssh -p 11223 -i /ffp/home/root/.ssh/keypair" root@111.22.33.44 "${/home/domains/public_*}" "${/i-data/beadda5d/backupy}"
natomiast u ścieżka źródła wygląda zawsze tak:
/home/NAZWAUŻYTKOWNIKA/domains/NAZWADOMENY/public_html
czyli zmiennymi w ścieżkach są zawsze nazwa użytkownika i nazwa domeny.

TataPingu

No oczywiście, że musisz to odpowiednio rozbudować...
- ja podałem Ci tylko sposób stworzenia takiego skryptu, bo samym rsync raczej tego nie wykonasz...

gorus1

Czy jest tu na forum, aby jakaś sekcja "zlecenia", albo "praca", bo nie widzę, a zleciłbym komuś napisanie takiego skryptu jak powyżej.

TataPingu

Cytat: gorus1 w Styczeń 09, 2019, 09:02:34 PM
Otóż posiadam serwer NAS zyxela nsa310 i chciałbym na niego wysyłać automatycznie kopie poprzez ssh.
Na tym zyxelu jest dystrubucja Linux nas 2.6.31.8 i obsługuje komenda adduser itp., ale niestety po restarcie jakiekolwiek zmiany są usuwane.

Kolego, nawet, gdyby człowiek chciał Ci pomóc, to określasz zadania i cele mało precyzyjnie...

"Posiadasz zyxela" i chciałbyś "wysyłać"...
-ale CO na CO ?
Czy chcesz regularnie przesyłać dane z różnych stacji(komputerów) na NASa ?

A jeśli tak, to w sieci lokalnej, czy z poza niej (z zewnątrz)?

Poza tym, co tutaj ma do rzeczy jaki system jest na NASie?, po co Ci tworzenie usera, czy jakichś skryptów ?

Cytat: gorus1 w Styczeń 09, 2019, 09:02:34 PM
Chodzi o to, że podając dane do mojego prywatnego NAS komuś z zewnątrz, kto wysyłałby po SSH backupy chcę mieć pewność, że ten ktoś nie będzie miał nieuprawnionego dostępu do innych katalogów.

Tego to już zupełnie nie rozumiem ?
- Kolego, określ precyzyjnie i po kolei CO CHCESZ OSIąGNąć (ROBIć), to dopiero wówczas możemy Ci pomóc...

gorus1

Kolego, doczytaj do końca wszystkie posty w tym temacie, bo mam wrażenie, że przecztałeś dwa pierwsze wersy pierwszego postu i dwa ostatnie ostatniego i nic dziwnego, że nie rozumiesz.
Jakbyś doczytał do końca to byś zauważył, że sam sobie poradziłem z problemem z pierwszego postu dając odpowiedź w drugim (zacytuję sam siebie)
CytatKasuje się ponieważ system jest tak skompilowany, że domyślnie katalog domowy użytkownika "root" jest ustawiony na /home , który znajduje się w wewnętrznej pamięci flash. Ta pamięć jest usuwana przy każdym ponownym uruchomieniu urządzenia. Jednak udało mi się poradzić z tym problemem dzięki tym
Natomiast z czego na co chciałbym wysłać jak wół napisane jest również w drugim moim poście
Cytat...rsync działa dwukierunkowo i mogłem go skonfigurować na swoim domowym NAS, który pobiera pliki ze zdalnego VPS
a to czy w sieci lokalnej czy nie to nie ma żadnego znaczenia dla skryptu choć jakbyś uważnie czytał to byś zapewne zauważył to co zacytowałem powyżej tj. "ze zdalnego VPS" i nie błaźniłbyś się pytaniem czy w sieci lokalnej.
A to jaki system jest na NAS ma do rzeczy tyle, że takie dystrybucje są zazwyczaj okrojone i chciałem z góry to wyszczególnić gdyż mogą nie mieć jakiegoś pakietu, który mógłby być zasugerowany jako rozwiązanie.
Kolego, jak chcesz pomóc to przeczytaj uważnie wszystkie posty, bo mam wrażenie, że Twoje odpowiedzi służą jedynie do nabijania żółtego potencjometru przy Twoim nickname.

TataPingu

Cytat: gorus1 w Styczeń 15, 2019, 04:54:13 PM
Kolego, doczytaj do końca wszystkie posty w tym temacie

Kolego, abstrachując od inwektyw, którymi mnie obsypujesz, powiem Ci jedno, tak, czytałem...
- i zrozumiałem na tyle, że mogę powiedzieć, że gadasz farmazony !
Możliwe, że coś Ci się tam udało zmajstrować na tym Twoim NASie, ale w sumie to chyba nawet dokładnie nie wiesz, jak to działa...

Co wkońcu chcesz na tego NASa przesyłać (a jakim sposobem, to mało istotne), jakieś "kopie" ? i skąd ?
- za chwilę piszesz, że udostępniasz NASa na zewnątz ?

"Chodzi o to, że podając dane do mojego prywatnego NAS komuś z zewnątrz, kto wysyłałby po SSH backupy chcę mieć pewność, że ten ktoś nie będzie miał nieuprawnionego dostępu do innych katalogów."

- przecież to Twoje słowa !

Oczywiście, wisi mi to, co Ty tam kombinujesz, jednak z moich mglistych domysłów wnioskuję, że próbujesz publicznie udostępniać NASa, jako czegoś w rodzaju "chmurki"...
Jeśli faktycznie jest tak, jak się domyślam, to dlaczego nie zrobisz np serwera FTP z prawdziwego zdarzenia?

I właśnie o to mi chodziło...
- sprecyzuj dokładnie zadania NASa, to wówczas można coś doradzić...

Ty jednak postępujesz, jakbyś był płacącym "PANEM" w jakiejś podrzędnej knajpce...
- no nic, życzę powodzenia w rozwoju...

gorus1

#12
CytatChodzi o to, że podając dane do mojego prywatnego NAS komuś z zewnątrz, kto wysyłałby po SSH backupy chcę mieć pewność, że ten ktoś nie będzie miał nieuprawnionego dostępu do innych katalogów.
tak to moje słowa gdyż pierwotnie chciałem wysyłać rsync-iem kopie ze Z D A L N E G O VPS do mojego domowego NAS zyxel i szukałem metody (skryptu) która z tego powodu:
Cytatdomyślnie katalog domowy użytkownika "root" jest ustawiony na /home , który znajduje się w wewnętrznej pamięci flash. Ta pamięć jest usuwana przy każdym ponownym uruchomieniu urządzenia
będzie przy każdym restarcie mojego domowego NAS zakładał użytkownika z dostępem SSH, ale tylko do jednego katalogu przeznaczonego na backupy gdyż jak wynika z pierwszego cytatu - dostęp do zdalnego VPS posiadam nie tylko ja i nie chciałbym, aby ktoś miał dostęp do innych danych na moim prywatnym NAS.
Jednak w międzyczasie odkryłem (o czym już pisałem) to:
http://dp.nonoo.hu/installing-ffp-on-zyxel-nsa325/
dzięki czemu mogłem zainstalować na moim NAS FFPstick co z kolei umożliwiło mi skonfigurowanie SSH pubkey authentication oraz Crontab w taki sposób, aby "wyjąć" te pakiety z pamięci flash.
Mając możliwość autoryzacji kluczem na NAS dalej doczytałem, że mogę właśnie na NAS zainstalować rsync i automatycznie pobierać kopie zamiast wysyłać z VPSa, natomiast crontab umożliwia, że harmonogram z ewentualnymi skryptami mogę skonfigurować w NAS zyxel.
Reasumując
doszedłem do momentu w którym takie polecenie:
rsync -chavzP --stats -e "ssh -p 1111 -i /sciezka/do/kluczaSSH" root@111.22.33.44:/home/user/domains/nazwa_domeny/public_html/ /katalog/z/backupem
pobiera ze Z D A L N E G O VPSa taki katalog /home/user/domains/nazwa_domeny/public_html/
natomiast na tym VPS ie jest więcej użytkowników, którzy mają domeny, a w każdej z tych domen jest katalog "public_html"
Interesuje mnie zawartość wyłącznie katalogów "public_html" wszystkich domen każdego użytkownika i dlatego potrzebuję skryptu.
Czy to takie ciężkie było do zrozumienia? Przecież to wynikało z następnych postów.

TataPingu

#13
Piszesz
Cytat: gorus1 w Styczeń 15, 2019, 11:31:47 PM
tak to moje słowa gdyż pierwotnie chciałem wysyłać rsync-iem kopie ze Z D A L N E G O VPS do mojego domowego NAS zyxel i szukałem metody (skryptu)

W innym miejscu, że chcesz "pobierać z VPS", jeszcze w innym, "że znalazłeś rozwiązanie problemu" (dzięki http://dp.nonoo.hu/installing-ffp-on-zyxel-nsa325/ - czy myślisz, że ktoś z nas będzie to również "studiować" ?)  itp...
Raz tak, raz owak, totalny "misz-masz" i "groch z kapustą" (w każdym bądź razie, ja to tak odebrałem)...

Teraz wreszcie zrozumiałem o co Ci dokładnie chodzi....
- ty chciałbyś użyć rsynca do:

--------------------------------------------------------------------
zdalnyVPS(/home/..itd/public_html/)----backup---->(rsync)ZYXEL
--------------------------------------------------------------------

Zauważ, że w początkowej wersji miało być tak:

zdalnyVPS(/home/..itd/public_html/)(rsync)----backup---->ZYXEL

a są to dwie różne konstelacje!

I dopiero w tym punkcie planowania powinno się zastanowić, jak spreparować ZYXELA do tego zadania...

Na pewno nie trzeba tutaj nic manipulować z userami, rootami, czy samym OSem (zobacz moje: "Poza tym, co tutaj ma do rzeczy jaki system jest na NASie?, po co Ci tworzenie usera, czy jakichś (dodatkowych) skryptów ?)

A co do samego skryptu, to OK, widzę, że podpowiedziałem do zupełnie innej konstelacji.
Oczywiście, można to określić w jednej linii, ja osobiście jednak wolę wpierw określać zmienne, a dopiero potem prawidłowy algorytm (posłużyłem się już Twoim, działającym algorytmem), np.:


ZRODLO=root@111.22.33.44:/home/user/domains/nazwa_domeny/public_html/
CEL=/katalog/z/backupem

rsync -chavzP --stats -e "ssh -p 1111 -i /sciezka/do/kluczaSSH" "${ZRODLO}" "${CEL}"



Funkcjonujący "rdzeń" już masz, teraz wszystko zależy od NASa, t.j. co można na nim zrobić.
Przypuszczam, że niewiele więcej, jak spreparować tak crontaba, że uruchamiać będzie po kolei kolejne "skrypty-rdzenie" do każdej domeny z osobna.

Ale do tego, jak widzę sam doszedłeś, więc o jakie "skrypty", czy "pomoc" Ci chodzi ?

Twoja wypowiedź do której się odniosłem:
"Czy jest tu na forum, aby jakaś sekcja "zlecenia", albo "praca", bo nie widzę, a zleciłbym komuś napisanie takiego skryptu jak powyżej."

gorus1

#14
Cytatczy myślisz, że ktoś z nas będzie to również "studiować
dziękuję Ci, że w przeciwieństwie do innych akurat Tobie zechciało się to studiować.
Natomiast zauważ, że zmiana moich oczekiwać i definicja problemu nastąpiła dlatego, że w międzyczasie znalazłem w sieci pewne rozwiązanie, które uświadomiło mi, że zamiast konfigurować skrypty backupu na zdalnym VPS (udostępniając jednocześnie dane dostępowe do mojego domowego NAS) - mogę zrobić odwrotnie tj. wygenerować klucz SSH na domowym NAS, zaimplementować go na VPS i "pobierać" backup ze zdalnego VPSa.
Teraz, kiedy to NAS zyxel (do którego mam dostęp wyłącznie ja) pobiera dane/backup, a nie zdany VPS (do którego mają dostęp również inni) wysyła poprzez rsync to faktycznie nie jest potrzebne zakładanie żadnych użytkowników z okrojonym dostępem itp.
Jednak gdyby było odwrotnie to w jaki inny sposób można by było zablokować dostęp do innych zasobów na NAS zyxel niż poprzez stworzenie użytkownika z "okrojonym" dostępem?
Cieszę się jednak, że udało się to jakoś przedstawić i jak już pisałem - doszedłem do takiej działającej konfiguracji:
rsync -chavzP --stats -e "ssh -p 1111 -i /sciezka/do/kluczaSSH" root@111.22.33.44:/home/user/domains/nazwa_domeny/public_html/ /katalog/z/backupem

do tego momentu wszystko zdaje się dobrze udało mi się opisać jednak jedno muszę doprecyzować tj. napisałeś:
Cytat... uruchamiać będzie po kolei kolejne "skrypty-rdzenie" do każdej domeny z osobna.
otóż gdyby ilość domen i użytkowników była niezmienna to zapewne próbowałbym sam napisać taki skrypt, albo najprawdopodobniej kilka skryptów.
Jednak użytkownicy  dodają domeny i je usuwają jak również sami użytkownicy są dodawani i usuwani w związku z tym liczba tych katalogów "public_html" w poszczególnych domenach będzie się zmieniać i dlatego potrzebuję takiego skryptu, który to wszystko uwzględni.

Zobacz najnowsze wiadomości na forum