Linux: Subversion (SVN) Server

SUBVERSION (znany jako SVN) – system kontroli wersji na licencji Open Source rozwijany przez Apache Software Fundation. Powstał w 2000 roku przez firmę CollabNet.

potrafi porównywać pliki Worda.
Subversion (znany również jako SVN) – system kontroli wersji, który powstał w celu zastąpienia CVS. Z założenia SVN jest w większości przypadków funkcjonalnie zgodny ze swoim poprzednikiem, z kompatybilności zrezygnowano tam, gdzie było to niezbędne do wprowadzenia nowych rozwiązań. SVN jest wolnym i otwartym oprogramowaniem na licencji Apache.
METODY DOSTĘPU file:/// direct repository access (on local disk)
http:// Access via WebDAV protocol to Subversion-aware Apache 2 web server
https:// Same as http://, but with SSL encryption
svn:// Access via custom protocol to an svnserve server
svn+ssh:// Same as svn://, but through an SSH tunnel

WebDAV (ang. Web-based Distributed Authoring and Versioning) – rozszerzenie protokołu HTTP 1.1 o metody COPY, LOCK, MKCOL, MOVE, PROPPATCH, UNLOCK. Pozwala na zarządzanie i kontrolę wersji plików na serwerze WWW. Implementacja WebDAV na serwerze WWW Apache odbywa się poprzez rozszerzenie mod_dav.

SSH – architektura klient-serwer w której transfer danych jest szyfrowany

Specyfikacja HTTP/1.1 pozwala na jednym adresie IP uruchamiać dowolną ilość serwisów dla różnych domen. Serwer nasłuchuje na wskazanym IP ale informacje o tym jaki serwis wyświetlić, są zależne właśnie od vhostów. Dla każdego serwisu będziesz więc potrzebować odrębnego vhosta.

PLIKI
Subversion do autoryzacji używa dav_svn.

/etc/apache2/dav_svn.passwd – zawiera użytkowników i hasłą do WebDAV SVN
/etc/apache2/dav_svn.acl – ścieżka do pliku z definicją uprawnień dostępu dla użytkowników i grup SVN
/etc/apache2/mods-available/dav_svn.conf – konfiguracja repozytoriów svn, które uzywa pliku /etc/apache2/dav_svn_passwd do autoryzacji

/etc/apache2/ports.conf – nasłuchiwanie Apache na portach
/etc/apache2/sites-available – katalog vhostów zwanych „wirtualkami” – odpowiadają za obsługę konkretnej domeny lub grupy domen
/etc/apache2/sites-available/default – wyświeta stronę domyślną, gdy domena, którą internauta wpisał do przeglądarki, a która kieruje na adres IP serwera, nie ma przyporządkowanej konkretnej virtualki.

INSTALACJA I KONFIGURACJA
Wszystkie polecenia wykonujemy jako root (w Ubuntu dla sudo usera wystarczy komedę poprzedzić słowem sudo i podać hasło, łatwiej jednak zalogować się na roota poprzez sudo -i oraz hasło z konta sudo user)!!!

1. Instalacja pakietów:
Do działania programu będziemy potrzebowali serwer Apache 2, który zapewnia uwierzytelnianie oraz umożliwia przeglądanie zasobów przez interfejs WWW.
Możemy też używać Subversion bez zainstalowanego Apache 2. W takim wypadku będziemy korzystać z autonomicznego serwera svnserve, działającego jako usługa inetd lub jako demon, z prostym uwierzytelnianiem (jest też możliwość skorzystania również z tunelu SSH).

apt-get update

apt-get install apache2 // potwierdz T (Tak)
apt-get install libapache2-svn
apt-get install subversion
apt-get install subversion-tools

2. Sprawdź czy mod_dav i mod_dav_svn jest dostępny. Moduł WebDAV dla Apache (‚Web-based Distributed Authoring and Versioning’) – to rozszerzenie protokołu HTTP umożliwia tworzenie, kopiowanie, przenoszenie, i usuwanie źródła i zbiorów na zdalnym serwerze.
a2enmod dav
a2enmod dav_svn

odpowiedź systemu:
Module dav already enabled
Module dav_svn already enabled

3. Tworzymy katalog, w którym znajdować się będą nasze repozytoria SVN.
mkdir /var/svn // komenda mkdir tworzy katalog

4. Nadajemy uprawnienia katalogowi svn. Aby uwierzytelnianie przez Apache 2 zadziałało, właścicielem katalogu z repozytoriami Subversion powinien być właściciel procesu Apache 2. W Debianie jest to domyślnie użytkownik www-data.
chown -R www-data:www-data /var/svn // komenda chown zmienia właściciela katalogu/pliku
chmod -R 770 /var/svn // komenda chmod zmienia prawa dostępu dla odpowiedniej grupy właścieciel|grupa|pozostali
// 770 oznacza pozwól na r+w+x (czytaj, zapisz, wykonaj) dla grupy właściciel i grupa, dla pozostałych zabroń wszystko

5. Tworzymy nasze piersze repozytorium testowe o nazwie test:
svnadmin create /var/svn/test
chown -R www-data:www-data /var/svn/test

— aby usunąć repozytorium:
rm -r /var/svn/test // komenda rm -r oznacza usuń katalog test ze wszystkimi podkatalogami i plikami

5. Edytujemy plik dav_svn.conf (komentujemy obsługę SSL)
vim /etc/apache2/mods-available/dav_svn.conf // vim jest edytorem tekstu (insert tryb edycji, Esc tryb komend, :wq oznacza zapisz i wyjdź)

<Location /test> #nazwa musi być taka jak nazwa katalogu docelowego SVNPath
DAV svn #moduł svn_dav
SVNPath /var/svn/test #ścieżka do katalogu repozytorium o nazwie test
AuthType Basic #używamy metody HTTP Basic Authentication
AuthName „Repozytorium” #tekst pojawiający się w okienku logowania do svn
AuthUserFile /etc/apache2/dav_svn.passwd #plik z zaszyfrowanymi hasłami użytkowników SVN
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
#SSLRequireSSL #obsługa SSL
</Location>

INFO: Jeżeli Require valid-user będzie w <LimitExcept>…</LimitExcept> to wszyscy użytkownicy będą mógli zobaczyć repozytorium ale tylko określeni będą mogli zapisywać.

6. Restartujemy apache:
/etc/init.d/apache2 restart

Odpowiedź systemu:
Restarting web server: apache2 … waiting .

7. Utwórz konta dla użytkowników SVN (pojawi się monit o hasło użytkownika)

Każdy użytkownik musi być najpierw dodany programem htpasswd, aby móc korzystać z repozytorium SVN.
htpasswd -c /etc/apache2/dav_svn.passwd user1 // parametr -c tworzy plik dav_svn.passwd

htpasswd /etc/apache2/dav_svn.passwd user2 // kolejnych użytkowników tworzymy już bez parametru -c tworzącego plik dav_svn.passwd
htpasswd /etc/apache2/dav_svn.passwd user3

Odpowiedź systemu:
New password: // podajemy hasło
Re-type new password: // powtarzamy hasło
Adding password for user1

— zmiana hasła użytkownika:
htpasswd /etc/apache2/dav_svn.passwd user1

8. Testujemy nasze pierwsze repozytorium test
svn co http://localhost/test // pamiętaj wpisz http://

Obszar uwierzytelniania: <http://localhost:80> Repozytorium
Hasło ‚root’:
Obszar uwierzytelniania: <http://localhost:80> Repozytorium
Użytkownik: user1
Hasło ‚user1’:

odpowiedź systemu:
Pobrano wersję 0.

9. Włączamy obsługę SSL
apt-get install openssl ssl-cert

10. Generate a certificate (pamiętaj, aby wypełnić odpowiednie pola)
http://blog.bestnet.pl/?p=202
openssl req $@ -new -x509 -days 365 -nodes -out /etc/apache2/apache.pem -keyout /etc/apache2/apache.pem

i wpisujemy
Nazwa kraju (2 litery kodu): PL
Nazwa stanu lub prowincji (pełna nazwa): mazowieckie
Nazwa lokalizacji (np. miasto): Warszawa
Nazwa organizacji (np. firma): BESTNET
Nazwa jednostki organizacyjnej (np. sekcja): Nazwa wspólna: bestnet.pl
Adres e-mail: info@bestnet.pl

11. Zmień zezwolenia certyfikatu
chmod 600 /etc/apache2/apache.pem

12. Dodaj nasłuchiwanie na porcie 443 (SSL) do /etc/apache2/ports.conf:
vim /etc/apache2/ports.conf
<IfModule mod_ssl.c>
Listen 443
</IfModule>

13. Plik /etc/apache2/sites-available/default
vim /etc/apache2/sites-available/default

Zmienna <VirtualHost> na <VirtualHost *.80>

i dodaj na końcu pliku po </VirtualHost>

<VirtualHost *.443>
ServerAdmin webmaster@localhost
SSLEngine on
SSLCertificateFile /etc/apache2/apache.pem
</VirtualHost>

14. Odkomentuj SSL wymagane w /etc/apache2/mods-available/dav_svn.conf

<Location /test>
DAV svn // moduł svn_dav
SVNPath /var/svn/test // ścieżka do katalogu repozytorium o nazwie test
AuthType Basic // używamy metody HTTP Basic Authentication
AuthName „Repozytorium” // tekst pojawiający się w okienku logowania do svn
AuthUserFile /etc/apache2/dav_svn.passwd // lokalizacja pliku z zaszyfrowanymi hasłami użytkowników SVN
Require valid-user
SSLRequireSSL // obsługa
</Location>

15. Upewnij się, że moduł ssl jest załadowany
a2enmod ssl

odpowiedź systemu:
Module ssl already enabled

16.Przeładuj konfiguracje Apache
/etc/init.d/apache2 restart

17. Przetestuj połączenie szyfrowane HTTPS używając przeglądarki (jeżeli test przebieg prawidłowo znaczy, że SSL działa)
https://localhost/test // pamiętaj wpisz https://

18. Dodajmy zezwolenia dostępu do SVN dla użytkowników
vim /etc/apache2/dav_svn.authz

Wstawimy do pliku

[groups]
admin = user1,user2,user3
developers = user1,user2,user3

[/]
@admin = rw
@developers = r

[test:/]
@admin = rw
@developers = rw

[/] – repozytorium nadrzędne. Tylko użytkownicy grupy @admin będą mogli dodawać nowe repozytoria.

