Post

Visualizzazione dei post da settembre, 2021

stty erase - backspace

 Può accedere che  il pulsante "backspace" non funzioni correttamente su un terminale linux. Ad esempio mi collego ad sqlplus e premendo backspace compare ^H come di seguito. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> selece^Ht   ^H^H^H^H^H^H^H^H Si può rispovere usando Shift+Backspace oppure cambiano il comando di "erase" $ stty -a speed 38400 baud; rows 56; columns 128; line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0; -parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts -cdtrdsr -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8 opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr

Creare una partizione (PARTED)

Immagine
Quando si crea una partizione non viene creato in automatico un file system. In Rhel8 viene usato parted come partition utility di default. Alternativamente si può usare fdisk se si una MBR e gdisk se si usa GPT - Guid Partition Table. Vediamo la lista dei block device che esistono sul server. # lsblk Il device primario è sda che è diviso i due partizioni sda1 e sda2 e il device secondatio è sdb. Creiamo una partizionde sul device sdb. -1-   parted /dev/sdb   -2-   print per visaulizzare l'attuale partiotion table. Dice che manca l'informazione sulla partition table. -3-   mklabel msdos | gpt    per   creare la partiotion table Usare "msdos" cioè una partition table compatibile con MBR e quindi prevede la creazione di 3 partizioni primarie e 1 estesa. All'interna della partizione estesa si possono creare partizioni logiche. Nuovamente "print" per visaulizzare la label. -4-   mkpart <part-type> <name> <fs-type> <start> <end>

Logrotate

 Logrotate è avviato tramite cron.daily per assicurare che i log file non crescano troppo. Il file di configurazione è /etc/logrotate.conf # see "man logrotate" for details # rotate log files weekly weekly # keep 4 weeks worth of backlogs rotate 4 # create new (empty) log files after rotating old ones create # use date as a suffix of the rotated file dateext # uncomment this if you want your log files compressed #compress # RPM packages drop log rotation information into this directory include /etc/logrotate.d Lo script dice che i log vengono creati settimanalmente e hanno un valore di 4 settimane. Dopo il backup dei vecchi log, viene creato un nuovo file vuoto. I file di backup hanno come suffisso dataext. I servizi soggetti a logrotate possono essere configurati sotto la direcroty /etc/logrotate.d/

Systemd-journald

Immagine
 systemd-jounrald è un servizio di log installato di default al boot del server ed è parte di "systemd manager". # systemctl status systemd-journald ● systemd-journald.service - Journal Service    Loaded: loaded (/usr/lib/systemd/system/systemd-journald.service; static; vendor preset: disabled)    Active: active (running) since Tue 2021-03-16 11:19:19 CET; 6 months 6 days ago      Docs: man:systemd-journald.service(8)            man:journald.conf(5)  Main PID: 579 (systemd-journal)    Status: "Processing requests..."    CGroup: /system.slice/systemd-journald.service            └─579 /usr/lib/systemd/systemd-journald Inoltre è usato per loggare tutte le richieste dello stato dei serivzi ottenuto con il comando: # systemctl status <unit> E' possibile usare il comando seguente per leggere tutti i "log entries" registrati dal boot del server # journalctl # journalctl USER_ID=oracle # journalctl UNIT=sshd I log sono inotre inviati al serivzio rsyslo

Rsyslog

Immagine
Rsyslog è un servizio sempre attivo che normalmente scrive i messaggi di log sotto /va/log/. Per funzionare deve essere attivo il servizio rsyslogd che è configurato in /etc/rsyslog.conf Un file di configurazione contiene tre oggetti: - facility : cioè il nome del servizio\struttura che deve loggare (esempio kern, cron, authpriv) - severity : la severità dei log, come verbose o emergency - destination : è il nome del file che contiene i log (normalmente sotto /var/log). Il comando logger permette di scrivere manualemente messaggi a syslog . # logger hello world # cat /var/log/messages Per scirvere i messaggi con priorità "notice" eseguire il comando # logger --help # logger -p notice hello2 Il file /etc/rsyslog.conf contiene sotto la riga RULES , cosa deve essere loggato e qual'è il file di log. #### RULES #### # Log anything (except mail) of level info or higher. # Don't log private authentication messages! *.info;mail.none;authpriv.none;cron.none /va

Systemd

  Systemd è il gestore di ogni oggetto dopo l'avvio del kernel. Gli oggetti gestiti si chiamano unit e possono essere divisi in servizi, mounts o timers. L'interfaccia usata per gestire systemd è SYSTEMCTL. Per visualizzare i tipi di unit: # systemctl -t help Available unit types: service socket busname target snapshot device mount automount swap timer path slice scope Lista dei unit file # systemctl list-unit-files UNIT FILE                                                                    STATE proc-sys-fs-binfmt_misc.automount                  static dev-hugepages.mount                                              static dev-mqueue.mount                                                   static proc-sys-fs-binfmt_misc.mount                            static run-vmblock\x2dfuse.mount                                  disabled sys-fs-fuse-connections.mount                               static ................ Lista di tutti i service unit file, se

