23 Ekim 2022 Pazar

Red Hat tabanlı sistemlerde program dosyalarının kontrolü ve sistem güncelleme

Red Hat tabanlı sistemlerde yum-utils paketinin kurulu olması faydalıdır.

 

Her hangi bir nedenle bir dosyanın sahipliği yalnışlıkla değiştiğinde, uygulama veya sistem yapması gereken işlem ve davranışları yapamayabilir.

Bu durumda uygulamanın sahipliğini ve izinlerini düzenlememiz gerekir

Aşağıda görüldüğü gibi vsftpd uygulamasının sahipliğini ve izinlerini değiştiriyoruz. Artık vsftpd den normal çalışmasını bekleyemeyiz

vsftp paketini kontrol ettiğimizde kullanıcısının ve yetkilerinin değiştiğini görüyoruz.

 

[root@rhel9n2 ~]#  
[root@rhel9n2 ~]# rpm -V vsftpd

.M...U...    /usr/sbin/vsftpd

 

Bir paketin bütünlüğünü kontrol için rpm -V paket-ismi ile kontrol yaparız.

[root@rhel9n2 ~]# ls -la /sbin/vsftpd         
-rwxrwxrwx. 1 remzi root 181344 Nov 16  2021 /sbin/vsftpd

[root@rhel9n2 ~]#  
[root@rhel9n2 ~]#  

Sahiplik ve izinlerini olması gereken ayarlayalım.

 
[root@rhel9n2 ~]# rpm --setugids vsftpd

[root@rhel9n2 ~]# ls -la /sbin/vsftpd   
-rwxrwxrwx. 1 root root 181344 Nov 16  2021 /sbin/vsftpd 

 
[root@rhel9n2 ~]# rpm --setperms vsftpd

[root@rhel9n2 ~]# ls -la /sbin/vsftpd   
-rwxr-xr-x. 1 root root 181344 Nov 16  2021 /sbin/vsftpd

[root@rhel9n2 ~]# rpm -V vsftpd         
[root@rhel9n2 ~]#  

Şayet dosya içeriği bozulduysa paketi yeniden yüklemek gerekebilir.

# yum reinstall paket-ismi
 

Bir paket kurulurken hangi işlemler yapıldığını --scripts sorgulaması ile öğrenebiliriz.

# rpm -q --scripts paket-ismi

# rpm -q --scripts vsftpd


# rpm -V vsftpd


       S file Size differs
       M Mode differs (includes permissions and file type)
       5 MD5 sum differs
 
      D Device major/minor number mismatch
       L readLink(2) path mismatch
       U User ownership differs
       G Group ownership differs
       T mTime differs


Bir paketin eski sürümünü kullanmamız gerektiği durumlarda downgrade yapabiliriz.


# yum downgrade paket-adi

# rpm -Uvh --oldpackage paket-adi

# rpm -Uvh --force PACKAGE

rpm veri tabanı bozulduğunda --rebuilddb ile yeniden veri tabanı oluşturabilirz.
 

# rpm -qa

cd /var/lib/rpm
/usr/lib/rpm/rpmdb_dump package.bad
/usr/lib/rpm/rpmdb_ver

sudo yum install -y yum-plugin-changelog

rpm -v --rebuilddb
rpm -qa



Bir rpm paketini sisteme yüklemeden, bilgisayarımıza indirmek;

# yum install --downloadonly --downloaddir=<dosyanin indirilecegi dizin> <patket adi>

veya

# yumdownloader <paket adı>


Sistemin güncellik durumunu kontrol etmek için ihtiyaca göre aşağıdaki komutlardan biri kullanılabilir

# yum updateinfo

# yum updateinfo list

# yum list-security --security

# yum -y update --security

# yum update-minimal --security -y
yum makecache all"

yum updateinfo list --sec-severity=Critical
yum updateinfo <advisory ID>

yum updateinfo list --cve <CVE ID>
yum updateinfo list cves:

repoquery -a {ruby,ruby[0-9][0-9][0-9]} --qf "%-32{repoid} %{name}"

yum provides "*/uuencode"

repoquery --list jq


yum changelog kernel
yum  history 
yum history redo force-reinstall transaction-id
yum history undo transaction-id
yum history redo transaction-id

Red Hat tabanlı sistemlerde program dosyalarının kontrolü ve sistem güncelleme

Red Hat tabanlı sistemlerde yum-utils paketinin kurulu olması faydalıdır.

 

Her hangi bir nedenle bir dosyanın sahipliği yalnışlıkla değiştiğinde, uygulama veya sistem yapması gereken işlem ve davranışları yapamayabilir.

Bu durumda uygulamanın sahipliğini ve izinlerini düzenlememiz gerekir

Aşağıda görüldüğü gibi vsftpd uygulamasının sahipliğini ve izinlerini değiştiriyoruz. Artık vsftpd den normal çalışmasını bekleyemeyiz

vsftp paketini kontrol ettiğimizde kullanıcısının ve yetkilerinin değiştiğini görüyoruz.

 

[root@rhel9n2 ~]#  
[root@rhel9n2 ~]# rpm -V vsftpd
.M...U...    /usr/sbin/vsftpd
 

Bir paketin bütünlüğünü kontrol için rpm -V paket-ismi ile kontrol yaparız.

[root@rhel9n2 ~]# ls -la /sbin/vsftpd         
-rwxrwxrwx. 1 remzi root 181344 Nov 16  2021 /sbin/vsftpd
[root@rhel9n2 ~]#  
[root@rhel9n2 ~]#  

Sahiplik ve izinlerini olması gereken ayarlayalım.

 
[root@rhel9n2 ~]# rpm --setugids vsftpd
[root@rhel9n2 ~]# ls -la /sbin/vsftpd   
-rwxrwxrwx. 1 root root 181344 Nov 16  2021 /sbin/vsftpd 

 
[root@rhel9n2 ~]# rpm --setperms vsftpd
[root@rhel9n2 ~]# ls -la /sbin/vsftpd   
-rwxr-xr-x. 1 root root 181344 Nov 16  2021 /sbin/vsftpd
[root@rhel9n2 ~]# rpm -V vsftpd         
[root@rhel9n2 ~]#  

Şayet dosya içeriği bozulduysa paketi yeniden yüklemek gerekebilir.

# yum reinstall paket-ismi
 

Bir paket kurulurken hangi işlemler yapıldığını --scripts sorgulaması ile öğrenebiliriz.

# rpm -q --scripts paket-ismi

# rpm -q --scripts vsftpd


# rpm -V vsftpd


       S file Size differs
       M Mode differs (includes permissions and file type)
       5 MD5 sum differs
 
      D Device major/minor number mismatch
       L readLink(2) path mismatch
       U User ownership differs
       G Group ownership differs
       T mTime differs


Bir paketin eski sürümünü kullanmamız gerektiği durumlarda downgrade yapabiliriz.


# yum downgrade paket-adi

# rpm -Uvh --oldpackage paket-adi

# rpm -Uvh --force PACKAGE

rpm veri tabanı bozulduğunda --rebuilddb ile yeniden veri tabanı oluşturabilirz.
 

# rpm -qa

cd /var/lib/rpm
/usr/lib/rpm/rpmdb_dump package.bad
/usr/lib/rpm/rpmdb_ver

sudo yum install -y yum-plugin-changelog

rpm -v --rebuilddb
rpm -qa



Bir rpm paketini sisteme yüklemeden, bilgisayarımıza indirmek;

# yum install --downloadonly --downloaddir=<dosyanin indirilecegi dizin> <patket adi>

veya

# yumdownloader <paket adı>


Sistemin güncellik durumunu kontrol etmek için ihtiyaca göre aşağıdaki komutlardan biri kullanılabilir

# yum updateinfo

# yum updateinfo list

# yum list-security --security

# yum -y update --security

# yum update-minimal --security -y
yum makecache all"

yum updateinfo list --sec-severity=Critical
yum updateinfo <advisory ID>

yum updateinfo list --cve <CVE ID>
yum updateinfo list cves:

repoquery -a {ruby,ruby[0-9][0-9][0-9]} --qf "%-32{repoid} %{name}"

yum provides "*/uuencode"

repoquery --list jq


yum changelog kernel
yum  history 
yum history redo force-reinstall transaction-id
yum history undo transaction-id
yum history redo transaction-id

Linux tabanlı sistemlerde uygulamaların hafıza kullanımı

 Günümüzün en büyük sorunlarından iki tanesi cpu kullanımı ve hafıza(ram kullanımı).