19. Dodaj to do pliku /etc/apache2/mods-available/dav_svn.conf, by dav_svn.authz kontrolowało dostęp do svn
vim /etc/apache2/mods-available/dav_svn.conf
<Location /test>
DAV svn // moduł svn_dav
SVNPath /var/svn/test // ścieżka do katalogu repozytorium o nazwie test
AuthType Basic // używamy metody HTTP Basic Authentication
AuthName „Repozytorium” // tekst pojawiający się w okienku logowania do svn
AuthUserFile /etc/apache2/dav_svn.passwd // lokalizacja pliku z zaszyfrowanymi hasłami użytkowników SVN
Require valid-user

SSLRequireSSL // obsługa
AuthzSVNAccessFile /etc/apache2/dav_svn.authz // ścieżka do pliku z definicją uprawnień dostępu dla użytkowników i grup SVN
</Location>

20. Przeładuj Apache
/etc/init.d/apache2 restart

21. Sprawdzenie czy działa login i haslo do SVN:
svn list https://localhost/test –username user1 // pamiętaj wpisz https://

— Problemy ———————————————————-

Problem: svn: ‚test’ is already a working copy for a diffrent URL

Rozwiązanie: najczęściej zachowane ustawienia przy zmianie z http na https, usuń w katalogu test katalog .svn, # cd /root/test, sprawdź czy jest katalog .svn komendą # ls -la, usuń zawartość # rm -r .svn

Problem: svn nie pyta o haslo użytkownika

Rozwiązanie: jeżeli już wprowadziłeś login i hasło to, aby pojawił się znowu monit musisz usunąć katalog .subversion # rm -r /root/.subversion

Problem: svn: Serwer wysłał nieoczekiwaną wartość powrotną (405 Method Not Allowed) w odpowiedzi na żądanie PROPFIND dla /test

Rozwiązanie: sprawdź nazwę <Location /test> w pliku /etc/apache2/mods-available/dav_svn.conf a następnie /etc/init.d/apache2 restart

Problem: svn: Serwer wysłał nieoczekiwaną wartość powrotną (403 Forbidden) w odpowiedzi na żądanie OPTIONS dla http://localhost/bestnet

Rozwiązanie: sprawdź

Problem: Pyta o login i haslo ale zwraca komunikat svn: Could not open the requested SVN filesystem

Rozwiązanie: Sprawdź nazwę SVNPath /var/svn/test w pliku /etc/apache2/mods-available/dav_svn.conf a następnie /etc/init.d/apache2 restart
Sprawdź czy ścieżka /var/svn ma prawa 770 i www-data:www-data

Problem: Podczas restartowania apache otrzymujesz komunikat
Restarting web server: apache2[Thu Oct 07 21:48:57 2010] [warn] _default_ VirtualHost overlap on port 443, the first has precedence

… waiting [Thu Oct 07 21:48:58 2010] [warn] _default_ VirtualHost overlap on port 443, the first has precedence

Rozwiązanie: Zahaszuj w pliku /etc/apache2/sites-available/default
vim /etc/apache2/sites-available/default

1. <VirtualHost *.443>
2. ServerAdmin webmaster@localhost
3. SSLEngine on
4. SSLCertificateFile /etc/apache2/apache.pem
5. </VirtualHost>

Problem: sqlite: database disk image is malformed
Rozwiazanie:
1) usuna ukryty katalog .svn
2) klikamy prawym na katalog svn checkout i wyeksportowac bezposrednio do tego katalogu
3) na pytanie „Katalog nie jest pusty. Cz nadpisac?”, Potwierdzic, że TAK

ŹRÓDŁO:
http://www.howtoforge.com/installing-subversion-and-configuring-access-through-different-protocols-on-ubuntu-11.10
http://www.howtoforge.com/how-to-set-up-an-ssl-vhost-under-apache2-on-ubuntu-9.10-debian-lenny
http://jakilinux.org/aplikacje/subversion-dla-kazdego/

Redirect http to https
http://wiki.apache.org/httpd/RedirectSSL

Satisfy Any or Satisfy All
http://wiki.apache.org/httpd/BypassAuthenticationOrAuthorizationRequirements

Edytory tekstu do programowania

Php Storm – jeden z najlepszych edytorów na rynku dla systemu Windows.
Aptana – bardzo dobre, darmowe i wygodne środowisko-kombajn do tworzenia stron. Nieco podobne do PhpStorma. Jedyna wada, to fakt, że została napisana w Javie, przez co nieco trąci wydajnością (w praktyce zupełnie nie przeszkadza)
Notepad++ – bardzo dobry i darmowy (ma zwijanie składni, obsługę skinów itp). Jako dodatkowy „szybki” edytor w sam raz.
PsPad – Znowu za darmo :). W tej kategorii jeden z najlepszych na rynku.
Pajączek – znany i lubiany rodzimy produkt. Kombajn do tworzenia stron. Bardzo dobrze wspiera sprawdzanie pisowni i gramatyki (ala Word) – przydatna rzecz dla mnie – bugofila :)

Linux użytkownicy i grupy

