Outils pour utilisateurs

Outils du site


blog

Notes commandes ss netstat et autres

Voir :

  • nstat
  • hping2

Voir aussi :

CLOSE-WAIT

Commande ss

ss -tn -4 state established not src 127.0.0.1
ss -n -t src :5455
# ss -s
Total: 281 (kernel 3060)
TCP:   10 (estab 4, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0

Transport Total     IP        IPv6
*         3060      -         -
RAW       0         0         0
UDP       2         2         0
TCP       10        7         3
INET      12        9         3
FRAG      0         0         0

Commande netstat

Voir /proc/net/netstat

netstat -nat |sed '2d' | awk '{print $6}' | sort | uniq -c | sort -n
      1 Foreign
      4 SYN_RECV
     12 LISTEN
    131 ESTABLISHED
    191 CLOSE_WAIT
    270 TIME_WAIT

Source: https://www.skyminds.net/serveur-dedie-reduire-les-connexions-time_wait-des-sockets-et-optimiser-tcp/

C'est l'équivalent de

ss -s
2025/03/24 15:06

Notes commande yum dnf rpm

Voir aussi :

  • rpm-ostree
  • PackageKit (pkcon)

Voir autres commandes :

  • package-cleanup

show duplicate

yum search postgresql12-server --show-duplicate  

Test, dry-run --assumeno pour “Assume no”

yum install --assumeno httpd

Lister tous les RPMs

rpm -qa --qf "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n" |sed -e 's/.(none)$//'
rpm -qa

Lister les derniers paquets installés

rpm -qa --last |head

Effacer le journal de transaction

yum-complete-transaction --cleanup-only

Effacer un paquet de la base RPM seulement, mais garder les fichiers

rpm --justdb -e plop

Connaître la version des paquets installés

rpm -q -i plop
yum list plop
yum list | grep plop

Query Available Packages From Selected YUM Repository \ Disable all repositories and then enable just selected repo.

yum --disablerepo="*" --enablerepo="plop" list available
yum --nogpgcheck localinstall https://acme.fr/plop/plop.rpm
# rpm -i --nosignature plop.rpm

Uninstall any existing/partially installed versions.

yum --setopt=tsflags=noscripts -y remove google-chrome-stable
# Ou
rpm -e --noscripts google-chrome-stable

Voir les scripts du RPM

rpm -qp --scripts my_package.rpm > ListOfScripts

Installer un paquet dans une autre arbo

# rpm ... --relocate /opt=/usr/opt --relocate /etc=/usr/etc ...
rpm -ivh --relocate /usr/local/avamar=NEW-BASE-PATH --relocate /var/avamar=/NEW-VAR-PATH AVAMAR-LINUX.RPM
 
rpm -Uvh --prefix /mnt/extern=/some/other/path some_rpm_name-some_rpm_version

update

yum update
#dnf update --nogpgcheck
 
# ou
yum update --allowerasing

autoupdate

env YUMINTERACTIVE=0 yum-autoupdate

rpmconf

Pour savoir les différences entre les nouvelles versions de fichiers de conf des paquets RPM et les anciens fichiers de conf

Comme pour les fichiers :

  • rpmnew
  • rpmsave

Les groupes

Pour connaitre la liste des groupes disponibles :

dnf grouplist

Pour avoir des informations sur un groupe, comme les paquets qui le composent :

dnf groupinfo <"Nom du Groupe">

Pour installer un groupe :

dnf groupinstall <"Nom du Groupe">

Dépendances

Lister les dépendances d'un paquet RPM

rpm -qpR {.rpm-file}
rpm -qR {package-name}

Ignorer les dépendances avec --nodeps

rpm -e --nodeps sshpass

Supprimer et installer un paquet sur la même ligne de commande

# yum shell
> remove libcurl
> install libcurl-minimal
> run
> quit

Ou

yum swap -- install libcurl-minimal -- remove libcurl

Vérifier la signature des paquets

rpm -K *.rpm -v

Spécifier une version

Connaître les différentes versions disponible pour un paquet

yum --showduplicates list php

Export de la liste des paquets

#rpm -qa --qf "%{NAME}-%{VERSION}-%{RELEASE}\n" > installed-rpm.txt
rpm -qa

Utiliser la liste pour réinstaller les paquets

LANG=C yum install $(cat installed-rpm.txt) |grep -v ^Package

Exclure un paquet / ne pas mettre à jour un paquet

Oneshot sur une commande

dnf --exclude=mysql\* --exclude=httpd\* update

En changeant la conf par défaut

/etc/yum.conf

[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exclude=kernel* kmod-kvdo

En forçant une version avec le plugin versionlock

yum versionlock add freetype
yum versionlock list
yum versionlock clear

Upgrade OS - Montée de version

yum-plugin / dnf-plugin

Autres

Options conflits

Try to add --allowerasing to command line to replace conflicting packages or --skip-broken to skip uninstallable packages or --nobest to use not only best candidate packages.

Fastestmirror
echo 'fastestmirror=1' >> /etc/dnf/dnf.conf 
Modules

Les dépôts modulaires sont arrêtés à partir de Fedora Linux 39. Cela signifie que les paquets fedora-repos-modular et fedora-repos-rawhide-modular sont supprimés, et les modules ne sont plus disponibles. Un module consistait en la possibilité de proposer plusieurs versions alternatives d’un même paquet ou ensemble de paquets, souvent entre deux versions d’un langage de programmation type PHP. Les versions de Fedora Linux antérieures restent toujours fournies le temps de leur maintenance officielle, donc un mois après Fedora Linux 40. Il y avait en effet peu de paquets qui exploitaient cette possibilité et plus personne ne maintenait l’outillage nécessaire à leur production. Les ressources du projet Fedora et des empaqueteurs seront moins dispersées par cet effort pour une solution qui n’a manifestement pas trouvé son public, sans doute à cause de l’impossibilité d’avoir plusieurs versions en parallèle d’un même module.

Notes dépendances

---> Package java-1.8.0-openjdk-headless.x86_64 1:1.8.0.201.b09-1.el6_10 will be installed
--> Processing Dependency: pcsc-lite-devel(x86-64) for package: 1:java-1.8.0-openjdk-headless-1.8.0.201.b09-1.el6_10.x86_64
--> Finished Dependency Resolution
Error: Package: 1:java-1.8.0-openjdk-headless-1.8.0.201.b09-1.el6_10.x86_64 (rhel-6-server-rpms)
           Requires: pcsc-lite-devel(x86-64)
**********************************************************************
yum can be configured to try to resolve such errors by temporarily enabling
disabled repos and searching for missing dependencies.
To enable this functionality please set 'notify_only=0' in /etc/yum/pluginconf.d/search-disabled-repos.conf
**********************************************************************

Pb

Notes pb Gestion conflits
# yum downgrade glibc
Modules complémentaires chargés : product-id, search-disabled-repos, subscription-manager

Résolution des dépendances
--> Lancement de la transaction de test
---> Le paquet glibc.x86_64 0:2.17-105.el7 sera une rétrogradation
--> Traitement de la dépendance : glibc-common = 2.17-105.el7 pour le paquet : glibc-2.17-105.el7.x86_64
---> Le paquet glibc.x86_64 0:2.17-106.el7_2.8 sera effacé
--> Résolution des dépendances terminée
Erreur : Paquet : glibc-2.17-105.el7.x86_64 (vmx)
             Requiert : glibc-common = 2.17-105.el7
             Installé  : glibc-common-2.17-106.el7_2.8.x86_64 (@base)
                 glibc-common = 2.17-106.el7_2.8
             Disponible : glibc-common-2.17-105.el7.x86_64 (vmx)
                 glibc-common = 2.17-105.el7
Erreur : Paquet : glibc-common-2.17-106.el7_2.8.x86_64 (@base)
             Requiert : glibc = 2.17-106.el7_2.8
             Suppression  : glibc-2.17-106.el7_2.8.x86_64 (@base)
                 glibc = 2.17-106.el7_2.8
             Rétrogradé par : glibc-2.17-105.el7.x86_64 (vmx)
                 glibc = 2.17-105.el7
 Vous pouvez essayer d'utiliser --skip-broken pour contourner le problème
 Vous pouvez essayer d'exécuter : rpm -Va --nofiles --nodigest
Solution
yum downgrade glibc glibc-common

En avec la commande rpm :

rpm -Uvh --oldpackage glibc*.rpm

Voir également --skip-broken to skip uninstallable packages or --nobest to use not only best candidate packages

Pb yum error in PREUN scriptlet when removing packages

source : https://serverfault.com/questions/613256/yum-error-in-preun-scriptlet-when-removing-packages

It seems like somehow yum cached data and the rpm database got out of sync with each other I guess. Try running the next commands:

su -c 'yum clean all && rpm --rebuilddb'
su -c 'package-cleanup --problems'

Then run:

su -c 'yum erase zarafa*'

Edit #1: Try running the next command:

su -c 'yum --setopt=tsflags=noscripts remove zarafa*'

If that doesn't work, try this:

su -c 'rpm -e --noscripts zarafa*'
2025/03/24 15:06

Notes commande xargs

Strip char / trim ⇒ utiliser xargs ex :

load5=$(echo $UPTIME | awk -F, '{print $5}' | xargs)

md5sum multithread

#find . -not -name "md5sum.txt" -follow -type f -exec md5sum {} \; > md5sum.txt
find . -not -name "md5sum.txt" -follow -type f -print0 |xargs -0 -L1 -P"$(nproc)" md5sum > md5sum.txt
dig A +short acme.local |xargs -P5 -I '{}' bash -c 'ping -c 1 -W 2 {} >/dev/null 2>&1 || echo {}'
cat 20_ok_ping.txt |xargs -L1 -I '{}' -P50 bash -c 'SRV={} ; ssh -p 22 -o PasswordAuthentication=no -o ChallengeResponseAuthentication=no -o PreferredAuthentications=publickey -o StrictHostKeyChecking=no -o ConnectTimeout=3 root@${SRV} true 2>/dev/null && echo +${SRV} || echo -${SRV}' |tee 30_ssh_p22.txt
pidof sleep | xargs kill -9

Renommer tous les fichiers *.txt d'un répertoire

ls -1 ${repertoire}/*.txt | xargs -I {} -t mv {} {}.csv
cat bash-xargs-demo.txt | xargs -I % sh -c 'echo %; mkdir %'
xargs -a bash-xargs-demo.txt -I % sh -c 'echo %; mkdir %'

Prompt before launch

find * | xargs -p rm -rf

use xargs to copy a file to multiple directories at once; in this example we are trying to copy the file.

echo ./Templates/ ./Documents/ | xargs -n 1 cp -v ./Downloads/SIC_Template.xlsx 

Avec délimitateur

$ echo 'my new file' | xargs -d '\n' touch
$ ls -l
total 0
-rw-r--r--. 1 shs shs 0 Oct 15 12:41  file1
-rw-r--r--. 1 shs shs 0 Oct 15 12:41  file2
-rw-r--r--. 1 shs shs 0 Oct 15 12:41  file3
-rw-r--r--. 1 shs shs 0 Oct 15 12:57 'my new file'
$ echo "1,2,3,4,5" | xargs -d, echo 
1 2 3 4 5
$ echo "1,2,3,4,5" | xargs -d, -L 1 echo 
1
2
3
4
5

Copie de fichiers

find /backup/ -type f | xargs -n1 -i cp {} /var/www/backup/ 

Curl - flood

seq 1 200 | xargs -n1 -P10  curl "http://localhost:5000/example"

Curl - test urls

xargs -a urls.txt -L1 -I '{}' -P50 bash -c 'echo $( curl --connect-timeout 2 -k -s -o /dev/null -w "%{http_code};" "{}" ; echo "{}" )' | tee ping_urls.csv

Curl can now fetch several websites in parallel

curl --parallel --parallel-immediate --parallel-max 3 --config websites.txt

websites.txt

url = "website1.com"
url = "website2.com"
url = "website3.com"
xargs avec Ansible

Voir aussi :

xargs -a inventory.lst -L1 -I % -P50 bash -c "ansible --ssh-common-args='-o StrictHostKeyChecking=no' -i %, -e ansible_port=2222 -b -u admin -m command -a 'grep -q 192\.168\.223\.0 /etc/hosts.allow' all" |tee outpout.log

4 GB RAM is recommended per 100 forks… about 100MB per fork… The baseline value for [CPU capacity for forks] is 4 forks per core.

Ref : https://docs.ansible.com/ansible-tower/3.4.3/html/userguide/jobs.html#at-capacity-determination-and-job-impact

2025/03/24 15:06

Notes commande su

Voir aussi :

Usage

runs as a different user with password

su - username <<EOF
enterpasswordhere
enter commands to run as the new user
EOF

Pb

la comande su lancée avec le compte root demande le mot de passe

Voir aussi :

  • suid
  • SELInux

root is prompted for the user1's password

Source : https://bbs.archlinux.org/viewtopic.php?id=217142

/etc/pam.d/su /etc/pam.d/su-l

auth		sufficient	pam_rootok.so

FIXME

2025/03/24 15:06

Audit modification droits systeme de fichier avec auditd

Voir :

systemctl status auditd

https://www.dsfc.net/logiciel-libre/linux/centos-linux-logiciel-libre/configurer-auditd-sur-centos-7/

Par défaut, vous ne pourrez pas arrêter ce service lorsqu’il s’exécute. Il y a donc lieu d’éditer le fichier de lancement du service /lib/systemd/system/auditd.service et de modifier la directive RefuseManualStop en la passant à no :

/lib/systemd/system/auditd.service

RefuseManualStop=no

Une fois le fichier modifié, pour le redémarrer, faites :

systemctl daemon-reload
systemctl restart auditd

Ajout de règles

Sur CentOS 7, les règles doivent être ajoutées au fichier /etc/audit/rules.d/audit.rules.

/etc/audit/rules.d/audit.rules

#Surveillance du fichier /etc/ssh/sshd_config
-w /etc/ssh/sshd_config -p w -k ssh_configuration_change
#Audit de l'exécution des Commandes 32 et 64 bits
-a exit,always -F arch=b64 -S execve -k root_command_executing
-a exit,always -F arch=b32 -S execve -k root_command_executing
#Audit sur l'exécution de la commande passwd
-w /bin/passwd -p x -k passwd_command_execution

Après redémarrage du service, vous pouvez lister les règles actives en tapant :

auditctl -l

Recherche des événements

Pour trouver les lignes du fichier /var/log/audit/audit.log qui se réfèrent à la ligne concernant la modification de la configuration du fichier /etc/ssh/sshd_config, tapez à partir de l’invite de commandes :

ausearch -f /etc/ssh/sshd_config -i

Vous pouvez aussi disposer du nombre d’occurrences pour chacun des audits effectués sur les fichiers par le démon :

aureport -f -i --summary
ausearch --start 01/12/20 -m user_end --raw | aureport  -x --summary

Autres

aureport --start today --event --summary -i
Règle non persistante

Règle non persistante reboot, redémarrage service

auditctl -w /etc/hosts -p warx -k monitor-hosts

Afficher les règles

auditctl -l
ausearch -ts today -k monitor-hosts

Rapport clair

aureport -k

Effacer les règles sauvegardées

systemctl restart auditd 

Règle persistante

/etc/audit/audit.rules
# First rule - delete all
-D

# Increase the buffers to survive stress events.
# Make this bigger for busy systems
#-b 320
-b 8192

## Set failure mode to panic
-f 2

# Feel free to add below this line. See auditctl man page
-w /tmp/plop1 -p wrxa -k monitor-plop1

Voici un exemple de configuration auditd qui cherche à enregistrer des actions pouvant être dignes d’intérêt (source : https://www.ssi.gouv.fr/uploads/2016/01/linux_configuration-fr-v1.2.pdf)

/etc/audit/audit.rules

# Exécution de insmod , rmmod et modprobe
-w /sbin/insmod -p x
-w /sbin/modprobe -p x
-w /sbin/rmmod -p x
# Journaliser les modifications dans /etc/
-w /etc/ -p wa
# Surveillance de montage/démontage
-a exit ,always -S mount -S umount2
# Appels de syscalls x86 suspects
-a exit ,always -S ioperm -S modify_ldt
# Appels de syscalls qui doivent être rares et surveillés de près
-a exit ,always -S get_kernel_syms -S ptrace
-a exit ,always -S prctl
# Rajout du monitoring pour la création ou suppression de fichiers
# Ces règles peuvent avoir des conséquences importantes sur les
# performances du système
-a exit ,always -F arch=b64 -S unlink -S rmdir -S rename
-a exit ,always -F arch=b64 -S creat -S open -S openat -F exit=-EACCESS
-a exit ,always -F arch=b64 -S truncate -S ftruncate -F exit=-EACCESS
# Verrouillage de la configuration de auditd
-e 2
systemctl restart auditd

Pb

Invalid start date
# LANG=C aureport -ts 12-01-2020 10:58:00 -te 12-01-2020 10:59:00 -e -i
Invalid start date (12-01-2020). Month, Day, and Year are required.


# aureport -au |head

Authentication Report
============================================
# date time acct host term exe success event
============================================
1. 22/11/20 09:00:09 ftpng 127.0.0.1 /dev/ftpd17909 /usr/sbin/proftpd no 13931
2. 22/11/20 23:27:41 user1 10.1.5.33 ssh /usr/sbin/sshd yes 27355
3. 23/11/20 09:00:31 ftpng 127.0.0.1 /dev/ftpd10919 /usr/sbin/proftpd no 1425
4. 23/11/20 09:03:48 user1 10.1.5.25 ssh /usr/sbin/sshd yes 1723
5. 23/11/20 09:03:52 user1 10.1.5.24 ssh /usr/sbin/sshd yes 1734

# aureport -ts 01/12/20 10:58:00 -te 01/12/20 10:59:00 -e -i
Failed to restart auditd.service: Operation refused, unit auditd.service may be requested by dependency only.

Voir : https://bugzilla.redhat.com/show_bug.cgi?id=1026648

RedHat 7 & 8

# systemctl restart auditd
Failed to restart auditd.service: Operation refused, unit auditd.service may be requested by dependency only.
Solution
service auditd stop 
systemctl start auditd

Autres

Status

auditctl -s
2025/03/24 15:06
blog.txt · Dernière modification : de 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki