பதிவு வளர்கிறது ஆனால் மீண்டும் உருவாக்க முடியாது: கோப்பகத்தின் ACL சரிபார்க்கவும்
கோப்பில் சேர்ப்பதற்கு அதன் கோப்பகத்தில் புதிய பெயர் தேவையில்லை; உருவாக்குவதற்குத் தேவை. எதையும் விரிவாக்கும் முன் அணுகல் ACL-ஐ மரபுவழி இயல்புநிலைகளுடன் ஒப்பிடுங்கள்.
தொடர்ந்து வளர்ந்துகொண்டிருக்கும் ஒரு பதிவு, ஏதோ அதை மீண்டும் உருவாக்கும் தருணத்தில் வளர்வதை நிறுத்துகிறது, பிழை அனுமதி மறுக்கப்பட்டது என்கிறது. பதிவு கோப்பிற்கே அதிக அனுமதிகள் தேவை என்ற முடிவு கவர்ச்சிகரமானது, ஆனால் கோப்பு ஏற்கனவே அதே கணக்கிற்கு எழுதக்கூடியதாக இருக்கலாம். ஏற்கனவே உள்ள பெயரில் சேர்ப்பதும் புதிய பெயரை உருவாக்குவதும் வெவ்வேறு சோதனைகள், இரண்டாவது மட்டுமே கோப்பகத்தைக் கேட்கிறது.
சேர்ப்பதும் உருவாக்குவதும் வெவ்வேறு சோதனைகள்
ஏற்கனவே உள்ள கோப்பைச் சேர்ப்பதற்குத் திறப்பதற்கு அந்தக் கோப்பில் எழுத்து அணுகலும் அதன் பாதையில் உள்ள ஒவ்வொரு கோப்பகத்திலும் தேடல் அணுகலும் தேவை. கோப்பை உருவாக்க அதைக் கொண்டிருக்கும் கோப்பகத்தில் எழுத்தும் தேடலும் தேவை, ஏனெனில் செயல்பாடு அதற்கு ஒரு பெயரைச் சேர்க்கிறது. மறுபெயரிடல் மூலம் கோப்பை மாற்றுவது இரு கோப்பகங்களையும் அவற்றின் ஸ்டிக்கி-பிட் விதிகளையும் தொடுகிறது.
| Operation | What must permit it | Typical failure message |
|---|---|---|
| Append to an existing log | File write access, path traversal | Permission denied on the file |
| Create a missing log | Directory write and search access | Permission denied on the path |
| Rename a replacement into place | Both directories, plus sticky restrictions | Permission 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
அணுகல் உள்ளீடுகளை இயல்புநிலையிலிருந்து தனித்துப் படியுங்கள், மேலும் முகமூடியைப் படியுங்கள். முழு உரிமைகளைப் பட்டியலிடும் பெயரிடப்பட்ட உள்ளீடும் முகமூடியால் வரம்பிடப்படலாம், அதனால்தான் பயனுள்ள கருத்து முதல் வரியின் எழுத்துகளை விட முக்கியம்.
கட்டமைப்பில் உள்ள பாதைக்குப் பதிலாக தீர்க்கப்பட்ட பாதையைப் பயன்படுத்துங்கள். குறியீட்டு இணைப்பு, மவுண்ட் புள்ளி அல்லது சுழற்றப்பட்ட கோப்பகம் ஆகியவை உண்மையான கோப்பை நீங்கள் வழங்கிய அனுமதி ஒருபோதும் சென்றடையாத இடத்தில் வைக்கலாம். முதலில் பெயர் கருவியுடன் பாதையில் செல்லுங்கள், பிறகு ஒவ்வொரு நிலையையும் சம்பந்தப்பட்ட கணக்குடன் ஒப்பிடுங்கள். மேல்நிலைக் கோப்பகத்தை ஊகிப்பதுதான் திருத்தம் ஒரு நிலை மிக உயரமாக இறங்கும் வழி.
அந்தத் தருணத்தில் யார் எழுதுகிறார்கள் என்பதை அடையாளம் காணுங்கள்
எதையும் மாற்றும் முன் சேவை அலகு, அதன் நுழைவுகள் மற்றும் டீமானின் சொந்தக் கணக்கு அமைப்புகளைச் சரிபார்க்கவும். சேர்க்கும் செயல்முறையும் மீண்டும் உருவாக்கும் செயல்முறையும் வேறுபடலாம்: சுழற்சி உதவியாளர், நிலை எழுத்தாளர் மற்றும் வலை வாசகர் ஆகியோர் அடையாளத்தை அரிதாகவே பகிர்ந்துகொள்கிறார்கள்.
root ஷெல்லில் இருந்து இயக்கிய சோதனை கட்டுப்படுத்தப்பட்ட சேவையை மீண்டும் உருவாக்காது, சேவை தொடர்ந்து தோல்வியடையும்போது அது வெற்றியடையும். தோல்வியடைந்த செயல்பாட்டை அதே அலகின் கீழ், அதே கணக்கு மற்றும் அதே சாண்ட்பாக்ஸ் அமைப்புகளுடன் மீண்டும் உருவாக்குங்கள். முடியாவிட்டால், தற்காலிக ஷெல்லுடன் அலகைத் தொடங்கி அது தெரிவிக்கும் அடையாளத்தைச் சரிபார்க்கவும். வேறு எதுவும் சேவையை அல்ல, உங்கள் முனையத்தை அளக்கிறது.
உருவாக்கம் உண்மையில் தேவைப்பட்டால், எழுத்தாளருக்கு அர்ப்பணிக்கப்பட்ட பதிவுக் கோப்பகத்திற்கு அணுகலைக் கொடுங்கள், நுகர்வோருக்கான படிக்கும் அணுகலைத் தனியாக வைத்திருங்கள். ஒரு பதிவு அழைப்பைத் திருப்திப்படுத்த ஷேர் செய்யப்பட்ட கணக்கையோ முழு பயன்பாட்டு மரத்தையோ எழுதக்கூடியதாக்குவது சிறிய சிக்கலைப் பெரியதாக மாற்றுகிறது.
மீண்டும் அறிமுகப்படுத்தாமல் சுழற்றுங்கள்
கோப்பை மீண்டும் உருவாக்குபவர் அடுத்த சுழற்சிக்கு அதன் உரிமையாளரையும் பயன்முறையையும் தீர்மானிக்கிறார், எனவே திருத்தத்தைச் சுழற்சி கட்டமைப்புடன் ஒருங்கிணைக்கவும். வேறு கணக்கின் கீழ் அல்லது புதிய ACL-உடன் உருவாக்கப்பட்ட மாற்று, வெற்றிகரமான திருத்தத்திற்குப் பிறகு தோல்வியை மீண்டும் கொண்டுவருகிறது.
பயன்முறையையும் குழுவையும் உருவாக்கத்தின் போதே அமையுங்கள், பின்னர் அல்ல, அடுத்த சேர்ப்பிற்குப் பதிலாக அடுத்த சுழற்சியைச் சரிபார்க்கவும். சேர்ப்பு ஏற்கனவே தேர்ச்சி பெற்ற சோதனையை மீண்டும் செய்கிறது. சுழற்சிக் கருவி உருவாக்கப் பயன்முறை அமைப்பை வழங்கினால், உருவாக்கத்திற்குப் பின் chmod-க்குப் பதிலாக அதைப் பயன்படுத்துங்கள். உருவாக்கத்திற்கும் chmod-க்கும் இடையிலான இடைவெளியே அடுத்த எழுத்து தோல்வியடையக்கூடிய சரியான தருணம்.
வெட்டுதல் எப்படியும் தோல்வியடைந்தால், அனுமதிகளைச் சேர்ப்பதை நிறுத்துங்கள்
நீங்கள் எழுதக்கூடிய கோப்பை வெட்டுவதில் ஏற்படும் தோல்வி கோப்பக அனுமதிகளால் விளக்கப்படாது, அவற்றை மேலும் சேர்ப்பதால் உதவாது. அதற்குப் பதிலாக பண்புகளையும் கட்டுப்பாட்டையும் பாருங்கள்: append-only பண்பு சேர்ப்பு பயன்முறையில் மட்டுமே எழுத அனுமதிக்கிறது, படிக்க-மட்டும் மவுண்ட் அல்லது சேவை சாண்ட்பாக்ஸ் ACL அனுமதிக்கும் செயல்பாட்டை மறுக்கலாம்.
அலகின் கோப்பு முறைமைக் கட்டுப்பாடுகளையும் பாதையின் மவுண்ட் விருப்பங்களையும் சரிபார்த்து, பின்னர் தோல்வியடைந்த சரியான செயல்பாட்டை மீண்டும் உருவாக்குங்கள். ஒருபோதும் கேட்கப்படாத அனுமதியை விரிவாக்குவது எந்தக் கட்டுப்பாடு உண்மையானது என்பதை மட்டுமே மறைக்கிறது. தூக்கி எறியக்கூடிய அலகில் ஒரு நேரத்தில் ஒரு கட்டுப்பாட்டை நீக்கி, நிரந்தரமான எதையும் மாற்றும் முன் அதைத் திருப்பிக் கொடுங்கள்.