Użytkownicy i grupy w Linuksie Ponieważ Linux jest systemem przeznaczonym głównie do pracy w sieciach, zastosowano w nim konieczny podział na użytkowników i grupy. Pierwszym i najważniejszym użytkownikiem w systemie jest root. Posiada on nieograniczone uprawnienia w systemie (stąd słynne powiedzenie: „Root or God – what’s a difference?” – z ang. dosł. root czy Bóg – co za różnica?).
Konto administratora tworzone jest podczas instalacji systemu. Tworzenie innych kont nie jest wymagane, ale mocno zalecane. Istnieje przekonanie, że nie powinno się przesiadywać cały czas na koncie roota, gdyż ma to poważne znaczenie dla bezpieczeństwa systemu (zarówno wewnętrznego, jak i zewnętrznego).Powinno być używane wyłącznie do zadań wymagających maksymalnych uprawnień (administracja systemem).
Zatem nawet jeśli do Twojego komputera dostęp masz tylko Ty to i tak powinieneś utwórzyć konto dla zwykłego użytkownika – dla siebie.
Grupy tworzone są dla użytkowników charakteryzujących się daną cechą. Dzięki grupom możliwe jest ustalenie uprawnień dla większego grona użytkowników jednocześnie – nie zaś każdemu indywidualnie.
Grupy przydają się na komputerach, do których dostęp mają użytkownicy z zewnątrz (szkoły, kafejki, konta shell) – podział może np. wyróżniać użytkowników domowych i „zewnętrznych”.
Pliki użytkowników i grup W Linuksie istnieją trzy standardowe pliki odnoszące się kolejno do użytkowników, grup i haseł.
Pierwszy z nich to /etc/passwd. Kiedyś przechowywano w nim hasła (ang. password), teraz umieszcza się tam informacje m.in. o użytkownikach. Dane przechowywane są w postaci rekordów.
Poniżej znajduje się format wpisu:
użytkownik:hasło:nr_id:nr_gid:nazwa_grupy:/home/użytkownik:/bin/bash Pierwsza jest nazwa użytkownika, później znajduje się pole dla hasła (zwykle jest tam tylko x). Następny jest numer id użytkownika i numer id grupy (identyfikator w systemie). Następnie katalog domowy użytkownika (zwykle /home/nazwa_użytkownika), a na końcu ścieżka do interpretera poleceń (w tym wypadku powłoka bash – z angielska: walić – w klawisze oczywiście).
Plik odnoszący się do grup to /etc/group – znajdują się w nim informacje o grupach w następującym formacie:
nazwa_grupy:hasło:id_grupy:użytkowni1,użytkownik2 Hasło odnosi się oczywiście do grupy (nie do użytkowników). Tutaj chyba nie trzeba nic wyjaśniać.
Ostatnim plikiem, którego wnętrze należy omówić to /etc/shadow – gdzie przechowywane są m.in. zaszyfrowane hasła.
A oto i format zapisywania rekordów:
użytkownik:zaszyfrowane_hasło:d_1:d_2:d_3:d_4:d_5:d_6: Kolejno możemy wymienić (od lewej): nazwę użytkownika – wiadomo, zaszyfrowane_hasło – np. w systemie md5 lub des, następne pola to daty:
Pole Opis d_1 data ostatniej zmiany hasła (liczona w dniach od początku epoki Uniksa) d_2 liczba dni od ostatniej zmiany hasła, po których hasło może być zmienione ponownie d_3 liczba dni od ostatniej zmiany hasła, po których musi nastąpić zmiana hasła d_4 liczba dni przed wygaśnięciem hasła (o czym użytkownik jest ostrzegany) d_5 liczba dni po wygaśnięciu hasła d_6 data wyłączenia konta liczona w dniach (od początku epoki Uniksa) Unix i jego epoka Początek epoki Uniksa (ang. Unix epoch) jest datowany na 1 stycznia 1970 roku, godziny 00:00:00 (czasu GMT). Jest to przedział czasu od początku istnienia systemu Unix. Czas epoki Uniksa jest ograniczony zakresem dodatniej 32-bitowej liczby sekund, która wynosi 2 147 483 647 (czyli 231 – 1).
Koniec epoki Uniksa ma nastąpić 19 stycznia 2038 o godzinie 03:14:07 (GMT). Liczba sekund, która upłynęła od początku epoki nazywa się uniksowym znacznikiem czasu (ang. Unix Time Stamp). Taki znacznik czasu stosowany jest również w wersjach pochodnych systemu – Linux, BSD i inne…
W wielu sytuacjach w Linuksie musimy użyć właśnie takiej jednostki czasu, np. w sytuacji przedstawionej powyżej.
Tworzenie użytkowników i grup Linux posiada kilka narzędzi, które pozwolą nam stworzyć nowego użytkownika lub grupę. Poniżej opiszę jak stworzyć nowego użytkownika i grupę za jednym zamachem. Tworzenie będzie miało bardzo prostą formę.
Jako root wpisz jedno polecenie:
adduser Następnie zostaniesz poproszony o nazwę nowego użytkownika, hasło oraz inne dane, które nie są już niezbędne. Jest to bardzo prosta metoda, nie zawiera wiele czasu.
Aby skasować użytkownika wpisz deluser a następnie podaj nazwę.
Aby utworzyć nową grupę wpisz:
addgroup Następnie podajesz nazwę grupy i gotowe.
Aby skasować grupę wpisz delgroup i podaj nazwę.
Zarówno w jednym i w drugim przypadku niezbędne informacje (tj. id, katalogi) tworzone są automatycznie. Często te właśnie programy używane są do tworzenia grup podczas instalacji. Niestety nie zawsze znajdziemy je w naszej dystrybucji.
Inne metody tworzenia użytowników i grup Metody zaprezentowane poniżej mogą odstraszyć początkujących użytkowników. Przy odrobinie czasu polecam poeksperymentować z nimi na konta i grupy testowe. To pozwoli złagodzić „strach”.
Polecenia do tworzenia i modyfikowania użytkowników: useradd, usermod, userdel Oto przykład tworzenia użytkownika za pomocą polecenia useradd (zaloguj się jako root):
useradd -d /home/user -G grupa1,grupa2 -m user W ten sposób zostanie utworzony użytkownik (o nazwie user), do tego zostanie utworzony jego katalog domowy. Użytkownik ten zostanie przydzielony do grup: grupa1 i grupa2.
Pozostaje utworzyć jeszcze tylko hasło:
passwd user Po wpisaniu polecenia zostaniesz poproszony o zmianę hasła lub w przypadku roota o podanie nowego. Jest to najprostrzy sposób, aby nadać hasło użytkownikowi.
Innym sposobem na podanie hasła może być zastosowanie opcji -p zaszyfrowane_hasło. W tym wypadku należy podać hasło odpowiednio zakodowane (w zależności jakie szyfrowanie wybrałeś podczas instalacji, np. md5 czy des itp…). Jeszcze innym sposobem jest edycja pliku /etc/shadow i tam też w odpowiednie miejsce wpisujemy zaszyfrowane hasło.
Oto flagi do polecenia useradd (i nie tylko):
Flaga Opis -d ustawia domyślny katalog domowy -e data, od której konto użytkownika zostanie wyłączone (dla użytkowników tymczasowych), czyli data ważności konta -f liczba dni od wygaśnięcia hasła, po których konto ma być blokowane -g grupa użytkownika -G lista grup, do których ma należeć użytkownik (grupy oddzielaj przecinkami) -s podanie shella (np. /bin/bash lub innego zamiast domyślnego) -u numer id użytkownika -l (małe „L”), zmiana nazwy użytkownika (usermod) Poleceniem userdel usuwamy danego użytkownika:
userdel -r user Zastosowanie opcji -r spowoduje dodatkowo usunięcie katalogu domowego tego użytkownika.
Opcję usermod można łączyć z wymienionymi wyżej flagami. Przykładowo opcja -d towrzy nowy katalog (np. -d /home/nowy), opcja -l nowy_login, -G grupa1,grupa2,grupa3 itd…
Polecenia do tworzenia i modyfikowania grup:
groupadd, groupmod, groupdel Oto przykład utworzenia nowej grupy poleceniem groupadd:
groupadd -g 1021 grupa Opcja -g powoduje przypisanie numeru gid (group id) i jest opcjonalna – jeśli nie podasz tego parametru zostanie przydzielony pierwszy wolny identyfikator. Zaleca się nadawanie unikalnego identyfikatora. Całe powyższe polecenie tworzy grupę o nazwie „grupa”.
Modyfikacja grupy – przykład:
groupmod -n nowa_nazwa grupa Polecenie powoduje nadanie nowej nazwy podanej grupie.
Poleceniem groupdel usuwamy grupę. Po poleceniu należy podać nazwę grupy.
Modyfikacja danych osobistych – chfn Jeśli chcesz dokonać zmianę danych takich, jak: imię i nazwisko, telefon itp., użyj polecenia:
chfn nazwa_użytkownika Dostaniesz kilka pól do wypełnienia. Naciśnięcie entera spowoduje pozostawienie aktualnej wartości. Jeżeli chcesz skasować wartość i pozostawić dane pole puste – wpisz spację (spacja, enter).
Zmiana shella Aby zmienić powłokę logowania użyj polecenia chsh (ang. Change Shell). Zostaniesz poproszony o podanie nowej ścieżki do shella. Jako root możesz podać nazwę użytkownika przy wywoływaniu polecenia, aby dokonać dla niego zmiany.
Rada dla początkujących Jeśli nie czujesz się pewnie w tym co chcesz zrobić nie pozostawaj bezradny. Do szybkiego dodawania i usuwania użytkowników oraz grup używaj pierwszych poleceń (tych łatwiejszych).
Jak pisałem wcześniej, polecenia te mogą nie występować w Twojej dystrybucji – w takim wypadku możesz użyć gotowych wzorów (patrz przykłady).
Dodatkowe eksperymenty na trudniejszych poleceniach na pewno nie zaszkodzą, jeśli zachowasz odpowiednią ostrożność.

