Projekt SO

WYŻSZA SZKOŁA INFORMATYKI

I ZARZĄDZANIA

Z SIEDZIBĄ W RZESZOWIE

Projekt

Systemy operacyjne

Temat projektu:

Skrypt masowego dodawania użytkowników wraz z uprawnieniami i przydziałem hasła przy pierwszym
logowaniu.

Prowadzący: dr. inż. Tomasz Bartczak Wykonawca: Łukasz Tomal,

2 IID, GP01

Rzeszów 2012

  1. Wstęp

    1. Skrypt –o czym mowa?

Skrypty są odpowiednikami plików wsadowych systemu DOS. Skrypty są potężnym narzędziem programistycznym (rozbudowana składania, instrukcje pętli, warunku i wyboru, zmienne, stałe i wiele wiele innych) Skrypty czyli programy powłoki są prostymi plikami tekstowymi zawierającymi niektóre polecenia Linuksa i powłoki bash. Po uruchomieniu programu powłoki polecenia te są wykonywane jedno po drugim.

Podsumowując skrypt to niekompilowany tekstowy plik wykonywalny mający uprawnienia-„x” (EXECUTE ), zawierający jakieś polecenia systemowe oraz polecenia sterujące jego wykonaniem. Wykonywany jest tylko i wyłącznie przez interpreter

(tutaj /bin/bash), który tłumaczy polecenia zawarte w skrypcie na język zrozumiały dla procesora. 

BASH – co to takiego?

Bash to jedna z najpopularniejszych powłok systemów uniksowych umożliwiająca zarządzanie systemem z linii komend . Jest domyślną powłoką w większości dystrybucji systemu GNU/Linux oraz w systemie Mac OS X. Bash jest także domyślną powłoką w środowisku Cygwin dla systemów Win32. Bash umożliwia pracę interaktywną i wsadową. Język basha umożliwia definiowanie aliasów(czyli skróty/odwołania do innej nazwy polecenia), funkcji, zawiera konstrukcje sterujące przepływem (if, while, for, ...). Powłoka bash zachowuje historię wykonywanych poleceń.

Streszczenie

Poniższy projekt powstał w celu rozwiązania problemu szybkiego, masowego dodawania kont użytkowników wraz z wymuszeniem nadawania hasła przy pierwszym logowaniu. Użytkownik administrujący nie ma potrzeby dodawania kont po przez metodę okienkową co było by bardzo czasochłonne.. Opracowane i przedstawione rozwiązanie działa w systemach operacyjnych rodziny Linux/Unix i opiera się całkowicie na skrypcie standardowej powłoki BASH.

Wizja projektu

Jako bazę i podstawę badanego w projekcie problemu posłużyłem się sytuacją pracownika firmy którego zadaniem jest administrowanie kont użytkowników firmy znajdujących się na serwerze. Każdego dnia programista pracujący w systemie Ubuntu Linux odpowiada za niezawodne działanie kont i ich dostępność dla danego pracownika w firmie. Podczas tej pracy zatrudnianych jest wielu pracowników gdzie każdemu z osobna nadawane jest konto. Programista współpracuje także z innymi członkami zespołów i współdzieli z nimi swoje zasoby.

Celem pracownika jest osiągnięcie stanu, w którym mógłby w każdym momencie utworzyć dowolną liczbę kont użytkownika, w kilku ruchach. Dodatkowym wymogiem jest ustawienie hasła po pierwszym logowaniu.

Część główna

Głównym problemem było zaprojektowanie i zaimplementowanie rozwiązania skryptowego opartego o wbudowaną powłokę.

Proces projektowania rozpoczęto od sporządzenia schematu blokowego zawierającego algorytm działania i przebieg mechanizmu który dodaje dowolną liczbę kont użytkowników ustaloną przez administratora oraz wymusza nadanie hasła po pierwszym logowaniu do systemu. Efektem tej pracy jest poniższy schemat:

Przebieg działania skryptu

Skrypt ma służyć do stworzenia masowej (dowolnej) ilości kont użytkowników :

