অ্যাপাচি বলেছেন ডকুমেন্টরুটটি যখন থাকে তখন তা বিদ্যমান থাকে না


12

আমি নিম্নলিখিত ভার্চুয়াল হোস্ট তৈরি করতে ওয়েবমিন ব্যবহার করেছি:

<VirtualHost *:80>
        DocumentRoot "/var/www/whatever"
        ServerName whatever.ourdomain
        <Directory "/var/www/whatever">
                allow from all
                Options +Indexes
        </Directory>
</VirtualHost>

এবং অ্যাপাচি পুনরায় চালু করার সময় আমি পাই

Starting httpd: Warning: DocumentRoot [/var/www/whatever] does not exist

জিনিসটি হ'ল ডিরেক্টরিটি একেবারে বিদ্যমান। আমি ঠিক এ দিকে তাকিয়ে আছি pwdএটি আমার বর্তমান ডিরেক্টরি ইত্যাদি আমাকে দেখায় এটি সঠিক বানান করা এতটা কঠিন নয়। আমি httpd লগগুলিতে অন্য কোনও ত্রুটি বা সতর্কতা খুঁজে পাচ্ছি না। অ্যাপাচি: অ্যাপাচি ডিরেক্টরি এবং সমস্ত উপ ডিরেক্টরি / ফাইলের মালিক। এখানে কোনও জড়িত বা জড়িত কিছু নেই। আমি কী মিস করছি বা এটি কেন তা নির্ধারণের জন্য আমার আর কী দেখার উচিত?

ওএস হ'ল সেন্টোস 6.0


অ্যাপাচি ব্যবহারকারীর কাছে su এবং দেখুন এটি অ্যাক্সেস করতে পারে কিনা তা DocumentRootযা ওয়েব সার্ভারটি যা দেখছে তাতে আপনাকে কিছুটা অন্তর্দৃষ্টি দিতে পারে। আপনি পথটি বরাবর অন্যান্য ডিরেক্টরিও পরীক্ষা করতে চাইতে পারেন, যদিও এটি যদি সত্যিই /var/www/সেগুলির অধীনে থাকে তবে কোনও সমস্যা হওয়া উচিত নয়
voretaq7

উত্তর:


8

আমার মনে যে প্রথম জিনিসটি মুছে গেছে তা হ'ল আপাচে সেই ডিরেক্টরিটি অ্যাক্সেস করার অনুমতি আছে কি?

এছাড়াও, এটি: /programming/3948038/apache-says-my-docamentroot-directory-doesnt-exist


1
যেমনটি আমি বলেছিলাম, হ্যাঁ ডিরেক্টরিটি মালিকানাধীন apache:apache, তবে আমি সেই লিঙ্কটি অনুসরণ করেছি (এটি কোনও কারণে রয়েছে?) এবং সত্যই সেলইনক্স ছিল সমস্যা। সেলইনাক্স আরও সমস্যার কারণ এটি ভাল ইমো করে।
জেক উইলসন

সেলিনাক্স প্রথমে বিরক্তিকর, তবে আপনি যদি অ্যাক্সেস পরিচালনা করার আদেশগুলি জানেন তবে এটি আসলে তেমন ভয়ঙ্কর নয়। একবার ব্যবহারে অভ্যস্ত হয়ে ওঠার জন্য এটি একটি ভাল সরঞ্জাম।
রিলিন্ডো

আমার একই সমস্যা ছিল (একটি সিমলিংকে বিদ্যমান নেই), এবং setenforce 0এটি স্থির করে চলছে , তবে অনুমতিগুলি দেখে ls-laZ, সিএমএমিংকে chmod বাদে অন্য ফাইলগুলি যেমন অ্যাক্সেস করতে পারে তার সমান অনুমতি রয়েছে। ফাইলগুলি হ'ল- rw-r - r--, এবং সিমিলিংকটি lrwxrwxrwx। সেটেনফোর্স 1 এর সাথে এটি কাজ না করার কারণ হতে পারে?
টিএমএইচ

@ জ্যাকউইলসন সেলিনাক্স যখন আপনি প্রথমে অভ্যস্ত হয়ে উঠছেন তখন বরং হতাশাবোধ করছেন। আপনি কীভাবে এটি ব্যবহার করতে শিখবেন, আমি প্রতিশ্রুতি দিচ্ছি যে আপনি এটির আরও প্রশংসা করবেন।
স্পেন্সার উইলিয়ামস

16

এখানে সেলিনাক্স কেস সম্পর্কে একটি টিউটোরিয়াল পদ্ধতি রয়েছে:

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/

অন্যদিকে, যদি সেলইনাক্স প্রসঙ্গে প্রয়োগ করা হয় তবে 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

যদি ওয়েব সার্ভারটি এখনও ডকুমেন্টরুটটি দেখতে না পারে, তবে মনে রাখবেন যে প্রসঙ্গটি পুরোপুরি রুটে ফিরে আসা সম্পর্কিত:

$ 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

এই মুহুর্তে, ওয়েব সার্ভার ডিরেক্টরিটি দেখতে পারে।

হ্যাঁ, আমি আজ রাতে খুব শক্তভাবে শিখেছি।

দ্রষ্টব্য: Chcon ব্যবহারের রেডহ্যাট ডকুমেন্টেশন ( 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.

ব্যবহারের semanage 'র জন্য এবং restorecon আরো স্থায়ী পরিবর্তন করতে। সংক্ষিপ্ত উদাহরণ:

 $ sudo semanage fcontext --add -t httpd_sys_content_t -s system_u \
     "/path/to/document/root(/.*)?"
 $ sudo restorecon -FR /path/to/document/root

শুভেচ্ছার সঙ্গে restorecon , নোট যে -F প্রয়োজন বোধ করা হয় পুরো প্রসঙ্গ (অর্থাত ব্যবহারকারী এবং টাইপ) প্রভাবিত করার। এছাড়াও, -আর অর্থ পুনরাবৃত্তভাবে পরিবর্তন করা। আর্গুমেন্টস -v বা -p উভয় পদক্ষেপ বা ক্ষুদ্র ফ্যাশনে অগ্রগতি প্রদর্শন করতে পারে। আসলে কোনও পরিবর্তন না করে কী হবে তা দেখতে -FRnv ব্যবহার করুন ।

একবার সেমেনেজটি এভাবে ব্যবহার করা গেলে , স্থানীয় সুরক্ষা পরিবর্তনগুলি যেমন একটি কমান্ডের সাহায্যে দেখা সম্ভব:

$ sudo semanage export

বিভিন্ন সিস্টেমে পরিবর্তনের সেট প্রয়োগ করা সহজ করার জন্য সেমেনেজ রফতানির আউটপুট সংরক্ষণ এবং আমদানি আমদানি দ্বারা ব্যবহৃত হতে পারে ।

দ্রষ্টব্য: এই উত্তরটি কোনও সাইটের জন্য সর্বাধিক প্রাথমিক ধরণের প্রসঙ্গ সরবরাহ করে। সুরক্ষা অনেক বেশি দানাদার হতে পারে। উদাহরণস্বরূপ, এমন একটি কমান্ড সহ ওয়েব সার্ভার পৃষ্ঠাগুলিতে প্রয়োগ করতে পারে এমন প্রকারের একটি তালিকা দেখুন:

$ seinfo -t | grep http

উল্লেখ্য: মত উপযোগিতা semanage 'র জন্য এবং seinfo ডিফল্টরূপে ইনস্টল করা যাবে না। কমপক্ষে কিছু বিতরণে প্রয়োজনীয় প্যাকেজগুলির নাম দেওয়া যেতে পারে:

policycoreutils-python
setools-console

বিস্তারিত, কাজ করে এবং অনেক সময় সাশ্রয় করে - ধন্যবাদ!
উত্তরব্রিজে

6

মনে হচ্ছে SELinux.I এর সাথে কাজ করার পরামর্শ দেব। নিশ্চিত করতে / var / লগ / নিরীক্ষণ ডিরেক্টরিটি দেখুন।

সবচেয়ে খারাপ ঘটনা, আপনি সর্বদা সেলিনাক্স বন্ধ করতে পারেন, যেমন পূর্বে উল্লিখিত হয়েছে, তবে আমি আপনাকে পরিবর্তে এটির সাথে কাজ করার পরামর্শ দিচ্ছি। উদাহরণস্বরূপ, যদি আমি অ্যাপাচি দিয়ে ব্যবহারের জন্য একটি ডিরেক্টরি তৈরি করতে পারি তবে এটি এখানে সঠিকভাবে প্রাসঙ্গিক হবে না।

[root@amp23140 www]# ls -Z
drwxr-xr-x. root root system_u:object_r:httpd_sys_script_exec_t:s0 cgi-bin
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 error
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 html
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 icons
drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 whatever

সুতরাং যদি এটি হয়, আমি কেবল অন্য ডিরেক্টরি থেকে প্রসঙ্গটি প্রয়োগ করব, যা এই ক্ষেত্রে, এইচটিএমএল:

[root@amp23140 www]# chcon whatever --reference=html
[root@amp23140 www]# ls -lZ
drwxr-xr-x. root root system_u:object_r:httpd_sys_script_exec_t:s0 cgi-bin
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 error
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 html
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 icons
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 whatever

0

"Httpd_sys_content_t" এর সুরক্ষা প্রসঙ্গ পরিবর্তন করতে এই কমান্ডটি রুটটিতে ব্যবহার করুন যা অ্যাপাচি চালিত হতে দেয়।

chcon -R -h -t httpd_sys_content_t /var/www/whatever

ls -dZ /var/www/whateverসুরক্ষা ভূমিকা বিশদগুলি দেখতে ব্যবহার করুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.