Źródło:
http://computersun.pl/linux/podstawy/uzytkownicy-grupy-w-linuksie-s_79.html
http://www.ubucentrum.net/2009/02/dodawanie-uzytkownikauzytkownikow-do.html

Linux podstawy

Wersja systemu

uname -a
Linux backup 2.6.26-1-686 #1 SMP Fri Mar 13 18:08:45 UTC 2009 i686 GNU/Linux

 

cat /etc/debian_version
5.0

Informacje o zmianach statusu połączenia sieciowego

mii-tool -wvv
22:49:43 eth0: negotiated 100baseTx-FD flow-control, link ok
22:49:43 eth1: negotiated 100baseTx-FD, link ok

Uruchamianie vhosta pod osobnym UID/GID pod Apache2[1]

apt-get install apache2-mpm-itk [2]

 

<VirtualHost>
[…]
<IfModule mpm_itk_module>
AssignUserId user group
</IfModule>
</VirtualHost>

Użytkownicy i grupy[]

FIND – to program uniksowy, który służy do wyszukiwania plików o zadanych parametrach.

find /home/robert -iname ‚*Madonna*’ – przeszuka katalog /home/robert, jeśli natrafi na plik, który w nazwie posiada „madonna” (wielkość liter nie ma znaczenia) to wyświetli jego nazwę wraz ze ścieżką dostępu;
find /mnt/Muzyka ! -name ‚*Madonna*’ – przeszuka katalog i wyświetli nazwy plików, które nie mają w sobie nazwy „Madonna” (wielkość liter ma znaczenie);
find . -name ‚dane.*’ – wyszukiwanie pliku o nazwie dane.* w katalogu bieżącym i w jego podkatalogach;
find / -name ‚dane.*’ – wyszukiwanie pliku o nazwie dane.* zaczynając od katalogu głównego;
find /katalog/ -user osoba -type d – poszukiwanie podkatalogów w katalogu /katalog należących do użytkownika osoba;