Böyle sorunlar ile karşılaştığımızda uygulamanın gerçekte ne kadar hafıza kullanığı veya kullanabileceğini bilmemiz gerekiyor. Genelde uygulamalar başlarken sistemden bana şu kadar  ram ver diye istekde bulunur, uygulama çalışırkende hafiza isteğinde bulunabilir. Bunu görmek için ps komutunda vzs ye bakmamız gerekir. Uygulama çalıştığı sürece aktif olarak kullandığı hafıza içinde rss değerine bakmamız gerekiyor.


Şimdi aşağıyı inceleyelim;

remzi@fedora:~$ ps ax --format ppid,pid,%mem,vsz,rss,%cpu,cmd --sort -%mem | head -5

vsz         VSZ       virtual memory size of the process in KiB (1024-byte units).  Device mappings are currently excluded; this is subject to change.  (alias vsize)

rss         RSS       resident set size, the non-swapped physical memory that a task has used (in kilobytes).  (alias rssize, rsz).

Yukarıda gördüğümüz gibi teams yolun başında  virtual olarak  9704496 KiB ram istemiş, fakat aktif olarak komutu çalıştırdığımız anda kullandığı  hafıza ise 731832KiB.

Anlamlı olması için KiB ye MiB çevirecek olursak, 

istekte bulunulan hafıza  9704496/10^3 = 9704.49MB 
aktif olarak kullanılan hafıza 731832/10^3 = 731MB

Buradan ne anlamalıyız diyecek olursak, program 9704 MB kadar ram kullanabileceğini belirtmiş, fakat aktif olarak kullandığı alan 731MB.

Şayet sistemimizde 9704MB kullanılabilir hafıza yoksa, bir an gelir tüm sistemimiz çuvallayabilir.

remzi@fedora:~$ free -m
               total                 used         free      shared    buff/cache    available
Mem:           64054       11473       34373        2357       18207          49529
Swap:          16383           0            16383
remzi@fedora:~$ 

Sistemimizde bu kadar kullanılabilir alan yoksa ne olur? vm.overcommit_memory ayarına bağlı olarak uygulama çalışır veya yeterli hafıza yok hatası vererek çuvallar.

 

Nedir bu vm.overcommit_memory?

Gerçekte olmayan hafıza kapasitemiz varmış gibi gösterip, uygulamaya tamam senin için bu kadar alan ayırdığımız belirtiriz, uygulama çalışmaya başlar.  Fakat günün sonunda istediği kadar alanı kullanmayı denediği zaman hem uygulama çuvallar, hemde sistem çuvallayabilir.  Biraz daha detaya inelim;

https://www.kernel.org/doc/Documentation/vm/overcommit-accounting

Canlı ve önemli işler için çalışan sunucularda bu değer daima iki veya sıfır olmalı.

 vm.overcommit_memory=0

Şeklinde sıfır yaparsak normal kullanıcılarımız, kullanılabilir alandan daha fazla istek yaptığında uygulama çalışmadan, yeterli hafıza yok mesajını vererek çalışmaya başlamaz.  Fakat istisnai durumlar içir root kullanıcısı kullanılabilir hafızadan daha fazla bir alan isteğinde bulunabilir. swap kullanımıda en aza indirilir.

 vm.overcommit_memory=1

Kullanılabilir alandan daha fazla alanı herkes isteyebilir. Lab ortamları hariç kullanmayın derim.

 vm.overcommit_memory=2

 Kişisel bilgisayarlarımızda kullanabileceğimiz güzel bir özellik.

Kullanılabilir Ram + Kullanılabilir Swap alanı kadar ram tahsisi yapılabilir.

Burada ikinci bir parametre  olarak swapin ne kadarının ram olarak kullanılabilirliğinin ayarlanması. Zorunlu değil fakat ayarlamak faydalı olur.

Bunuda ayarlamak  vm.overcommit_ratio ile yapabiliriz.

Daha fazla detay için kernel dökümanlarına ve arama motorlarına bakmak faydalı olur.


Linux tabanlı sistemlerde uygulamaların hafıza kullanımı

 Günümüzün en büyük sorunlarından iki tanesi cpu kullanımı ve hafıza(ram kullanımı).

