मैंने एक सेवा / एकल बाइनरी ऐप लिखा है जिसे मैं फेडोरा 24 पर चलाने की कोशिश कर रहा हूं, यह सिस्टमड का उपयोग करके चलाता है, बाइनरी को तैनात किया जाता है। /srv/bot
इस सेवा / एप्लिकेशन को मैंने लिखा है इस निर्देशिका में फ़ाइलों को बनाने / खोलने / पढ़ने और नाम बदलने की आवश्यकता है।
मैंने पहली बार SELinux पर आधारित एक नई नीति बनाना शुरू किया : एक प्रक्रिया को एक निश्चित निर्देशिका में किसी भी फ़ाइल को बनाने की अनुमति दें
लेकिन जब मेरे ऐप का नाम बदलने की ज़रूरत हुई, तो आउटपुट में चेतावनी थी:
#!!!! WARNING: 'var_t' is a base type.
allow init_t var_t:file rename;
मैं चारों ओर घूम गया और मुझे पता चला कि मुझे आधार प्रकार की तुलना में अधिक विशिष्ट SELinux लेबल का उपयोग करना चाहिए, लेकिन सभी उदाहरण आपको httpd / nginx / etc से मौजूदा लेबल दिखाते हैं।
क्या कोई ऐसा तरीका है जिससे मैं अपने स्वयं के ऐप के लिए एक कस्टम लेबल बना सकता हूं?
मेरा विचार myapp_var_t, उपयोग की तरह कुछ बनाना है
semanage fcontext -a -t my_app_var_t '/srv/bot(/.*)?'
restorecon -R -v /srv/bot
और एक कस्टम .pp
फ़ाइल जो इस कस्टम प्रकार का उपयोग करेगी
यदि इसे हल करने के लिए एक बेहतर तरीका है, तो वह भी काम करता है।
धन्यवाद
अपडेट करें
अधिक खोज करने के बाद, मुझे लगता है कि जो मैं करना चाहता हूं उसके लिए उचित शब्द है नया बनाने के लिए types
जिसने मुझे
https://docs.fedoraproject.org/en-US/Fedora/13/html/SELinux_FAQ/india.html#id3036916 पर ले लिया
जो मूल रूप से कहता है, भागो
sepolgen /path/to/binary
और मैं एक टेम्पलेट प्राप्त करने में सक्षम था जिसे मैं एक पीपी फ़ाइल और लोड में संकलित कर सकता हूं, फिर भी कुछ त्रुटियां मिल सकती हैं लेकिन ऐसा लगता है कि मैं जो करना चाहता हूं उसके करीब हूं।
अगर मुझे यह काम करने के लिए मिलता है, तो मैं इस पोस्ट को अपडेट करूंगा