Rhel subscription Manager

 Per usare i repository di RedHat occorre avere una sottoscrizione. # su - root # subscription-manager register  inserire utenze e password dell'account di Redhat # suscription-manager attach--auto per collegare automaticamente il server alla sottoscrizione precedentemente inserita. # yum repolist  per aggiornare il repository che si aggancia con quello di Redhat 

Repository RPM - YUM

Red Hat Package Manager è sia un package format per installare software che un database di pacchetti installati nel sisitema. Per installare i pacchetti occorre usare un repository che può essere sia locale che esterno. Per quello esterno occorre avere una Rhel subscription. Il repository locale può essere creato dall'ISO di istallazione 1) Creare un immagine ISO che chiamiamo "rhel8.iso" a partitre dall'iso di installazione montata sotto il device /dev/sr0 che punta all'optical disk # su root # dd if=/dev/sr0 of=/rhel8.iso bs=1M dd è un utility che legge da uno standard input e scrive su uno standard output.  2) Creare una direcorty come mount point: # mkdir /repo 3) Modificare il file fstab aggiungendo la seguente linea # vi /etc/fstab /rhel8.iso     /repo     iso9660     defaults     0     0 3) Ricaricare il deamon  # systemctl  daemon-reload 3) Montare l'immagie ISO # mount -a  5) Verificare nella cartella repo siano presenti il contenuto file ISO: # c

TOP e Nice priority

Top è una dashborad che permettte di monitorare le attività in corso del sistema. # top top - 12:21:46 up 178 days, 2 min,  1 user,  load average: 0.04, 0.09, 0.13 Tasks: 289 total,   1 running, 288 sleeping,   0 stopped,   0 zombie %Cpu(s):  1.5 us,  1.0 sy,  0.0 ni, 97.3 id,  0.2 wa,  0.0 hi,  0.0 si,  0.0 st KiB Mem :  8009332 total,   110004 free,  2339876 used,  5559452 buff/cache KiB Swap:  9723340 total,  3564492 free,  6158848 used.   508436 avail Mem   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND 25143 oracle    -2   0 4354576   3384   3200 S   2.0  0.0   3208:26 ora_vktm_cdb19l 27028 oracle    -2   0 4354576   3804   3620 S   2.0  0.0   3213:14 ora_vktm_cdb19l 28250 root      20   0  162244   2484   1572 R   1.0  0.0   0:00.11 top us = user space sy = system space ni = sono i processi la cui priorità cambia usando i Nice Value. Il valore negativo indica alta priorità, invece un valore positivo indica una bassa priorità. Nice ha il range da -20 a 1

PS

Visualizzare i processi in corso: [root@coslab02 ~]# ps PID TTY TIME CMD 19260 pts/0 00:00:00 bash 19882 pts/0 00:00:00 ps [root@coslab02 ~]# ps -L PID LWP TTY TIME CMD 19260 19260 pts/0 00:00:00 bash 19958 19958 pts/0 00:00:00 ps PID = processo TTY = terminal dove gira il processo TIME = tempo di esecuzione del processo CMD = comando che lancia il processo Per visualizzare tutti i processi # ps aux Per visualizzare la la relazione gerarchica tra i processi (padre - figlio) # ps -fax | less PID TTY STAT    TIME      COMMAND 2      ?        S           0:08             [kthreadd] 4      ?        S   <         0:00           \_ [kworker/0:0H] 6      ?        S             24:59          \_ [ksoftirqd/0] 7      ?        S             0:06           \_ [migration/0] 8      ?          S           0:00           \_ [rcu_bh] 9      ?          S           280:03      \_ [rcu_sched] .............. 1096 ?     

ACL

 ACLs sono usati per fornire permessi ad utenti e gruppi che non sono nè proprietari nè appartengono ad un gruppo proprietario di un file o di una direcotry. Può essere applicato solo a file esistenti e quindi non a nuovi file creati a meno di applicare una ACL di default alla directory che conterrà nuovi file. Visualizzare i permessi di una directory: # getfacl  <nome dir> Assegnare ad un gruppo (o utente u) i permessi r e x di default (d) in una directory che non è del stesso suo gruppo: # setfacl -m  d:g:<nome gruppo>:rx   <nome dir> Compare il simbolo '+' se si visualizza la diectory. ls -lrt <nome dir> drwxrwx--- +  2 root <nomegrupo> 6 Jan 15:40 <nome dir> Assegnare ad un gruppo (o utente u) i permessi r e x in una directory che non è del stesso suo gruppo e non deve ereditare gli stessi permessi di default del proprietario della directory ma li decido io. #  setfacl -m  g:<nome gruppo>:rx   <nome dir> Impostare un ACL rico