Böyle sorunlar ile karşılaştığımızda uygulamanın gerçekte ne kadar hafıza kullanığı veya kullanabileceğini bilmemiz gerekiyor. Genelde uygulamalar başlarken sistemden bana şu kadar  ram ver diye istekde bulunur, uygulama çalışırkende hafiza isteğinde bulunabilir. Bunu görmek için ps komutunda vzs ye bakmamız gerekir. Uygulama çalıştığı sürece aktif olarak kullandığı hafıza içinde rss değerine bakmamız gerekiyor.


Şimdi aşağıyı inceleyelim;

remzi@fedora:~$ ps ax --format ppid,pid,%mem,vsz,rss,%cpu,cmd --sort -%mem | head -5

vsz         VSZ       virtual memory size of the process in KiB (1024-byte units).  Device mappings are currently excluded; this is subject to change.  (alias vsize)

rss         RSS       resident set size, the non-swapped physical memory that a task has used (in kilobytes).  (alias rssize, rsz).

Yukarıda gördüğümüz gibi teams yolun başında  virtual olarak  9704496 KiB ram istemiş, fakat aktif olarak komutu çalıştırdığımız anda kullandığı  hafıza ise 731832KiB.

Anlamlı olması için KiB ye MiB çevirecek olursak, 

istekte bulunulan hafıza  9704496/10^3 = 9704.49MB 
aktif olarak kullanılan hafıza 731832/10^3 = 731MB

Buradan ne anlamalıyız diyecek olursak, program 9704 MB kadar ram kullanabileceğini belirtmiş, fakat aktif olarak kullandığı alan 731MB.

Şayet sistemimizde 9704MB kullanılabilir hafıza yoksa, bir an gelir tüm sistemimiz çuvallayabilir.

remzi@fedora:~$ free -m
               total                 used         free      shared    buff/cache    available
Mem:           64054       11473       34373        2357       18207          49529
Swap:          16383           0            16383
remzi@fedora:~$ 

Sistemimizde bu kadar kullanılabilir alan yoksa ne olur? vm.overcommit_memory ayarına bağlı olarak uygulama çalışır veya yeterli hafıza yok hatası vererek çuvallar.

 

Nedir bu vm.overcommit_memory?

Gerçekte olmayan hafıza kapasitemiz varmış gibi gösterip, uygulamaya tamam senin için bu kadar alan ayırdığımız belirtiriz, uygulama çalışmaya başlar.  Fakat günün sonunda istediği kadar alanı kullanmayı denediği zaman hem uygulama çuvallar, hemde sistem çuvallayabilir.  Biraz daha detaya inelim;

https://www.kernel.org/doc/Documentation/vm/overcommit-accounting

Canlı ve önemli işler için çalışan sunucularda bu değer daima iki veya sıfır olmalı.

 vm.overcommit_memory=0

Şeklinde sıfır yaparsak normal kullanıcılarımız, kullanılabilir alandan daha fazla istek yaptığında uygulama çalışmadan, yeterli hafıza yok mesajını vererek çalışmaya başlamaz.  Fakat istisnai durumlar içir root kullanıcısı kullanılabilir hafızadan daha fazla bir alan isteğinde bulunabilir. swap kullanımıda en aza indirilir.

 vm.overcommit_memory=1

Kullanılabilir alandan daha fazla alanı herkes isteyebilir. Lab ortamları hariç kullanmayın derim.

 vm.overcommit_memory=2

 Kişisel bilgisayarlarımızda kullanabileceğimiz güzel bir özellik.

Kullanılabilir Ram + Kullanılabilir Swap alanı kadar ram tahsisi yapılabilir.

Burada ikinci bir parametre  olarak swapin ne kadarının ram olarak kullanılabilirliğinin ayarlanması. Zorunlu değil fakat ayarlamak faydalı olur.

Bunuda ayarlamak  vm.overcommit_ratio ile yapabiliriz.

Daha fazla detay için kernel dökümanlarına ve arama motorlarına bakmak faydalı olur.


ansible ile yerel quay sunucusu üzerinden execution environment kullanımı

 Yerel quay veya registry sunucularımızdaki ee leri ansible ile kullanabiliyoruz. Bunun için kendi yaptığımız ee leri veya hazır ee leri yük...