Odbywać się to ma w następujący sposób:

passwd: password expiry information changed która świadczy o tym ze każde nowo utworzone konto będzie wymuszało zmianę hasła tzn. wpisanie swojego hasła do danego (wybranego sobie) użytkownika.

Użytkownik ma mieć możliwość przekazywania wraz z wywołaniem skryptu trzech parametrów:

Aby tak uczynić należy spełnić jeden z dwóch warunków:

Skopiować plik do katalogu ~./bin lub do /usr/bin albo zmodyfikować zmienną $PATH.

Trzeba pamiętać że każdą komendę zatwierdza się klawiszem Enter

Końcowy efekt przedstawiam jako listing skryptu:

#!/bin/bash

# Systemy operacyjne -- Projekt skryptu --

# Cel:

# Zadaniem skryptu jest wykonanie operacji utworzenia w szybki

# sposób dowolnej ilości użytkowników wraz z możliwością utworzenia

# własnego hasła(przy pierwszym logowaniu) dla każdego użytkownika.

echo "Ilu użytkowników chcesz podać"

read N

for ((i=0; i<$N; i++))

do

echo "Podaj pelną nazwe konta"

read nazwa_pelna[$i] #podajesz pelna nazwe konta

echo "Podaj nazwe do logowania"

read nazwa_logowanie[$i] #podajesz login

#i=$[i+1]

done

for ((i=0; i<$N; i++))

do

useradd -m -d /home/${nazwa_logowanie[$i]} -p 123456 -s /bin/bash -c ${nazwa_pelna[$i]} ${nazwa_logowanie[$i]} #tworzysz urzytkownika (d- katalog domowy, p- haslo, s- powłok bash(uprawnienia), c-pełna nazwa, (ta komenda nie działać w pełni poprawnie lecz została skorygowana za pomocą komendy poniżej)

passwd -de ${nazwa_logowanie[$i]} #czyści hasło (d) i wymusza przy pierwszym logowaniu zmiane (e)

# stworzyłem ewentualnie drugi i trzeci sposób:

#passwd ${nazwa_logowanie[$i]} #administrator ustawia odgórnie jakieś tymczasowe haslo podczas tworzenia użytkowników

#passwd -x 3 ${nazwa_logowanie[$i]} #oraz możliwość ustawienia ważności hasła w moim przypadku po 3 dniach karze je zmienić.

done

# koniec skryptu

W celu nadania przejrzystości rozwiązaniu pozwoliłem sobie wszelkie objaśnienia funkcji i parametrów umieścić bezpośrednio w kodzie skryptu w postaci komentarzy, które tworzyłem na bieżąco przy pisaniu kodu. Jest to mój pierwszy projekt i nie należy do szczególnie złożonych, ale przy pisaniu bardziej skomplikowanych projektów bieżące komentowanie kodu należy uznać za dobry nawyk.

Obok przypisów do konkretnych funkcji kod poprzedzony jest opisem celu skryptu i parametrów, jakie może przyjąć, co pozwala na zapoznanie się z koncepcją skryptu bez dodatkowej dokumentacji zewnętrznej.

Przedstawiony wyżej skrypt poddano testom polegającym na masowym dodawaniu kont użytkownika. Po wyeliminowaniu kilku błędów składniowych uznano, że skrypt działa poprawnie.

Wyniki pracy rozwiązania

Wynikiem działania skryptu jest stworzenia jest stworzenie wymyślonej sobie liczby użytkowników np. 17-stu.Wynik działania można sprawdzić uruchamiając na pasku:

Computer/YaST(Administrator Settings)/Security and Users/Zarządzanie użytkownikami w oknie będą widnieć utworzeni przez nas użytkownicy albo drugą metodą po przez terminal (należy się zalogować na root’a) wystarczy tylko wpisać komendę w terminalu: cd /home (gdyż w katalogu home znajdują się katalogi domowe stworzonych użytkowników).

Rysunek 1. Sytuacja wejściowa 1. - katalog home; brak utworzonych katalogów domowych kont użytkowników (przykład).

