අපාචේ ක්‍රියාත්මක වන්නේ කුමන පරිශීලකයාදැයි සොයා බැලීම?


230

මෙහි ලස්සනට විස්තර කර ඇති පරිදි මගේ සේවාදායකයේ ගොනු උඩුගත කිරීමේ නාමාවලියක් සුරක්ෂිත කිරීමට මට අවශ්‍යය, නමුත් මෙම උපදෙස් පිළිපැදීමට පෙර මට එක් ගැටළුවක් ඇත. Apache ක්‍රියාත්මක වන්නේ කුමක් දැයි මම නොදනිමි.

ඔබට httpd.conf හි බැලීමට හැකි යෝජනාවක් මා සොයාගෙන ඇති අතර එහි "පරිශීලක" රේඛාවක් ඇත, නමුත් මගේ httpd.conf ගොනුවේ එවැනි රේඛාවක් නොමැත, එබැවින් අපාචී පෙරනිමි පරිශීලකයා ලෙස ක්‍රියාත්මක වන බව මම අනුමාන කරමි. ඒ මොකක්ද කියලා මට හොයාගන්න බැහැ.

ඉතින්, මගේ ප්‍රශ්නය (වේ):

  • සුපුරුදු පරිශීලකයා යනු කුමක්දැයි මම සොයා ගන්නේ කෙසේද?
  • මට සුපුරුදු පරිශීලකයා වෙනස් කිරීමට අවශ්‍යද?
  • පිළිතුර ඔව් නම් සහ මම පෙරනිමි පරිශීලකයා httpd.conf සංස්කරණය කිරීමෙන් වෙනස් කරන්නේ නම්, එය කිසියම් දෙයක් ඉස්කුරුප්පු කිරීමට ඉඩ තිබේද?

ස්තූතියි!


13
මෙම ප්‍රශ්නය පහත් කොට ඇත්තේ ඇයි? ඔව්, එය යාවත්කාලීන කර ඇත්තේ එයට වෙනත් තැනක පිළිතුරු ලැබී ඇති නිසාය, නමුත් ඡන්දය අඩු කිරීමේ අවශ්‍යතාවයක් මට නොපෙනේද? එය හොඳ ප්‍රශ්නයක්ද? සමහර විට අපේ පහළ ඡන්දදායකයා මේ සම්බන්ධයෙන් comment ලදායී අදහස් දැක්වීමක් කිරීමට කැමතිද?
බ්‍රයන්

2
ඔබට එම යාවත්කාලීනය පිළිතුරක් ලෙස පළ කිරීමට අවශ්‍ය විය හැකි අතර, ඔබ දැනට පිළිතුරු නොමැති පෝලිමේ සිටින බැවින් එය පිළිගන්න.
ෆහාඩ් සදා

8
StackOverflow හි ඉවත් කිරීම සඳහා +1; සමහර පරිශීලකයින් නව පරිශීලකයින් ඉවත් කිරීමට බල කරන බවක් පෙනේ
wruckie

සම්බන්ධිත ප්‍රශ්නය තවදුරටත් නොපවතී
pal4life

ඊළඟ ප්‍රශ්නය: කුමක් කළ යුතුද යන්න එහි පරිශීලකයින් දෙදෙනෙකුගෙන් එක් අයෙකු කැමති rootහා www-data. "නිවැරදි" අපාචි කණ්ඩායමට යමක් ප්‍රවේශ වීමට අවසර ලබා දෙන්නේ කෙසේද?

Answers:


249

ps aux | egrep '(apache|httpd)' සාමාන්‍යයෙන් apache ක්‍රියාත්මක වන්නේ කුමක් දැයි පෙන්වයි.

සාමාන්‍යයෙන් ඔබට සුපුරුදු පරිශීලකයා වෙනස් කිරීමට අවශ්‍ය නොවේ, "කිසිවෙකු" හෝ "අපාචේ" සාමාන්‍යයෙන් හොඳ පරිශීලකයින් නොවේ. එහි "මූල" නොවන තාක් කල්;)

සංස්කරණය කරන්න: අපාචේ ද්විමයයන් අල්ලා ගැනීම සඳහා වඩාත් නිවැරදි විධානය


45
ඔව්, නැතහොත් එය උබුන්ටු හි www-data වනු ඇත.
gravyface

10
... සහ ඩේබියන්. :)
cubuspl42

8
එම විධානය මට දේවල් ලැයිස්තුවක් පෙන්වයි, බොහෝමයක් apacheනමුත් 1 න් root.
පරිශීලක

2
මට ක්‍රියාවලි 3 ක් ඇත ( /usr/sbin/apache2 -k start), එක් අයෙකුගේ පරිශීලකයා rootසහ අනෙක් දෙක www-data. මා සැලකිලිමත් විය යුතුද?
zundi

4
und සුන්ඩි, සේවාව ආරම්භ වන්නේ වෙන් කළ වරායන්ට බැඳීම වැනි දේ කිරීම සඳහාය (උදා: 80 සහ 443). නිර්වචනය කළ පරිශීලකයින් ලෙස, වින්‍යාසගත කර ඇති ක්‍රියාවලි ගණන කුමක් වුවත්, වෙබ් සේවාදායකයේ වැඩ කිරීම සහ වෙනත් ඕනෑම කාර්යයක් ආරම්භ කරයි. ඒ ආකාරයෙන් ඉල්ලීම් හසුරුවනු ලබන්නේ වරප්‍රසාද නොලත් ක්‍රියාවලීන් මගිනි. මව් හැඳුනුම්පත (පීපීඅයිඩී) අනෙක් සියලුම ක්‍රියාවලීන් සඳහා සමාන බව ඔබට පෙනෙනු ඇත. එම අදහස root ලෙස ක්‍රියාත්මක වන එක් ක්‍රියාවලියක් සඳහා PID විය යුතුය.
කෙවින්

46

ඔබට පහත විධානය උත්සාහ කළ හැකිය:

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

1
මම මෙම පිළිතුරට කැමතියි, වඩාත්ම උසස් පිළිතුරට වඩා හොඳ (වඩා සාමාන්‍ය). ස්තූතියි
pgr

20

භාවිතා කරන්න apachectl -S, එය Apache පරිශීලකයා සහ කණ්ඩායම පෙන්වයි, මේ වගේ දෙයක්:

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

1
ස්තූතියි, මගේ මැක් මත මට පෙනෙන්නේ අපාචේ '_www' ලෙස ක්‍රියාත්මක වන බවයි.
බුධ

1
මෙය හොඳ පිළිතුරකි, මන්ද එය ඔබගේ ක්‍රියාත්මක වන වෙබ් සේවාදායකය ගැන තවත් බොහෝ දේ පවසන එක් විධානයක් වන අතර එය පුළුල් ආකාරයකින් ඉදිරිපත් කරයි.
kontur

10

Ubuntuforums.org ට අනුව , උබුන්ටු හි apache2 සඳහා පෙරනිමි පරිශීලකයා වේ www-data.

උබුන්ටු 13.10 සෝසි හි සත්‍ය බව පෙනේ.


ඉහත සංසදයේ ලාර්ස් නූඩන් වෙතින් .

[පරිශීලකයා] සැබවින්ම සකසා ඇත්තේ කුමක් දැයි තහවුරු කර ගැනීමට, සත්‍ය වින්‍යාස ගොනු පරීක්ෂා කරන්න. කුඩ ගොනුවට apache2.confපහත සඳහන් දේ ඇත.

User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}

එය සකසා ඇති පරිසර විචල්‍යයන් සඳහා යොමු කිරීමකි /etc/apache2/envvars. mod_suexecවෙනත් පරිශීලකයෙකු සහ කණ්ඩායමක් ලෙස ස්ක්‍රිප්ට් ධාවනය කිරීමට ද ඉඩ දෙයි.

විකල්ප පරිශීලකයින්, කණ්ඩායම් හෝ දෙකම භාවිතා කළ හැකි ඕනෑම අථත්‍ය ධාරක සොයා ගැනීමට, වින්‍යාසයන් පරීක්ෂා කරන්න.

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

Red Hat පදනම් කරගත් බෙදාහැරීම් සඳහා එය එසේ වනු ඇත (සාමාන්‍යයෙන් එහි පරිශීලකයා httpd ධාවනය කරන්නේ apache):

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

8

මෙය පැරණි පෝස්ට් එකක් බව මම දනිමි, නමුත් එය තවමත් පිළිතුරු නොමැති ලෙස ලැයිස්තුගත කර ඇත, එබැවින් මම යෝජනාවක් ඉදිරිපත් කරමි. Apache ක්‍රියාත්මක වන්නේ කුමන පරිශීලකයා හෝ කණ්ඩායමක් දැයි ඔබට සොයාගත නොහැකි නම්, සමහර විට httpd.conf ගොනුව විවෘත කිරීමට උත්සාහ කරන්න. "පරිශීලක" සහ "කණ්ඩායම" සඳහා එහි ප්‍රවේශයක් තිබිය යුතුය. අපාචේ කුමන පරිශීලකයා ලෙස ක්‍රියාත්මක විය යුතු දැයි ඔබට දැකගත හැකිවා පමණක් නොව, එසේ කිරීමේ අවශ්‍යතාවය ඔබට දැනේ නම් ඔබට එය වෙනස් කළ හැකිය.


7

ඔබේ PHP ස්ක්‍රිප්ටයේ කේත පේළියක් ඇතුළත් කළ හැකිය:

echo exec('whoami');

8
මෙහි අවධානය යොමු කරන්න, මෙයින් පෙනී යන්නේ PHP ක්‍රියාත්මක වන්නේ පරිශීලකයාට නොව Apache පරිශීලකයාට බවයි. Mod_php භාවිතා කරන්නේ නම් ඒවා එක හා සමානයි, නමුත් දැන් බහුලව දක්නට ලැබෙන පරිදි, ඔබ වෙනත් දෙයක් භාවිතා කරන්නේ නම් (php_fpm වැනි) ඒවා පහසුවෙන් වෙනස් විය හැකිය.
benz001

5

මෙම කේතය - වැඩි හෝ අඩු - අකාරාදී පිළිවෙලින් ලැයිස්තුගත කරනුයේ සියලුම මූල නොවන පරිශීලකයින්ගේ ක්‍රියාවලීන් ක්‍රියාත්මක වන apache(හෝ කාගේ නමද apache)

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

ඔබේ හොඳ ආත්මය වැනි 'grep apache' වැනි ක්‍රියාවලි ක්‍රියාත්මක කරන පරිශීලකයින් ලැයිස්තුවට ඇතුළත් වනු ඇත.
mwfearnley

4
  • පරිශීලකයා සොයා ගැනීමට, ps aux | grep apacheඑය ක්‍රියාත්මක වන විට ඔබට සරලව භාවිතා කළ හැකිය .
  • ඔබට අවශ්‍ය නැත, නමුත් අපාචේ මූල ලෙස ක්‍රියාත්මක වන්නේ නම් ආරක්ෂක ගැටළු තිබේ.
  • තෙවනුව, අපාචේ භාවිතා කරන්නා වෙනස් කිරීමෙන් සමහර නාමාවලි වලට ප්‍රවේශ වීමේ අයිතිය වෙනස් වේ. / Var / www (හෝ ඔබේ වෙබ් අඩවි ඇති ඕනෑම තැනක) නව පරිශීලකයාට සහ කණ්ඩායමට ප්‍රවේශ විය හැකි බවට ඔබ සහතික විය යුතුය.
  • මා බැලූ පද්ධති වල, අපාචේ සෑම විටම ස්ථාපනය කර ඇත්තේ අපාචේ: අපාචේ (හෝ ඒ හා සමාන) භාවිතා කරන්නෙකු සහ කණ්ඩායමක් ලෙසිනි, එබැවින් එය දැනටමත් ඒ ආකාරයටම සැකසිය යුතුය.

සටහන: ස්ටැකෝවර්ෆ්ලෝ හි මා දුන් පිළිතුර මෙයයි .


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
පරිශීලකයා ලබා ගන්න (උබුන්ටු විධාන රේඛාව): echo $ APACHE_USER
Jadeye

2

අවම වශයෙන් ඩෙබියන් / උබුන්ටු පදනම් කරගත් ඩිස්ට්‍රෝස් සඳහා විකල්ප ප්‍රවේශයක් නම්, අපාචේ සිය පරිශීලකයා සහ කණ්ඩායම සැකසීමට භාවිතා කරන ක්‍රමයම භාවිතා කිරීමයි: ප්‍රභවය/etc/apache2/envvars !

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

ඔබට විසිතුරු බවක් ලබා ගැනීමට අවශ්‍ය නම්, ගොනුව සොයාගත නොහැකි නම් දෝෂ මැඩපවත්වා පෙරනිමි අගයක් ලබා දිය හැකිය:

$ apacheuser = $ (
     source / fail / etc / apache2 / envvars 2> / dev / null &&
     echo "$ APACHE_RUN_GROUP" ||
     කිසිවෙකු ප්රතිරාවය නොකරයි  
)
$ echo "$ apacheuser"
කවුරුවත් නැහැ

1

මෙහි ඉදිරිපත් කර ඇති විසඳුම් බොහොමයක් පද්ධති හෝ වින්‍යාස-විශේෂිත බව මට පෙනී ගියේය (විශේෂයෙන් බොහෝ විසඳුම් මැකෝස් මත කිසිසේත් ක්‍රියා නොකරයි) සහ ස්වල්ප දෙනෙක් අපාචේගේ වින්‍යාස ලිපිගොනු මුලින් කොතැනදැයි දැන ගැනීම පරිශීලකයා මත රඳා සිටිති. .

ඒ නිසා මම ටිකක් වංචා කර අපාචේ මට කියන්නම් මොකක්ද කියලා.

සරල විධානය apachectl -Sමඟින් අපාචේ හි ධාවන අවස්ථාවක් ගැන ඔබ දැනගත යුතු දේ ඔබට කියනු ඇති අතර එහි ප්‍රති results ල තරමක් පහසුවෙන් විග්‍රහ කළ හැකිය. මෙන්න මගේ විසඳුම, 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

<<<ක්‍රියාවලියකට grep b <<<$'a\nb\nc\n'
ස්ටැඩින්

0

මට මෙම විධානය CakePHP ලියකියවිලි වලින් හමු විය .

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මගේ නඩුවේ ප්‍රති p ලwww-data - 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)

ඔබ සතුව 100k විවෘත ලිපිගොනු කිහිපයක් සහ / හෝ තරමක් කාර්යබහුල සේවාදායකයක් ඇති විට lsof මන්දගාමී විය හැකිය.
ඩෙනිස් නොල්ටේ

0

මම දැන් භාවිතා කරන්නේ මෙයයි:

apachectl -t -D DUMP_RUN_CFG 2>/dev/null |
sed -n '/^User/s/.*name="\([^"]*\)".*/\1/p'
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.