Comprehensive linux security

Linuxda səlahiyyətlərin yoxlanması ardıcıllığı:

  1. Əmri icra edən istifadəçi root-durmu?

  2. İstifadəçinin ehtiyacı olan səlahiyyəti yerindədirmi

  3. asd

Gəlin linuxda səlahiyyətlərə diqqət yetirək:

Səlahiyyət
Fayl üçün
Qovluq üçün

r (read 4)

faylın açılmasını və oxunması səlahiyyətlərini verir

qovluğun içindəki faylların siyahısının göstərilə bilməsini mümkün edir

w (write 2)

faylın içini dəyişdirməkçün istifadə olunur

qovluğun içində yeni faylın yaradılması, adının dəyişdirilməsi və faylların silinməsi səlahiyyətlərini verir.

x (execute 1)

faylın execute olunması səlahiyyətini verir

qovluğun açılması səlahiyyətini verir.

Əgər əgər qovluqda r and w permissionları olsa belə x olmadığı üçün istifadəçi qovluğu aça bilmir. Əgər qovluqda sadəcə 'x' olarsa, qovluğa cd etmək olur, lakin içini ls etmək olmur.

Fərz edək ki, əməliyyat sistemimizdə root istifadəçisi və user1 istifadəçisi mövcuddur.

Bir qovluq, onun içində isə bir fayl yaradaq və bütün səlahiyyətlərini sıfırlayaq.

mkdir qovluq1
echo 'test' > qovluq1/fayl1.txt
sudo chmod 0000 -vR qovluq1
ls -ld qovluq1/
cd qovluq1                # permission denied
ls -l qovluq1             # permission denied
ls -l qovluq1/fayl1.txt   # permission denied
cat qovluq1/fayl1.txt     # permission denied

Deməli, qovluq1 folderinin və onun içindəki fayl1.txt faylının sahibinin user1 istifadəçisi olmasına baxmayaraq, qovluqdan və onun içindəki fayldan rekursiv olaraq bütün icazələr silindiyinə görə, user1 istifadəçisi:

  • qovluq1-in içinə cd ilə girə bilmir

  • qovluq1-in içindəki faylları ls ilə görə bilmir

  • qovluq1-in içində fayl1.txt olduğunu bilə bilə, onu ls ilə görə bilmir və cat ilə içini oxuya bilmir.

İstifadəçi üçün qovluq1 folderinin içindəki fayl1.txt faylına read səlahiyyəti verilsə belə, qovluğun özündə istifadəçiyə aid x səlahiyyəti olmadığına görə, o həmin faylı nə ls ilə siyahılaya bilər nə də içini cat vasitəsilə oxuya bilər.

Yalnız istifadəçi üçün qovluğa x səlahiyyəti verildikdən sonra:

  • istifadəçi hələ də qovluğun içindəki bütün faylları ls edə bilməz

  • istifadəçi qovluğa cd vasitəsilə keçid edə bilər

  • istifadəçi qovluğun içindəki faylı ls vasitəsilə siyahılaya bilir

  • istifadəçi qovluğun içindəki r səlahiyyətli faylın içini cat vasitəsilə oxuya bilir

  • qovluğun içindəki hər hansı faylın r səlahiyyəti öz mahiyyətini qazanır

İstifadəçinin qovluq1 içindəki bütün faylları ls vasitəsilə siyahılaya bilməsi üçün qovluq1 folderinə r (read) səlahiyyəti verilməlidir:

Hazırda qovluq1 folderində w (write) icazəsi olmadığına görə, qovluğun sahibi (user1 istifadəçisi) qovluq daxilində:

  • yeni fayl yarada bilmir

  • faylları silə bilmir

  • mv əmri ilə faylların adını dəyişə bilmir

Yalnız qovluq1 folderinə owner üçün w (write) səlahiyyəti verildikdən sonra folderin sahibi olan user1 istifadəçisi:

  • yeni fayl yarada bildi

  • faylların içində dəyişiklik edə bildi

  • mv əmri ilə faylın adını dəyişə bildi

  • faylları silə bildi

Təsəvvür edin ki, içində pul olan bir seyfiniz var, həmin seyfin açarı sizdə olmasa belə, otağın açarı sizdə olduğu üçün, siz seyfi otaqdan çıxara bilirsiniz. Linuxda da eyni formada faylın özündə istifadəçi üçün w (write) səlahiyyəti olmasa belə, qovluğun istifadəçi səlahiyyətlərində w (write) olduğu üçün, (analogiya üzrə otağın qapısının açarı istifadəçidə olduğu üçün) istifadəçi həmin faylı silə bilər. Çünki linuxda fayla verilmiş write səlahiyyəti faylın içi üçündür, onun silinib silinməməsinə təsir etmir.

İstisna 1:

Yalnız root istifadəçisi qovluqda istifadəçi üçün rwx səlahiyyətlərindən heç biri olmadığı halda belə bütün əməliyyatları edə bilər. Ancaq root-un özü üçün belə bir istisna var, əgər istifadəçi üçün faylda x (execute) səlahiyyəti yoxdursa, root istifadəçisi belə həmin skripti işə sala bilməz. Əməliyyat sisteminin bu cür davranmasının əsas səbəbi təhlükəsizliyi təmin etməkdir.

İstisna 2:

Fərz edək ki, istifadəçi bir qovluq və içində fayl yaratdıqdan sonra qovluqda təkcə özünə tam icazə verir. Lakin, həmin faylın hard linki hamıya açıq olan (bizim misalda /tmp) qovluğun içindədir. Bu halda başqa istifadəçi gizli qovluğa və onun içindəki fayla icazəsi olmasa da, eyni faylın hard linkinə icazəsi olacaq.

Bu kimi faylları tapmaq üçün ls -l əmrini icra edərkən link sayına diqqət etmək lazımdır, əgər say 1-dən böyükdürsə (məs. bizim misalda 2-dir) deməli bu faylın hard linki mövcuddur. Digər faylları tapmaq üçün find komandasında həmin faylın inode nömrəsi üzrə axtarış etmək mümkündür:

Last updated

Was this helpful?