HOSTNAME

root@bestnet:/# hostname
root@bestnet:/# uname -n
root@bestnet:/# cat /proc/sys/kernel/hostnam
server

 

// Edit the hostname //
root@bestnet:/# vim /etc/hostname /

 

// The Fully Qualified Domain Name (FQDN) //
root@bestnet:/# hostname -f
server

 

// Change hosts //
root@bestnet:/# /etc/hosts// default without IP address
127.0.0.1 localhost
127.0.1.1 .
– the hostname defined in the „/etc/hostname”.
– of the mobile PC, you may chose invalid and safe domain such as „localdomain” or top level domain as „domain.com”// static IP //
127.0.0.1 localhost
xxx.xxx.xxx.xxx server.domain.com server
// dynamic IP //
127.0.0.1 name.no-ip.org name localhost

 

// Active new name of the hostname //
root@bestnet:/# /etc/init.d/hostname.sh start

http://www.debian.org/doc/manuals/debian-reference/ch05.en.html
http://www.debianhelp.co.uk/hostname.htm
http://www.ducea.com/2006/08/07/how-to-change-the-hostname-of-a-linux-system/
http://jblevins.org/log/hostname

Linux block websites

I sposób (hosts)

  1. Open the Terminal app found in the Accessories folder in the „Applications” menu.
  2. Type „sudo gedit /etc/hosts” in the prompt that appears.
  3. Add a line under the „127.0.0.1” line that reads „0.0.0.0” followed by the website you want to block.
  4. Click the „Save” button, then restart your computer to make the changes take effect.

II sposób (iptables)
iptables -A FORWARD -m string –algo kmp –string „facebook.com” -j DROP
iptables -A OUTPUT -p tcp -m string –string „facebook.com” –algo kmp -j DROP
III Aplikacje
SQUID
http://www.opendns.com/

http://www.netfilter.org/
http://dansguardian.org/

http://jakilinux.org/aplikacje/ujarzmij-squida-czesc-i-%E2%80%93-warstwa-sprzetowa/
http://jakilinux.org/aplikacje/ujarzmij-squida-czesc-ii-%E2%80%93-konfiguracja/
http://jakilinux.org/aplikacje/ujarzmij-squida-czesc-iii-sarg/

Smoothwall/IpCop
DansGuardian
Untangle
SonicWall
Watchguard Fireboxes.

Zmiana daty i czasu w Linux

Aby zmienić date musisz być zalogowany jako root lub jako użytkownik uprzywilejowany (w niektórych dystrybucjach przed komeną wpisujemy sudo i podajemy hasło użytkownika uprzywilejowanego utworzonego podczas instalacji systemu)

Czas w formacie CEST (wschodnioeuropejska strefa czasowa uwzględniony jest czas letni/zimowy)

user@pc~$ date
sob, 15 gru 2012, 12:28:52 CET

Czas w formacie UTF (Uniwersalny Czas Koordynowany – minus 2 godziny ze względu na czas letni dla Polski)

user@pc~$ date -u
sob, 15 gru 2012, 11:36:29 UTC

Czas w formacie RFC-2822 (czas lokalny w formacie do jakiego jesteśmy przyzwyczajeni. Zapis „+0200” określa przesunięcie czasowe względem UTC)

user@pc~$ date -R
Sat, 15 Dec 2012 12:39:36 +0100

Pełny format polecenia zmieniającego czas systemowy jest następujący:
user@pc~$ date MMDDhhmmCCYY.ss

MM – miesiąc (np. styczeń 01)
DD – dzień miesiąca (np. 15)
hh – godzina (np. 10)
mm – minuta (np. 40)
CC – pierwsze dwie cyfry roku (system przyjmuje domyślnie te z aktualniej daty; tutaj 19)
YY – dwie ostatnie cyfry roku (system przyjmuje domyślnie te z aktualniej daty; tutaj 12)
ss – sekundy (system przyjmuje domyślnie 00)

