আপাচে কোন ব্যবহারকারী হিসাবে চলছে তা সন্ধান করছেন?


212

এখানে আমার সুন্দরভাবে বর্ণিত হিসাবে আমি আমার সার্ভারে একটি ফাইল আপলোড ডিরেক্টরি সুরক্ষিত করতে চাই, তবে এই নির্দেশাবলী অনুসরণ করার আগে আমার একটি সমস্যা আছে। আমি জানি না যে ব্যবহারকারী আপাচি কী হিসাবে চলছে running

আমি একটি পরামর্শ পেয়েছি যে আপনি httpd.conf এ সন্ধান করতে পারেন এবং সেখানে একটি "ব্যবহারকারী" লাইন থাকবে তবে আমার httpd.conf ফাইলে তেমন কোনও লাইন নেই, তাই আমার ধারণা আপাচি ডিফল্ট ব্যবহারকারী হিসাবে চলছে। যদিও তা আমি খুঁজে পাচ্ছি না।

সুতরাং, আমার প্রশ্নটি হ'ল:

  • আমি কীভাবে ডিফল্ট ব্যবহারকারী তা জানতে পারি
  • আমার কি ডিফল্ট ব্যবহারকারী পরিবর্তন করতে হবে?
  • উত্তরটি যদি হ্যাঁ হয় এবং আমি httpd.conf সম্পাদনা করে ডিফল্ট ব্যবহারকারীর পরিবর্তন করি তবে এটি কি কোনও কিছু বাড়িয়ে দেবে?

ধন্যবাদ!


12
কেন এই প্রশ্নটি অবহেলা করা হয়েছে? হ্যাঁ, এটিকে সর্বত্র উত্তর দেওয়া হওয়ায় এটি আপডেট করা হয়েছে, তবে আমি কী ভোট দেওয়ার দরকার নেই? এটি একটি পুরোপুরি ভাল প্রশ্ন? সম্ভবত আমাদের ডাউন ভোটাররা এ বিষয়ে কোনও গঠনমূলক মন্তব্য যুক্ত করার যত্ন নেবে?
ব্রায়ান

2
আপনি সম্ভবত উত্তরটি উত্তর হিসাবে পোস্ট করতে এবং এটি মেনে নিতে চাইবেন, কারণ আপনি বর্তমানে উত্তরহীন সারিতে রয়েছেন।
ফাহাদ সদঃ

7
স্ট্যাক ওভারফ্লোতে বন্ধ থাকার জন্য +1; কিছু ব্যবহারকারী নতুন ব্যবহারকারীদের চালিয়ে যাওয়ার জন্য জোরালো বলে মনে করছেন
রুকি

সংযুক্ত প্রশ্নটির আর কোনও অস্তিত্ব নেই
pal4 Life

পরবর্তী প্রশ্ন: কী করবেন কারণ এটির দুটি ব্যবহারকারীর মধ্যে একটি তার পছন্দ rootএবং www-data। আপনি কীভাবে "ডান" অ্যাপাচি গোষ্ঠীকে কোনও কিছু অ্যাক্সেসের অনুমতি দিবেন?

উত্তর:


228

ps aux | egrep '(apache|httpd)' সাধারণত অ্যাপাচি কী হিসাবে চলছে তা দেখাবে।

সাধারণত আপনার ডিফল্ট ব্যবহারকারী পরিবর্তন করতে হবে না, "কেউ না" বা "অ্যাপাচি" সাধারণত ভাল ব্যবহারকারী। যতক্ষণ না এটি "মূল" নয়;)

সম্পাদনা করুন: অ্যাপাচি বাইনারিগুলি ধরার জন্য আরও সঠিক কমান্ড


42
হ্যাঁ, বা এটি উবুন্টুতে www-ডেটা হবে।
গ্রাফেসফেস

10
... এবং দেবিয়ান :)
কিউবিস্প্ল 42