Utenti e gruppi ( USERADD, USERMOD, USERDEL, GROUPADD, GROUPDEL, GROUPMOD, GPASSWD, SKEL)

Aggiungere un utente # useradd <nome> Per cambiare la password: # passwd <nome> # change Il file di definizione dell'utente di default è il seguente: /etc/default/useradd # useradd defaults file GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes Oppure usare il comando # useradd -D Per cambiare il numero massimo di giorni di validità di una password o la lunghezza minima della password di tutti gli utenti editare il file /etc/login.defs che contiene anche la directory delle email e i parameteri della durata della password. Ad esempio impostare una durata della pwd a 90 giorni e impostare la lunghezza minina a 6 caratteri. MAIL_DIR        /var/spool/mail #MAIL_FILE      .mail # Password aging controls: # PASS_MAX_DAYS   90 PASS_MIN_LEN     6 Per impostare per un singolo utente il reset password dopo 30gg # chage -M 30 <utente> Verifica: # chage -l <utente> Per forzare un utente a cambiate la pwd al p

Virtual Terminal (tty)

Immagine
In linux i terminali sono individuati dalla sigla tty. Si parla anche di virtual terminal. Di default sono 6 e se la GUI è installata è su tty1. Con il comano w si visualizzano i virtual terminal associati alle utenze. L'utente student è su tty2. Se voglio passare al termina dell'utente "anna" e cioè tty3 editare Ctrl+Alt+F3 oppure chvt 3

Sudo

Il comando sudo è usato per eseguire task per conto dell'utente root. Quando anteponi sudo esegui i comandi come root quindi se esegui "sudo passwd" ti impersoni come root e cambi la sua password.  I file di configurazione sono /etc/sudoers /etc/sudoers.d/* Non modificare direttamente questi file ma usare visudo Gli utenti che sono menmbri del gruppo wheel possono eseguire i task da amministratore senza conoscere la password di root. Questa è la parte di codice relativa al file "sudoers". ## Allows people in group wheel to run all commands %wheel  ALL=(ALL)       ALL Aggiungere un utente al gruppo wheel: Entrare come root. # su - root # usermod -aG wheel student # id student Ora è posibile accedere come utente "student" e creare un nuovo utente usando il comando sudo: # sudo useradd pippo [sudo] password for student:  Aggiungere ad un utente  non root le grant per creare un nuovo utente e cambiargli la password. # su - root # visduo  ## Allows members

AWK - SED

awk è una utility usata per estrarre dati e produrre report awk  separa le righe in campi utilizzando il simbolo ":" ed estrae la stringa prima del 4 valore di ":" # awk -F : '/oracle/ { print $4 }' /etc/passwd 54321 Stampa la stringa a destra dell'ultimo ':' # awk -F : '{ print $NF }' /etc/passwd /bin/bash /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /bin/sync /sbin/shutdown /sbin/halt /sbin/nologin /sbin/nologin /sbin/nologin # ps  aux | awk '{ print $NF}' Stampa l'ultima colonna dei processi attivi. sed  è usato per visualizzare testi. Ad esempio visualizzare la 5 riga del file /etc/passwd. sed -n 5p /etc/passwd lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin Esempio: Da  questa riga che è in un file di log 31-JAN-2023 23:58:53 * (CONNECT_DATA=(SID=PROT)(CID=(PROGRAM=JDBC Thin Client)(HOST=__jdbc__)(USER=tomcat))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.121.2.9)(PORT=41294)) * establish * PROT * 0 devo estrarre queste infor

Symbolic e Hard Link (LN) - INODE

Immagine
In Linux ogni file e directory  è identificato dal suo inode che è una struttura dati che contiene informazioni come:  - la dimensione del file, il proprietario, il gruppo e i permessi - tempo di accesso e modifica - il numero di hard link che referenziano l'inode - un puntatore allo spazio del disco che contiene i file veri e propri. # ls -li /etc/hosts 33872583 -rw-r--r-- 1 root root 207 Mar 16 12:00 /etc/hosts Il numero 33872583 è l'inode del file hosts. E' visibile anche dal comando [root@coslab02 ~]# stat /etc/hosts   File: ‘/etc/hosts’   Size: 207             Blocks: 8          IO Block: 4096   regular file Device: fd00h/64768d    Inode: 33872583    Links: 1 Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root) Access: 2021-09-01 02:45:02.424953632 +0200 Modify: 2021-03-16 12:00:39.908297015 +0100 Change: 2021-03-16 12:00:39.911297015 +0100  Birth: - Creiamo un HARD LINK ln  <nome_file_puntato>   <nome_link> [root@coslab02 ~]# ln /etc/