यहाँ SELinux केस का एक ट्यूटोरियल तरीका है:
पता करें कि क्या SELinux सक्रिय है:
$ sestatus
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: enforcing
Mode from config file: enforcing
Policy version: 24
Policy from config file: targeted
यदि हां, तो कुछ तुलनात्मक जाँच से मदद मिल सकती है। उदाहरण के लिए, एक सर्वर पर एक डिफ़ॉल्ट डॉक्यूमेंट है /var/www/html
, लेकिन हम इसे कहीं और चाहते हैं /path/to/document/root
।
यदि SELinux सक्रिय रूप से संसाधन के साथ खिलवाड़ नहीं कर रहा है, ls -dZ
तो निर्देशिका में कुछ इस तरह दिखाई देगा:
$ ls -dZ /path/to/document/root
? /path/to/document/root/
दूसरी ओर, यदि SELinux संदर्भों को लागू किया जाता है, तो ls -dZ
यह अधिक दिखता है:
$ ls -dZ /path/to/document/root
drwxrws--x+ cfgadm cfgadmin system_u:object_r:file_t:s0 /path/to/document/root
अगर हम एक वर्किंग डॉक्यूमेंट की तुलना करें, तो यह कुछ इस तरह दिखाई देगा:
$ ls -dZ /var/www/html
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html
_r
और _t
से संबंधित -r
( --role
और -t
( --type
) के लिए तर्क chcon
यहाँ एक कट नीचे आदमी पृष्ठ है।:
NAME
chcon - change file security context
SYNOPSIS
chcon [OPTION]... CONTEXT FILE...
chcon [OPTION]... [-u USER] [-r ROLE] [-l RANGE] [-t TYPE] FILE...
chcon [OPTION]... --reference=RFILE FILE...
DESCRIPTION
Change the security context of each FILE to CONTEXT. With --reference,
change the security context of each FILE to that of RFILE.
--reference=RFILE
use RFILE's security context rather than specifying a CONTEXT value
-R, --recursive
operate on files and directories recursively
पहले अनुमान में, निम्नलिखित काम करने के लिए लग सकता है, लेकिन नहीं हो सकता है।
$ sudo chcon -R -t httpd_sys_content_t /path/to/document/root
यदि वेब सर्वर अभी भी DocumentRoot नहीं देख सकता है, तो ध्यान दें कि संदर्भ सभी रूट पर वापस मायने रखता है:
$ sudo chcon -R -t httpd_sys_content_t /path/to/document
$ sudo chcon -R -t httpd_sys_content_t /path/to
$ sudo chcon -R -t httpd_sys_content_t /path
इस बिंदु पर, वेब सर्वर निर्देशिका देख सकता है।
हां, मैंने आज रात कठिन तरीका सीखा है।
नोट: कॉन्कॉन के उपयोग की अवधारणा प्रति रेडहैट प्रलेखन में एक नकारात्मक पहलू है ( 5.6.1। अस्थायी परिवर्तन: chcon ) जो इस प्रकार है:
The chcon command changes the SELinux context for files. However, changes
made with the chcon command do not survive a file system relabel, or the
execution of the restorecon command.
अधिक स्थायी परिवर्तन करने के लिए सीमेन और रिस्टोरॉन का उपयोग करें । एक संक्षिप्त उदाहरण:
$ sudo semanage fcontext --add -t httpd_sys_content_t -s system_u \
"/path/to/document/root(/.*)?"
$ sudo restorecon -FR /path/to/document/root
रिस्टोरॉन के संबंध में , ध्यान दें कि -F को पूरे संदर्भ (यानी उपयोगकर्ता और प्रकार) को प्रभावित करना आवश्यक है। इसके अलावा, -R का मतलब है कि पुनरावर्ती रूप से परिवर्तन करना। तर्क -v या -p किसी क्रिया या छद्म फैशन में प्रगति दिखा सकता है। उपयोग -Fnnv यह देखने के लिए कि वास्तव में कोई बदलाव किए बिना क्या होगा।
एक बार वीर्यपात का उपयोग इस तरह से करने के बाद, स्थानीय सुरक्षा परिवर्तन जैसे कमांड के साथ देखना संभव है:
$ sudo semanage export
विभिन्न प्रणालियों में परिवर्तन का एक सेट लागू करने के लिए आसान बनाने के लिए वीर्य आयात द्वारा सीमनेज एक्सपोर्ट के आउटपुट को बचाया और उपयोग किया जा सकता है ।
नोट: यह उत्तर किसी साइट के लिए सबसे बुनियादी प्रकार का संदर्भ प्रदान करता है। सुरक्षा बहुत अधिक दानेदार हो सकती है। उदाहरण के लिए, उन प्रकारों की एक सूची देखें जो वेब सर्वर पृष्ठों पर कमांड के साथ लागू हो सकते हैं जैसे:
$ seinfo -t | grep http
नोट: जैसे उपयोगिताएँ semanage और seinfo डिफ़ॉल्ट रूप से स्थापित नहीं किया जा सकता। कम से कम कुछ वितरणों पर, आवश्यक पैकेजों को कुछ इस तरह नामित किया जा सकता है:
policycoreutils-python
setools-console
DocumentRoot
, जो आपको वेब सर्वर को देखने के बारे में कुछ जानकारी दे सकता है। तुम भी रास्ते में अन्य निर्देशिकाओं की जाँच करना चाहते हो सकता है, हालांकि अगर यह वास्तव में/var/www/
उन के तहत एक समस्या नहीं होनी चाहिए