Rysunek 2. Sytuacja wejściowa 2. - katalog home z pozycji terminala;

brak utworzonych katalogów domowych kont użytkowników (przykład).

Rysunek 3. Sytuacja wejściowa 3. – Centrum Sterownia YaST/Zarządzanie użytkownikami;

brak utworzonych kont użytkowników (przykład).

(Jak widać powyżej widnieje tylko konto root’a dlatego, że jest on administratorem).

W trakcie wykonania skryptu można zaobserwować następujące monity w oknie powłoki (terminalu):

Rysunek 4. Komunikaty wykonania skryptu w powłoce; oraz sprawdzenie utworzonych kont; za pomocą polecenia cd /home -znajdujemy się w katalogu home, po przez wpisanie plecenia ls –wyświetlana zostaje zawartość katalogu home jak można zauważyć znajdują się tutaj katalogi stworzonych kont.

Po wykonaniu skryptu:

Rysunek 5. Sytuacja wyjściowa 1. – ekran logowania; po lewej - jak widać znajdują się konta pięciu utworzonych użytkowników, po prawej – przedstawiona sytuacja ustawiania hasła w tym przypadku dla konta „biuro” (przykład).

Rysunek 5. Sytuacja wyjściowa 2. - katalog home; jak widać znajdują się tu katalogi utworzonych przez nas pięciu kont (przykład).

Wnioski i napotkane problemy

Stworzony skrypt miał po prostu tworzyć konta użytkowników wedle życzenia administratora i zabezpieczać je hasłem przy pierwszym logowaniu lecz powstał problem, m.in. innym problemem była składnia, jaką trzeba było się posługiwać pisząc skrypty zapoznanie się z nią zajęło mi chwilę czasu, lecz główny problem tkwił w fragmencie skryptu mianowicie po zakończeniu skryptu funkcja wymuszania hasła nie chciała działać poprawnie. Błąd został skorygowany po dodaniu osobnej komendy która pozwalała nadawać hasło dla użytkownika.

Mój skrypt może być stosowany np. przez administratora serwera. Za pomocą tego skryptu administrator ma możliwość dodawania masowej ilości kont użytkownika wraz z hasłem które użytkownik danego konta podczas pierwszego logowania jest zmuszony sobie stworzy. Jest to sposób zdecydowanie szybszy i wygodniejszy od metody okienkowej czyli dodawaniu użytkowników za pomocą interfejsu graficznego, gdyż w kilkanaście sekund tworzy wybrana liczbę kont.

Do tej pory z Terminala Linux jak i z samego Linux’a korzystałem okazyjnie, głównie pracowałem na systemach MS Windows. Przedmiotowy projekt w znacznym stopniu przyczynił się do pogłębienia mojej wiedzy zdobytej na przedmiocie Systemy operacyjne w zakresie pracy na systemach o rodowodzie uniksowym (głównie praca w powłoce).

Bibligrafia

Literatura przedmiotu

1. Sosna Ł. – Linux. Komendy i polecenia. Wydanie III – Helion, Warszawa 2005

2. Lakshman S. - Skrypty powłoki systemu Linux. Receptury – Helion, Gliwice 2012

Strony internetowe

1. http://debian.linux.pl/threads/1603-Wa%C5%BCne-polecenia-bash/

2. http://ss64.com/bash/

  1. http://www.pixelbeat.org/cmdline_pl_PL.html


Wyszukiwarka

Podobne podstrony:
Projekt SO
Konspekt projektu SO
Projekty OS projekty z so zima 2010
projekty z so 2012
Projekty OS, projekty z so zima 2010
Systemy Operacyjne, projekty cwiczenie2 so z
Projekt PAB?sorber !! II
Systemy Operacyjne, projekty cwiczenie3 so z
projekt o narkomanii(1)
!!! ETAPY CYKLU PROJEKTU !!!id 455 ppt
Wykład 3 Dokumentacja projektowa i STWiOR
Projekt nr 1piątek
so c4
Projet metoda projektu

więcej podobnych podstron