Comprehensive linux security
Linuxda səlahiyyətlərin yoxlanması ardıcıllığı:
Əmri icra edən istifadəçi root-durmu?
İstifadəçinin ehtiyacı olan səlahiyyəti yerindədirmi
asd
Gəlin linuxda səlahiyyətlərə diqqət yetirək:
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?