Daim böyüyən log nə vaxtsa onu yenidən yaradan anda böyüməkdən dayanır və xəta permission denied deyir. Cazibədar nəticə log faylının özünün daha çox icazəyə ehtiyacı olduğudur, halbuki fayl artıq həmin hesab tərəfindən yazıla bilər. Mövcud ada əlavə etmək və yeni ad yaratmaq fərqli yoxlamalardır və yalnız ikincisi qovluğa müraciət edir.

Əlavə etmək və yaratmaq fərqli yoxlamalardır

Mövcud faylı əlavə üçün açmaq həmin faylda yazma icazəsi və onun yolundakı hər qovluqda axtarış icazəsi tələb edir. Fayl yaratmaq onu saxlayan qovluqda yazma və axtarış tələb edir, çünki əməliyyat ona ad əlavə edir. Faylı adını dəyişməklə əvəz etmək hər iki qovluğa və onların sticky bit qaydalarına da toxunur.

OperationWhat must permit itTypical failure message
Append to an existing logFile write access, path traversalPermission denied on the file
Create a missing logDirectory write and search accessPermission denied on the path
Rename a replacement into placeBoth directories, plus sticky restrictionsPermission denied or operation not permitted

Artıq açıq deskriptor dördüncü halı əlavə edir. Proses imtiyazlarından imtina etməzdən əvvəl açdığı yazıla bilən tutacağı saxlaya bilər, sonra isə öz sonrakı kimliyi ilə həmin yolu yenidən aça bilməz. Uğurlu əlavələr və uğursuz yaratma eyni anda, eyni proses üçün hər ikisi doğru ola bilər.

Defolt ACL-lər miras qalır, icazə vermir

Defolt prefiksi ilə başlayan giriş yeni obyektlərin qovluqdan nə miras aldığını təsvir edir. O, qovluğun özünə heç nə vermir və artıq mövcud olan faylın ACL-ni düzəltmir.

namei -l /var/log/openvpn/server.log
getfacl -p /var/log/openvpn
getfacl -p /var/log/openvpn/server.log

Giriş qeydlərini defoltlardan ayrı oxuyun və maskanı oxuyun. Tam hüquqları sadalayan adlı qeyd yenə də maska ilə məhdudlaşa bilər; buna görə effektiv şərh birinci sətirdəki hərflərdən daha vacibdir.

Konfiqurasiyadakı yolun əvəzinə həll olunmuş yoldan istifadə edin. Simvolik keçid, montaj nöqtəsi və ya döndərilmiş qovluq real faylı verdiyiniz icazənin heç vaxt çatmadığı yerə qoya bilər. Əvvəlcə ad aləti ilə yolu gəzin, sonra hər səviyyəni sözügedən hesabla müqayisə edin. Yuxarı səviyyəli qovluğu təxmin etmək düzəlişin bir səviyyə yuxarı düşməsinin yoludur.

Həmin anda kimin yazdığını müəyyən edin

Hər nəyisə dəyişməzdən əvvəl xidmət vahidini, onun drop-in-lərini və demonun öz hesab ayarlarını yoxlayın. Əlavə edən proses və yenidən yaradan proses fərqli ola bilər: fırlatma köməkçisi, status yazan və veb oxuyan nadir hallarda eyni kimliyi paylaşır.

Root qabığından sınaq işə salınması məhdudlaşdırılmış xidməti təkrarlamır, və xidmət uğursuzluğa davam edərkən o uğur qazanacaq. Uğursuz əməliyyatı eyni vahid, eyni hesab və eyni sandbox ayarları altında təkrarlayın. Bacarmırsınızsa, vahidi müvəqqəti qabıqla başladın və bildirdiyi kimliyi yoxlayın. Başqa hər şey terminalınızı ölçür, xidməti yox.

Əgər yaratma həqiqətən tələb olunursa, yazana ayrılmış log qovluğuna giriş verin və istehlakçılar üçün oxuma girişini ayrı saxlayın. Bir log çağırışını təmin etmək üçün ortaq hesabı və ya bütün tətbiq ağacını yazıla bilən etmək kiçik problemi böyük problemlə dəyişməkdir.

Nəsə yenidən qaytarmadan fırladın

Faylı kim yenidən yaradırsa, növbəti dövr üçün onun sahibini və rejimini o da müəyyən edir, ona görə düzəlişi fırlatma konfiqurasiyası ilə əlaqələndirin. Fərqli hesab altında və ya yeni ACL ilə yaradılan əvəz uğurlu düzəlişdən sonra nasazlığı qaytarır.

Rejimi və qrupu yaradılma anında təyin edin, sonra yox, və növbəti əlavəni deyil, növbəti fırlatmanı yoxlayın. Əlavə yalnız artıq keçmiş sınağı təkrarlayır. Fırlatma aləti yaradılma rejimi ayarı təklif edirsə, yaradılmadan sonrakı chmod əvəzinə ondan istifadə edin. Yaradılma ilə chmod arasındakı boşluq növbəti yazının məhz uğursuz ola biləcəyi andır.

Kəsmə yenə də alınmırsa, icazə əlavə etməyi dayandırın

Yazıla bilən faylı kəsməkdə uğursuzluq qovluq icazələri ilə izah olunmur və onlardan daha çox əlavə etmək kömək etməyəcək. Əvəzində atributlara və məhdudiyyətə baxın: yalnız-əlavə atributu yazmağa yalnız əlavə rejimində icazə verir, yalnız-oxuma montajı və ya xidmət sandboxu ACL-nin icazə verdiyi əməliyyatı rədd edə bilər.

Vahidin fayl sistemi məhdudiyyətlərini və yolun montaj seçimlərini yoxlayın, sonra məhz uğursuz olan əməliyyatı təkrarlayın. Heç vaxt müraciət olunmayan icazəni genişlətmək yalnız hansı məhdudiyyətin həqiqi olduğunu gizlədir. Birdəfəlik vahiddə hər dəfə bir məhdudiyyəti çıxarın və daimi bir şeyi dəyişməzdən əvvəl onu geri qaytarın.

Əlaqəli məqalələr