Zmieńmy czas systemowy na 15 grudnia 2012 godzina 12:28 i 52 sekundy:
user@pc~$ date
sob, 14 gru 2012, 12:10:02 CET

root@pc~# date 121512282012.52
sob Gru 15 12:28:52 CET 2012

Odczytujemy i ustawiamy zegar sprzętowy RTC (hwclock) jako root:
root@pc~# hwclock
sob, 15 gru 2012, 11:44:57 -0.986103 sekund

Zmieńmy teraz nieco czas systemowy, a następnie zsynchronizujmy do niego zegar sprzętowy:
user@pc~$ date
sob, 15 gru 2012, 12:28:52 CET

root@pc~# date 04181330 sob Gru 15 13:30:00 CEST 2012
systohc – System Time To Hardware Clock
root@pc~# hwclock --systohc
root@pc~# hwclock sob Gru 15 13:30:31 2012 -0.419225 seconds

Zmieniliśmy czas systemowy i zapewniliśmy sobie przez równoczesną modyfikację nastaw zegara sprzętowego trwałość zmiany czasu systemowego. Efekt otrzymamy dopiero po zrestartowaniu komputera.

Praktyczną sytuacją jest konieczność trwałej korekty czasu o godzinę czy kilkanaście minut:
root@pc~# date MMDDhhmm
root@pc~# hwclock --systohc

Konfigurujemy parametry czasu (timeconfig) Pozostały jeszcze dwa parametry czasu, nad którymi nie potrafimy sprawować kontroli. Mianowicie nie potrafimy zmienić strefy czasowej, ani określić, czy zegar sprzętowy odmierza czas UTC, czy też lokalny. Otóż zegar sprzętowy odmierza jedynie czas od zadanego momentu początkowego i nie zawiera żadnych wskaźników dotyczących, czy jest to czas lokalny, czy UTC (ani tym bardziej jaka to strefa czasowa itp.). To, jaki czas zawiera nasz zegar sprzętowy jest kwestią konwencji którą sami przyjmiemy. Informacje o tej konwencji przechowuje plik /etc/sysconfig/clock. Natomiast informację na temat strefy czasowej plik /etc/localtime. Obejrzymy pierwszy z nich:

  1. cat /etc/sysconfig/clock

UTC=false ARC=false [root@crash /root]# _
Plik zawiera dwa parametry: UTC i ARC. Przyjmowane przez nie wartości oznaczają: UTC=true – zegar sprzętowy zawiera czas UTC (GMT) UTC=false – zegar sprzętowy zawiera czas lokalny ARC=true – sprzętowy format czasu dla platformy Alpha ARC=false – sprzętowy format czasu dla platformy Intel (nasza)
Plik /etc/localtime jest dowiązaniem symbolicznym do pliku Warsaw wskazującego „nasze miejsce na Ziemi”. Plik Warsaw nie jest zwykłym plikiem tekstowym. Zawiera on dane dotyczące nie tylko geograficznej strefy czasowej, ale także reguł zmiany czasu z letniego na zimowy (i odwrotnie) w naszym kraju. Do modyfikacji plików /etc/localtime i /etc/sysconfig/clock służy narzędzie timeconfig. Wywołując:

  1. timeconfig

otrzymujemy semigraficzne menu, w którym możemy ustawić konwencję UTC (GMT) dla zegara sprzętowego (gwiazdka w polu [*] Hardware clock set to GMT) oraz wybrać miejsce na Ziemi (strefę czasową). Skrypt setclock W katalogu /usr/sbin znajdować się powinien skrypt setclock synchronizujący zegar sprzętowy do czasu systemowego z uwzględnieniem zawartości pliku /etc/sysconfig/clock.

  1. setclock
  2. date

Thu Apr 22 22:25:47 CEST 1999 [root@crash /root]# hwclock Thu Apr 22 22:25:47 1999 -0.216723 seconds [root@crash /root]# _
Skrypt setclock poprzez uwzględnienie ustawienia parametru „UTC=true/false” jest zatem bardzo wygodnym narzzędziem do synchronizacji zegara sprzętowego. Należy ujawnić, że istnieje opcja –utc polecenia hwclock, wskazująca, ze przyjmujemy konwencję, iż zegar sprzętowy zawiera czas UTC. Zlecenia jednorazowe (at) Wykorzystajmy teraz pełny format i zmieńmy czas systemowy na 14 marca 1999 godzina 11:05 i 17 sekund, a następnie powróćmy korzystając ze skróconego formatu do czasu aktualnego:

  1. date

Sun Apr 18 11:42:40 CEST 1999 [root@crash /root]# date 031411051999.17 Sun Mar 14 11:05:17 CET 1999 [root@crash /root]# date 04181143 Sun Apr 18 11:43:00 CEST 1999 [root@crash /root]# _
Odczytujemy i ustawiamy zegar sprzętowy RTC (hwclock) Jak łatwo się domyślić odczyt zegara sprzętowego przeprowadza się następująco:

  1. hwclock

Sun Apr 18 12:49:49 1999 -0.54325 seconds [root@crash /root]# _
Zmieńmy teraz nieco czas systemowy, a następnie zsynchronizujmy do niego zegar sprzętowy:

  1. date

