dum | žák

Linux

Název školy Vyšší odborná škola obalové techniky a Střední škola, Štětí, příspěvková organizace
Adresa školky Kostelní 134, 411 08 Štětí
46773509
Název operačního programu OP Vzdělávání pro konkurenceschopnost
Registrační číslo CZ.1.07/1.5.00/34.1006
Označení vzdělávacího materiálu
Název tématické oblasti (sady) Operační systémy
Název materiálu Linuxové služby v příkazech
Anotace
Autor Ivan Pomykacz Jazyk český
Očekávaný výstup
Klíčová slova
Druh výukového zdroje Výklad Věková skupina žáků 17+
Typ interakce aktivita Ročník 4.
Speciální vzdělávací potřeby žádné
Zhotoveno, (datum/období) Celková velikost

pdf icon
Linuxové služby v příkazech

Obsah

Služby nebo též démoni se v Debian GNU/Linuxu spouští příkazem systemctl.

    systemctl start služba

Obdobně se i vypínají nebo restartují (stop, restart). Některé služby pak mají možnost "pouze" tzv. reload - znovu načtení změněné konfigurace.

Informace o službě lze vypsat příkazem status, tedy

    systemctl status služba

Ovlivnění toho, zda-li se má služba spouštět automaticky při startu, lze dosáhnout opět příkazem systemctl.

    systemctl enable služba

Klíčovým slovem disable lze pro změnu službu deaktivovat.

SSH

Server

Instalační balíček: ssh (openssh-server)

Název služby: ssh

Konfigurace: /etc/ssh/sshd_config

Pomocné příkazy:

    ssh-keygen
    ssh-copy-id

Direktivy:

    AuthorizedKeysFile
    PermitRootLogin
    PubkeyAuthentication
    AllowGroups
    DenyGroups
    AllowUsers
    DenyUsers
    ChrootDirectory
    AllowTCPForwarding
    X11Forwarding
    ForceCommand

Client

Linux

ssh, scp

Konfigurace: /etc/ssh/ssh_config, ~/.ssh/config

Použití:

    ssh [-p 22] username@hostname

    scp [-P 22] /co/se/ma/kopirovat /kam/se/ma/zkopirovat
    scp [-P 22] /co/se/ma/kopirovat username@hostname:/kam/se/ma/zkopirovat
    scp [-P 22] username@hostname:/co/se/ma/kopirovat /kam/se/ma/zkopirovat
    scp [-P 22] username1@hostname1:/co/se/ma/kopirovat username2@hostname2:/kam/se/ma/zkopirovat

Program scp může kopírovat jak ze serveru, tak na server (nebo mezi servery).

MS Windows

putty

Dostupný z lokální sítě v sekci download.

SFTP

Direktivou Match lze individualizovat nastavení účtům (User) nebo skupinám (Group). Např.

    Match User login
        ChrootDirectory /srv/www
        ForceCommand internal-sftp

Zapisuje se zpravidla na konec konfiguračního souboru.

LAMP

Apache

Instalační balíček: apache2

Název služby: apache2