7
এই কমান্ডটি আমাকে বেশিরভাগ থেকে apacheতবে 1 টির একটি জিনিস দেখায় root
ব্যবহারকারীর

2
আমার 3 টি প্রক্রিয়া রয়েছে ( /usr/sbin/apache2 -k start), একজনের ব্যবহারকারী rootএবং অন্য দুটি www-data। আমার কি উদ্বিগ্ন হওয়া উচিত?
zundi

3
@ জুন্দি, সংরক্ষিত বন্দরে বাঁধাইয়ের মতো কাজগুলি করার জন্য পরিষেবাটি রুট হিসাবে শুরু হয় (উদাহরণস্বরূপ 80 এবং 443)। তারপরে এটি নির্ধারিত ব্যবহারকারী হিসাবে ওয়েব-সার্ভারের কাজ এবং অন্য কোনও কার্য সম্পাদনের জন্য কনফিগার করা সংখ্যক প্রক্রিয়া যা শুরু হয়। এইভাবে অনুরোধগুলি অ-সুবিধাযুক্ত প্রক্রিয়াগুলি দ্বারা পরিচালিত হচ্ছে। আপনি লক্ষ্য করবেন যে প্যারেন্ট আইডি (পিপিআইডি) অন্যান্য সমস্ত প্রক্রিয়ার জন্য একই is মূল হিসাবে চলমান একটি প্রক্রিয়াটির জন্য পিআইডি হওয়ার সাথে সেই ধারণাটি।
কেভিন

41

আপনি নিম্নলিখিত আদেশটি চেষ্টা করতে পারেন:

ps -ef | egrep '(httpd|apache2|apache)' | grep -v `whoami` | grep -v root | head -n1 | awk '{print $1}'

1
আমি এই উত্তরটি সর্বাধিক উত্সাহিত উত্তরের চেয়ে ভাল (আরও জেনেরিক) পছন্দ করি। ধন্যবাদ
পিজিআর

14

ব্যবহার করুন apachectl -S, যা অ্যাপাচি ব্যবহারকারী এবং গোষ্ঠী, এর মতো কিছু দেখায়:

User: name="_www" id=70
Group: name="_www" id=70

ধন্যবাদ, আমার ম্যাকের সাথে আমি দেখতে পাচ্ছি যে আপাচি '_www' হিসাবে চলছে।
বুধ

এটি একটি ভাল উত্তর, কারণ এটি একটি আদেশ যা আপনার চলমান ওয়েব সার্ভার সম্পর্কে আরও অনেক কিছু জানায় এবং এটি একটি বিস্তৃত উপায়ে উপস্থাপন করে।
কনটুর

9

উবুন্টুফর্মস.আর.এস-এর মতে উবুন্টুতে অ্যাপাচি 2-র জন্য ডিফল্ট ব্যবহারকারী www-data

উবুন্টু 13.10 সৌস্যে সত্য হতে দেখেছে।


উপরের ফোরামে লার্স নুডন থেকে ।

[ব্যবহারকারী] আসলে কী সেট রয়েছে তা নিশ্চিত হওয়ার জন্য, আসল কনফিগারেশন ফাইলগুলি পরীক্ষা করে দেখুন। ছাতা ফাইলটিতে apache2.confনিম্নলিখিতগুলির মতো কিছু থাকবে,

User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}

এটি সেট করা পরিবেশের ভেরিয়েবলগুলির একটি উল্লেখ /etc/apache2/envvarsmod_suexecএছাড়াও স্ক্রিপ্টগুলি আলাদা ব্যবহারকারী এবং গোষ্ঠী হিসাবে চালানোর অনুমতি দেয়।

বিকল্প ব্যবহারকারী, গোষ্ঠী বা উভয়ই ব্যবহার করতে পারে এমন কোনও ভার্চুয়াল হোস্ট সন্ধান করার জন্য কনফিগারেশনগুলি পরীক্ষা করে দেখুন।