Sun Apr 18 12:52:24 CEST 1999 [root@crash /root]# date 04181330 Sun Apr 18 13:30:00 CEST 1999 [root@crash /root]# hwclock –systohc [root@crash /root]# hwclock Sun Apr 18 13:30:31 1999 -0.419225 seconds [root@crash /root]# _
Zmieniliśmy czas systemowy, ale jednocześnie zapewniliśmy sobie przez równoczesną modyfikację nastaw zegara sprzętowego trwałość zmiany czasu systemowego. Zapamiętajmy dobrze opcję –systohc (system time to hardware clock). Jest ona niezwykle skuteczna. Spróbujmy teraz niezależnie zmienić czas zegara sprzętowego i zobaczyć jakie będą tego konsekwencje. Datę pozostawiamy bez zmian, zmienimy tylko godzinę i minutę: [root@crash /root]# hwclock Sun Apr 18 13:45:58 1999 -0.583225 seconds [root@crash /root]# hwclock –set -date”04/18/99 14:15:00″ [root@crash /root]# hwclock Sun Apr 18 14:15:06 1999 -0.090563 seconds [root@crash /root]# date Sun Apr 18 13:47:29 CEST 1999 [root@crash /root]# _
Zauważamy, że zmiana czasu zegara sprzętowego nie zrobiła żadnego wrażenia na czasie systemowym. Nie ma w tym nic dziwnego, gdyż oba zegary kontaktują się ze sobą tylko w momencie startu systemu. Zrestartujmy teraz komputer. [root@crash /root]# date Sun Apr 18 14:31:56 CEST 1999 [root@crash /root]# hwclock Sun Apr 18 14:32:06 1999 -0.090563 seconds [root@crash /root]# _
Jak widzimy, czas systemowy został zsynchronizowany do zegara sprzętowego. Ten sam efekt możemy uzyskać w bardziej elegancki sposób, korzystając z opcji –hctosys (hardware clock to system time) polecenia hwclock: [root@crash /root]# hwclock Sun Apr 18 15:22:01 1999 -0.390563 seconds [root@crash /root]# hwclock –set -date”04/18/99 17:50:00″ [root@crash /root]# hwclock Sun Apr 18 17:50:11 1999 -0.820563 seconds [root@crash /root]# date Sun Apr 18 15:23:56 CEST 1999 [root@crash /root]# hwclock –hctosys [root@crash /root]# date Sun Apr 18 17:50:43 CEST 1999 [root@crash /root]# _
Najczęściej spotykaną w praktyce sytuacją jest konieczność trwałej korekty czasu o godzinę czy kilkanaście minut. Najłatwiejsza do zapamiętania sekwencja służąca do tego, to:

  1. date MMDDhhmm
  2. hwclock –systohc

Konfigurujemy parametry czasu (timeconfig) Pozostały jeszcze dwa parametry czasu, nad którymi nie potrafimy sprawować kontroli. Mianowicie nie potrafimy zmienić strefy czasowej, ani określić, czy zegar sprzętowy odmierza czas UTC, czy też lokalny. Otóż zegar sprzętowy odmierza jedynie czas od zadanego momentu początkowego i nie zawiera żadnych wskaźników dotyczących, czy jest to czas lokalny, czy UTC (ani tym bardziej jaka to strefa czasowa itp.). To, jaki czas zawiera nasz zegar sprzętowy jest kwestią konwencji którą sami przyjmiemy. Informacje o tej konwencji przechowuje plik /etc/sysconfig/clock. Natomiast informację na temat strefy czasowej plik /etc/localtime. Obejrzymy pierwszy z nich:

  1. cat /etc/sysconfig/clock

UTC=false ARC=false [root@crash /root]# _
Plik zawiera dwa parametry: UTC i ARC. Przyjmowane przez nie wartości oznaczają: UTC=true – zegar sprzętowy zawiera czas UTC (GMT) UTC=false – zegar sprzętowy zawiera czas lokalny ARC=true – sprzętowy format czasu dla platformy Alpha ARC=false – sprzętowy format czasu dla platformy Intel (nasza)
Plik /etc/localtime jest dowiązaniem symbolicznym do pliku Warsaw wskazującego „nasze miejsce na Ziemi”. Plik Warsaw nie jest zwykłym plikiem tekstowym. Zawiera on dane dotyczące nie tylko geograficznej strefy czasowej, ale także reguł zmiany czasu z letniego na zimowy (i odwrotnie) w naszym kraju. Do modyfikacji plików /etc/localtime i /etc/sysconfig/clock służy narzędzie timeconfig. Wywołując:

  1. timeconfig

otrzymujemy semigraficzne menu, w którym możemy ustawić konwencję UTC (GMT) dla zegara sprzętowego (gwiazdka w polu [*] Hardware clock set to GMT) oraz wybrać miejsce na Ziemi (strefę czasową). Skrypt setclock W katalogu /usr/sbin znajdować się powinien skrypt setclock synchronizujący zegar sprzętowy do czasu systemowego z uwzględnieniem zawartości pliku /etc/sysconfig/clock.

  1. setclock
  2. date

Thu Apr 22 22:25:47 CEST 1999

[root@crash /root]# hwclock
Thu Apr 22 22:25:47 1999 -0.216723 seconds