Байнга өсөж буй лог нь ямар нэг зүйл түүнийг дахин үүсгэх тэр мөчид өсөхөө болих ба алдаа нь зөвшөөрөл үгүйсгэгдсэн гэж хэлнэ. Лог файл өөрөө илүү их зөвшөөрөл шаарддаг гэсэн дүгнэлт нь уруу татагч боловч файл тухайн бүртгэлд аль хэдийн бичигдэх боломжтой байж магадгүй. Одоо байгаа нэрэнд нэмэх ба шинэ нэр үүсгэх нь хоёр өөр шалгалт бөгөөд зөвхөн хоёр дахь нь хавтас руу ханддаг.

Нэмэх ба үүсгэх нь өөр шалгалт

Одоо байгаа файлыг нэмэхээр нээхэд тухайн файлд бичих эрх ба түүний зам дахь хавтас бүрд хайх эрх шаардлагатай. Файл үүсгэхэд түүнийг агуулж буй хавтаст бичих ба хайх шаардлагатай, учир нь үйлдэл түүнд нэр нэмдэг. Файлыг нэр солих замаар орлуулах нь хоёр хавтас болон тэдгээрийн sticky-bit дүрэмд ч хүрнэ.

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

Аль хэдийн нээлттэй дескриптор дөрөв дэх тохиолдлыг нэмнэ. Процесс нь эрх мэдлээ орхихоос өмнө нээсэн бичих бариулыг барьсан хэвээр, дараагийн ижил төстэй байдлаар ижил замыг дахин нээж чадахгүй байж болно. Амжилттай нэмэлтүүд ба бүтэлгүй үүсгэлт нь нэг процессын хувьд, нэг мөчид хоёулаа үнэн байж болно.

Анхдагч ACL-ууд өвлөгддөг, тэд олгодоггүй

Анхдагч угтвараар эхэлсэн бичлэг нь шинэ объектууд хавтаснаас юу өвлөж байгааг тайлбарлана. Энэ нь хавтаст өөрт нь юу ч олгохгүй бөгөөд аль хэдийн оршиж буй файлын ACL-ийг засдаггүй.

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

Хандалтын бичлэгүүдийг анхдагчаас тусдаа уншиж, маскыг уншина уу. Бүрэн эрхийг жагсаасан нэртэй бичлэг ч маскаар хязгаарлагдаж болох тул үр дүнтэй тайлбар нь эхний мөрийн үсгээс илүү чухал.

Тохиргоон дахь замын оронд шийдэгдсэн замыг ашиглана уу. Симбол холбоос, холбох цэг эсвэл эргүүлсэн хавтас нь бодит файлыг таны олгосон зөвшөөрөл хэзээ ч хүрдэггүй газарт байрлуулж болно. Эхлээд нэрийн хэрэгслээр замыг алхаж, дараа нь түвшин бүрийг тухайн бүртгэлтэй харьцуулна уу. Дээд түвшний хавтасыг таамаглах нь засвар нэг түвшин хэт өндөрт буух арга юм.

Тэр мөчид хэн бичиж байгааг тодорхойл

Ямар нэг зүйлийг өөрчлөхийн өмнө үйлчилгээний нэгж, түүний drop-in, демоны өөрийн бүртгэлийн тохиргоог шалгана уу. Нэмэх процесс ба дахин үүсгэх процесс өөр байж болно: эргүүлэх туслах, төлөв бичигч, вэб уншигч нь ижил төстэй байдлыг ховор хуваалцдаг.

root бүрхүүлээс ажиллуулсан тест нь хязгаарлагдсан үйлчилгээг давтахгүй, мөн үйлчилгээ бүтэлгүй хэвээр байхад тэр амжилттай болно. Бүтэлгүй үйлдлийг ижил нэгжийн дор, ижил бүртгэл, ижил sandbox тохиргоотойгоор давтана уу. Хэрэв чадахгүй бол нэгжийг түр бүрхүүлээр эхлүүлж, түүний мэдээлж буй ижил төстэй байдлыг шалгана уу. Бусад бүх зүйл үйлчилгээг биш, таны терминалыг хэмждэг.

Хэрэв үүсгэх үнэхээр шаардлагатай бол бичигчид зориулалтын лог хавтаст хандах эрх өгч, хэрэглэгчдийн унших хандалтыг тусдаа байлгана уу. Нэг логийн дуудлагыг хангахын тулд хуваалцсан бүртгэл эсвэл бүхэл програмын модыг бичигдэх болгох нь жижиг асуудлыг томоор солилцдог.

Дахин оруулахгүйгээр эргүүл

Файлыг дахин үүсгэгч нь дараагийн циклд түүний эзэн ба горимыг шийддэг тул засварыг эргүүлэх тохиргоотой зохицуулна уу. Өөр бүртгэлийн дор эсвэл шинэ ACL-тэй үүсгэсэн орлуулагч нь амжилттай засварын дараа алдааг буцааж авчирдаг.

Горим ба бүлгийг үүсгэх үед тавь, дараа нь биш, мөн дараагийн нэмэлтийг биш дараагийн эргэлтийг шалгана уу. Нэмэлт нь аль хэдийн тэнцсэн тестийг л давтана. Хэрэв эргүүлэх хэрэгсэл үүсгэх горимын тохиргоо санал болговол үүсгэсний дараах chmod-ын оронд түүнийг ашиглана уу. Үүсгэлт ба chmod-ын хоорондох завсар нь дараагийн бичилт бүтэлгүй болох яг тэр мөч юм.

Таслах нь ямар ч байсан бүтэлгүй болвол зөвшөөрөл нэмэхээ болино уу

Таны бичиж чадах файлыг таслахад гарсан алдаа нь хавтасны зөвшөөрлөөр тайлбарлагдахгүй бөгөөд тэдгээрийг нэмэх нь тус болохгүй. Оронд нь шинж чанар ба хязгаарлалтыг харна уу: append-only шинж чанар нь зөвхөн нэмэх горимд бичихийг зөвшөөрдөг бөгөөд зөвхөн унших холболт эсвэл үйлчилгээний sandbox нь ACL-ийн зөвшөөрсөн үйлдлийг үгүйсгэж болно.

Нэгжийн файлын системийн хязгаарлалт ба замын холболтын сонголтыг шалгаж, дараа нь бүтэлгүй болсон яг тэр үйлдлийг давтана уу. Хэзээ ч асуугаагүй зөвшөөрлийг өргөжүүлэх нь аль хязгаарлалт бодитой байсныг л нуудаг. Нэг удаагийн нэгжид нэг нэгээр нь хязгаарлалтыг арилгаж, байнгын ямар нэг зүйлийг өөрчлөхийн өмнө буцаана уу.

Холбоотой нийтлэлүүд