$ egrep "^User|^Group|^SuexecUserGroup" /etc/apache2/apache2.conf /etc/apache2/sites-available/*.conf

রেড হ্যাট ভিত্তিক বিতরণগুলির জন্য এটি (সাধারণত এটির ব্যবহারকারী httpd চলমান থাকে apache):

$ egrep "^User|^Group|^SuexecUserGroup" /etc/httpd/conf/httpd.conf /etc/httpd/conf.d/*.conf

8

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


7

আপনি আপনার পিএইচপি স্ক্রিপ্টে কোডের একটি লাইন অন্তর্ভুক্ত করতে পারেন:

echo exec('whoami');

8
এখানে দেখুন, এটি ব্যবহারকারীকে দেখায় যে পিএইচপি অ্যাপাচি ব্যবহারকারী নয়, পিএইচপি এর অধীনে চলে। যদি মোড_এফপি ব্যবহার করে এটি একই হয় তবে এখন যেমন খুব সাধারণ হিসাবে দেখা যায় আপনি অন্য কিছু ব্যবহার করছেন (পিএইচপি_এফপিএম এর মতো) তারা সহজেই আলাদা হতে পারে।
benz001

5

এই কোডটি - কমবেশি - বর্ণানুক্রমিকভাবে সমস্ত নন-রুট ব্যবহারকারীদের প্রক্রিয়াগুলি চালিত apache(বা যাদের নাম রয়েছে apache) বর্ণমালা অনুসারে তালিকাভুক্ত করবে

ps aux | grep -v root | grep apache | cut -d\  -f1 | sort | uniq

এই তালিকায় সম্ভবত এমন ব্যবহারকারীদের অন্তর্ভুক্ত করা হবে যারা 'গ্রেপ অ্যাপাচি' এর মতো প্রক্রিয়া চালাচ্ছেন, যেমন আপনার সূক্ষ্ম স্ব।
mwfearnley

4
  • ব্যবহারকারীর সন্ধানের জন্য ps aux | grep apache, এটি চলমান অবস্থায় আপনি কেবল ব্যবহার করতে পারেন ।
  • আপনার দরকার নেই, তবে যদি অ্যাপাচি রুট হিসাবে চলমান থাকে তবে সুরক্ষার সমস্যা রয়েছে।
  • তৃতীয়ত, অ্যাপাচি ব্যবহারকারীর পরিবর্তনটি কিছু ডিরেক্টরি অ্যাক্সেসের অধিকারকে পরিবর্তন করবে। আপনাকে নিশ্চিত করতে হবে যে / var / www (বা যেখানে আপনার ওয়েবসাইট রয়েছে সেখানে) নতুন ব্যবহারকারী এবং গোষ্ঠীতে অ্যাক্সেসযোগ্য।
  • যে সিস্টেমে আমি দেখেছি, অ্যাপাচি সর্বদা অ্যাপাচি: অ্যাপাচি (বা অনুরূপ) ব্যবহারকারী এবং গোষ্ঠী হিসাবে ব্যবহার করে ইনস্টল করা ছিল, তাই সম্ভবত এটি ইতিমধ্যে সেট করা উচিত।

দ্রষ্টব্য: এটি একই উত্তর আমি দিয়েছিলাম হয় Stackoverflow


2

অথবা আপনি অ্যাপাচি কনফিগারেশন ফাইলটি পরীক্ষা করে মালিক ও গোষ্ঠীটি সন্ধান করতে পারেন।


2

যেমন নয়ো এখানে পরামর্শ দিয়েছেন :

APACHE_USER=$(ps axho user,comm|grep -E "httpd|apache"|uniq|grep -v "root"|awk 'END {if ($1) print $1}')

এবং তারপর:

echo $APACHE_USER

1
ব্যবহারকারী (উবুন্টু কমান্ড-লাইন) পান: প্রতিধ্বনি $ এপাচ_ইউসিআর
জাদে

1

কমপক্ষে ডেবিয়ান / উবুন্টু-ভিত্তিক ডিগ্রোসের জন্য একটি বিকল্প পন্থা হ'ল অ্যাপাচি তার ব্যবহারকারী এবং গোষ্ঠী নির্ধারণ করতে একই পদ্ধতি ব্যবহার করে: উত্স/etc/apache2/envvars !

$ echo "$(source /etc/apache2/envvars && echo "$APACHE_RUN_GROUP")"
www-data

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

$ এপাচিউসার = $ (
     উত্স / ব্যর্থ / ইত্যাদি / অ্যাপাচি 2 / এনভায়ার্স 2> / দেব / নাল এবং&
     প্রতিধ্বনি "$ APachE_RUN_GROUP" ||
     প্রতিধ্বনি কেউ  
)
$ প্রতিধ্বনি "$ অ্যাপাচিউসার"
কেউ কিছু

1

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

তাই আমি কিছুটা প্রতারণা করি এবং আপাচি নিজেই আমাকে বলতে দিন কী কী।

সহজ কমান্ড apachectl -Sআপনাকে অ্যাপাচি চলমান দৃষ্টান্ত সম্পর্কে কী জানা দরকার তা জানাবে এবং এর ফলাফলগুলি মোটামুটি সহজেই পার্স করা যায়। এখানে আমার সমাধানটি দেওয়া হয়েছে, যা আমি bashযে কোনও সময়ে আমার প্রয়োজন হতে পারে বিভিন্ন জিনিস নির্ধারণ করতে কয়েকটি স্ক্রিপ্টের শীর্ষে ব্যবহার করি ...

# Store the results so we don't have to keep calling apachetl...
astatus=`apachectl -S`

# Now grab whatever you want from the result... 
HTTPD_ROOT_DIR=$(expr "`echo "$astatus" | grep ServerRoot`" : ".*\"\(.*\)\".*")
HTTPD_DOC_DIR=$(expr "`echo "$astatus" | grep \"Main DocumentRoot\" `" : ".*\"\(.*\)\".*")
HTTPD_USER=$(expr "`echo "$astatus" | grep \"User:.*name=\" `" : ".*\"\(.*\)\".*")
HTTPD_GROUP=$(expr "`echo "$astatus" | grep \"Group:.*name=\" `" : ".*\"\(.*\)\".*")

এই মানগুলি তখন ব্যবহার করা যেতে পারে:

echo $HTTPD_ROOT_DIR // /etc/httpd
echo $HTTPD_DOC_DIR  // /var/www
echo $HTTPD_USER     // www-data
echo $HTTPD_GROUP    // www-data

0

আমি এই কমান্ডটি কেকপিএইচপি ডক্সে পেয়েছি ।

HTTPDUSER=`ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\  -f1`

এখন HTTPDUSERব্যবহারকারীর কাছে সার্ভার চালায়, ব্যবহারকারীর নাম ঝুলিতে echo $HTTPDUSERআমার ক্ষেত্রে আউটপুট মধ্যে www-data-using rlerdorf / php7dev


0

Lsof ব্যবহার করুন এবং পোর্ট অ্যাপাচি পাস করার বিষয়টি আর্গুমেন্ট হিসাবে শুনা হচ্ছে। ব্যবহারকারী অ্যাপেচের জন্য USER কলামটি চলমান দেখুন।

# lsof -i :80
COMMAND     PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
httpd     21058   root    4u  IPv6  74730      0t0  TCP *:http (LISTEN)
httpd     21111 www-data    4u  IPv6  74730      0t0  TCP *:http (LISTEN)
httpd     24915 www-data    4u  IPv6  74730      0t0  TCP *:http (LISTEN)

আপনার কাছে কয়েকটি 100 কে ওপেন ফাইলহ্যান্ডল এবং / অথবা বেশ ব্যস্ত সার্ভার থাকলে lsof ধীর হতে পারে।
ডেনিস নোল্টে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.