Konfigurace: /etc/apache2/apache2.conf, /etc/apache2/ports.conf, /etc/apache2/sites-available/*, /etc/apache2/mods-available/*

Direktivy konfiguračního souboru:

    Timeout
    KeepAlive
    User, Group
    AccessfileName
    ErrorLog
    LogLevel

Výchozí DocumentRoot v: /var/www

VirtualHost
<VirtualHost *:80>
    DocumentRoot /srv/mujweb
    ServerName mujweb.local
 
    <Directory /srv/mujweb>
        Order allow,deny
        Allow from all
    </Directory>
 
</VirtualHost>
 
Pomocné skripty:
    a2ensite
    a2dissite
    a2enmod
    a2dismod
Modul userdir

Servíruje obsah adresářů public_html v domovských adresářích uživatelů.

Ve výchozím stavu je v souboru mods-available/php5.conf zakázáno spouštění PHP skriptů v adresářích public_html.

Reverzní proxy

Vyžaduje aktivaci modulů proxy a proxy_http.

V konfiguračním souboru virtuálního hosta použít direktivu ProxyPass. Např.

<VirtualHost *:80>
    ServerName mujcloud.local
    ProxyPass / http://mojeapp.local/
    ProxyPassReverse / http://mojeapp.local/
</VirtualHost>
 

ServerName není nezbytný, jen pokud běží na proxy serveru více hostů nebo chceme používat doménová jména.

ProxyPass nastaví předávání požadavku odpovídající / na server http://mojeapp.local/.

ProxyPassReverse je nezbytný pro modifikaci HTTP (location) odpovědi - zajistí správnou funkčnost aplikace v backendu.

Load balancer

Vyžaduje moduly jako proxy a navíc proxy_balancer, lbmethod_traffic, lbmethod_byrequests.

Nejprve se definuje skupina serverů, nastaví se metoda balancování a poté se pomocí ProxyPass nastaví přesměrování.

<VirtualHost *:80>
    ServerName mujcloud.local
 
    <Proxy balancer://mojeskupina>
        BalancerMember http://server1:8080
        BalancerMember http://server2:8080
        ProxySet lbmethod=bytraffic
    </Proxy>
 
    ProxyPass / balancer://mojeskupina/
    ProxyPassReverse / balancer://mojeskupina/
</VirtualHost>
 

MySQL / MariaDB

Instalační balíček: mariadb-server

Název služby: mariadb

Konfigurace: /etc/mysql/mariadb.conf.d/50-server.cnf

Direktivy konfiguračního souboru:

    user
    datadir
    bind-address
    general_log_file

Adresář s databázemi: /var/lib/mysql

MySQL client

Nativní: mysql, klient napsaný v PHP: Adminer (dostupný z ovirt).

Použití:

    mysql -u username [-p]
    mysql -h host -u username [-p]

Vytvoření nové databáze lorem:

    CREATE DATABASE lorem;

Založení nového uživatele ipsum s právy k databázi lorem, a který se připojuje pouze z místního (localhost) počítače:

    GRANT ALL PRIVILEGES ON lorem.* TO ipsum@'localhost' IDENTIFIED BY 'heslo';

nebo uživatel, který se připojuje ze vzdáleného serveru/počítače s IP adresou 10.20.30.111:

    GRANT ALL PRIVILEGES ON lorem.* TO ipsum@'10.20.30.111' IDENTIFIED BY 'heslo';

nebo uživatel, který se může připojit z libovolného serveru/počítače:

    GRANT ALL PRIVILEGES ON lorem.* TO ipsum@'%' IDENTIFIED BY 'heslo';

Má-li se uživatel připojit současně z localhostu a vzdáleného PC, je třeba mu tento přístup udělit, tedy příkaz GRANT spustit dvakrát.

MySQL cluster

PHP

Instalační balíček: php, libapache2-mod-php7.3 (podpora pro Apache)

Název služby: ---

Konfigurace: /etc/php/7.3/apache2/php.ini

Testovací skript:

<?php
 
phpinfo();
 

Rozšíření PHP:

    php-mysql php-zip php-dom php-mbstring php-gd php-curl php-xml

Samba

Instalační balíček: samba, cifs-utils

Název služby: samba

Konfigurace: /etc/samba/smb.conf

Pomocné příkazy:

    testparm
    smbpasswd [-a] user

Sdílení

[sdileni]
    path = /cesta/k/adresari
    browseable = yes|no
    read only = yes|no
    valid users = user1 user2 ... @group1 @group2 ...
    guest ok = yes|no
Koš

V rámci sdílení lze definovat tzv. koš, tj. adresář, kam se budou přesouvat smazané soubory.

vfs objects = recycle
recycle:repository = název
recycle:keeptree = yes | no
recycle:versions = yes | no

Připojení sdílení v Linuxu

Lze příkazem mount nebo přes fstab.

Typ FS (přepínač -t): cifs

Volby připojení (přepínač -o)

    username=user
    password=pass
    iocharset=utf8
    sec=ntlm
    uid=username
    credentials=/cesta/k/souboru

Cesta ke sdílení používá běžná lomítka (nikoli zpětná), př: //server/sdileni.

Běžné použití: mount.cifs -o username=franta,uid=www-data //server/sdileni /mistni/cesta. Kde franta je uživatel na datovém serveru a www-data je místní uživatel.

Připojení sdílení z Windows

Provádí se standardně, jako připojení kteréhokoli jiného sdílení v sítích MS Windows.

Je třeba hlídat otevřené relace k serverům a dle potřeby je ukončovat.

NET USE

FTP

Instalační balíček: pure-ftpd, pure-ftpd-mysql (s podporou MySQL)

Název služby: pure-ftpd, pure-ftpd-mysql

Konfigurace: /etc/pure-ftpd/, /etc/default/pure-ftpd-common

Povolené znaky v přihlašovacím jméně: Povolené znaky v přihlašovacím jméně: A..Z, a..z, 0..9, -, ., _, space, :, @, a '

Konfigurační volby

Podle každé konfigurační volby je pojmenován soubor v /etc/pure-ftpd/conf/ a text v souboru je hodnotou dané volby.

ChrootEveryone (yes | no)
NoAnonymous (yes | no)
PureDB (/cesta/k/souboru)
UnixAuthentication (yes | no)

Podpora MySQL

Nastavení v konfiguračním souboru: /etc/pure-ftpd/db/mysql.conf

Server potřebuje databázi a tabulku, ve které dohledá potřebné údaje k uživateli. Pokud používáte řádkového klienta, nezapomeňte na příkaz USE databáze.

Tabulka:

CREATE TABLE `users` (
    `User` VARCHAR(16) BINARY NOT NULL,
    `Password` VARCHAR(64) BINARY NOT NULL,
    `Uid` INT(11) NOT NULL DEFAULT '-1',
    `Gid` INT(11) NOT NULL DEFAULT '-1',
    `Dir` VARCHAR(128) BINARY NOT NULL,
    PRIMARY KEY  (`User`)
);

Dotazy

MYSQLGetPW      SELECT Password FROM users WHERE User='\L'
MYSQLGetUID     SELECT Uid FROM users WHERE User='\L'
MYSQLGetGID     SELECT Gid FROM users WHERE User='\L'
MYSQLGetDir     SELECT Dir FROM users WHERE User='\L'

Speciální sekvence \L, \I, \P a \R

  • \L - přihlašovací jméno

  • \I - IP adresa serveru (ke které je klient připojen)

  • \P - číslo portu, ke kterému je klient připojen

  • \R - IP adresa klienta

Založení uživatele

Pokud používáte řádkového klienta, nezapomeňte na příkaz USE databáze.

INSERT INTO `users` VALUES ('uživatel', 'heslo', 'uid', 'gid', '/cesta/k/adresáři');

Smazání uživatele

DELETE FROM `users` WHERE `user`='uživatel';

NFS

Instalační balíček: nfs-kernel-server, nfs-common

Název služby: nfs-kernel-server

Konfigurace: /etc/exports

Pomocné příkazy:

    exportfs [-a]

Exporty

/cesta/k/adresari hostname1(volby), hostname2(volba)
Volby
  • rw - zápis povolen

  • root_squash, no_root_squash - omezení uživatele root

  • sync, async - synchronní/asynchronní režim

  • subtree_check, no_subtree_check - kontrola podstromu

Klient

Klient si připojí exportovaný adresář příkazem mount za předpokladu, že má doinstalovaný balíček s podporou nfs.

mount -t nfs server:/cesta/k/adresari /mnt/lokalni/adresar
        

GlusterFS

Instalační balíček: glusterfs-server, glusterfs-client

Název služby: glusterd
Službu je třeba povolit: systemctl enable glusterd a následně spustit systemctl start glusterd.

Konfigurace: /etc/glusterfs/, /etc/glusterd/

Pomocné příkazy:

    gluster [peer|volume]

U všech serverů a klientů je třeba upravit soubor /etc/hosts tak, aby bylo možné použít jména na místo IP adres.

Peers

gluster peer status
gluster peer probe server
gluster peer detach server

Volumes

gluster volume info
gluster volume create název replica počet transport tcp server1:/adresář server2:/adresář ...
gluster volume start název
gluster volume stop název
gluster volume delete název
        

Klient

Pozor! U virtualizace typu LXC (případ ve škole) je potřeba aktivovat zařízení fuse příkazem:

mknod /dev/fuse c 10 229
        

Klient si připojí volume příkazem mount za předpokladu, že má doinstalovaný balíček klienta.

mount -t glusterfs server1:/název_volume /mnt/cesta/
        

NGINX

Instalační balíček: nginx

Název služby: nginx

Konfigurace: /etc/nginx/sites-available

Pro aktivaci nastavení daného virtuálního hosta je třeba vytvořit symlink do adresáře sites-enabled

ln -s /etc/nginx/sites-available/mujhost /etc/nginx/sites-enabled/

Proxy

server {
    listen 80;
    server_name sluzba.cloud;

    location / {
        proxy_pass http://app:8000/;
    }
}

Proxy balancer

upstream mujcloud {
    server srv1.example.com;
    server srv2.example.com;
    server srv3.example.com;
}

server {
    listen 80;
    server_name sluzba.cloud;

    location / {
        proxy_pass http://mujcloud;
    }
}

Proxy timeout problém

Protože máme celkem pomalé stroje, je třeba natáhnout některé timeout hodnoty. Proto k direktivě proxy_pass doplňte na nový řádek:
proxy_connect_timeout       600;
proxy_send_timeout          600;
proxy_read_timeout          600;
send_timeout                600;