<-
Apache > HTTP Server > �ĵ� > �汾2.2
���� ��л | �������� | ��ƪ���ߣ��𲽹� | ��ҳ�����£�2006��1��6�� | ��ȡ���°汾

suEXEC֧��

suEXEC����ʹ��Apache����ʹ�������web���������û���ͬ���û����������CGI��SSI���򡣶�ͨ������£�CGI����SSI����ִ��ʱʹ�ú�web��������ͬ���û���ݡ�

��ȷ���ø����ԣ����Լ��ٺܶ���Ϊ�ṩ�û�ִ��˽��CGI����SSI�����������İ�ȫ���ա���������ò����Ļ������������ܶ����⣬ʹ��ļ������������İ�ȫ©���������Թ��� setuid root �����Լ����ܵ��µİ�ȫ���ⲻ��Ϥ�Ļ�������ǿ�ҽ����㲻Ҫʹ��suEXEC��

top

��ʼ֮ǰ

�����ǿ�ʼ��������֮ǰ�����������Apache�������Լ����ĵ������ļ��衣

���ȣ����Ǽ���������ʹ����UNIX����ϵͳ��ֻ���������ϵͳ�ž���setuid��setgid������е����������е�����Ҳ����ˡ������IJ���ϵͳƽ̨����ʹҲ֧��suEXEC�������������ÿ��ܺ����������IJ�����ͬ��

�ڶ������Ǽ�������Ϥ������İ�ȫ�͹���������һЩ����������ϵ�������ȷ���setuid/setgid�����Լ������ϵͳ���ܴ����ĸ���Ӱ��Ͳ�ͬ�İ�ȫ�ȼ���

���������Ǽ���������ʹ��Դ����δ���޸ĵ�suEXEC�汾������suEXEC�Ĵ��붼���������ߵ���ϸ���鲢�����������ԡ�����Щ�����У����Dz�ȡ�˸���Ԥ����ʩ��ʹ֮�򵥡���׳����ȫ���޸���Щ������ܻᵼ��Ԥ��֮�������Ͱ�ȫ��������������ǿ�ҵؽ�������Ҫ�޸����룬�����㾫ͨ��ȫ��̣���Ը���Apache�����鹲��ɹ���

���ģ�Ҳ�����һ�㣬Apache�������Ѿ�����Ĭ�ϲ���װsuEXEC��suEXEC��������Ҫ����Աϸ�¹�ע����ϸ�ڡ�����ϸ���������suEXEC�ĸ������÷����󣬹���ԱӦ��ʹ�ñ�׼�İ�װ��������װsuEXEC�����õIJ���Ӧ�þ�����ϸ���ã��Ա�֤ϵͳ�İ�ȫ���С�Apache������ϣ��ͨ������suEXEC�İ�װ����ʹ��Щ����ϸ����⣬���������������Ĺ���Ա��ʹ�á�

�㻹��ʹ��suEXEC�𣿻��룿�ܺã������ǿ�ʼ�ɣ�

top

suEXEC�İ�ȫģ��

�����ǿ�ʼ���úͰ�װsuEXEC֮ǰ��������Ҫ������һ�����İ�ȫģ�͡�����������ܸ��õ����suEXEC�ڲ���������Щʲô���飬�Լ���Щȷ��ϵͳ��ȫ��Ԥ����ʩ��

suEXEC�ǻ���һ��setuid��"��װ"���򣬸ó�����"��"Apache web���������á���һ��HTTP������ǹ���Աָ���ġ��Բ�ͬ��"��"�������û�������е�CGI��SSI����ʱ���÷�װ���򽫱����á���������������ʱ��Apache��������ij���������UID��GID�ṩ��suEXEC��װ����

��װ��(wrapper)ͨ�����������������IJ��裬��������װ�ijɹ���ʧ�ܣ����������һ������Ϊ�٣����򽫰Ѵ��������¼����־�У��˳������ش�����Ϣ���������ִ�С�(������˵��"����"��ָ"CGI/SSI����")

  1. �û�ʹ���˺Ϸ���ϵͳ�˺���ִ�з�װ��������

    ȷ�����з�װ������һ��ϵͳ��ȷʵ���ڵ��û���

  2. ��װ��������ʱ��ʹ�õIJ���������ȷ��

    ��װ������ʹ������ȷ�����IJ�������ʱ�Ż�ִ�С�Apache web������֪����ȷ�IJ�����ʽ��ʲô�������װ��û���յ���ȷ�����IJ�������˵��Ҫô���ڿ͹�����ҪôApache�����ƴ�����suEXEC�IJ��ֳ������⡣

  3. ����Ϸ����û����������з�װ����

    ����û��ǿ������з�װ�����û��𣿽���һ���û�(Apache�û�)���������з�װ����

  4. Ŀ��CGI/SSI�����в���ȫ�ķּ�·��������

    Ŀ��CGI/SSI���������"/"��ͷ������".."����·����������Щ���Dz�����ģ�����Ŀ��������λ��suEXEC���ĵ���Ŀ¼�¡�(�μ�����ģ�--with-suexec-docroot=DIR)

  5. Ŀ�����������û����Ϸ���

    Ŀ�����������û���������

  6. Ŀ�����������û���Ϸ���

    Ŀ�����������û��������

  7. Ŀ�����������û������dz����û���

    Ŀǰ��suEXEC������rootִ��CGI/SSI����

  8. Ŀ����������û���UID������СUIDֵ��

    ��СUIDֵ����������ָ���ġ������ָ������ִ��CGI/SSI�������СUIDֵ���������Ա�֤�����ϵͳ�˺ų�ͻ��

  9. Ŀ�����������û��鲻�dz����û�����

    Ŀǰ��suEXEC������root���û�ִ��CGI/SSI����

  10. Ŀ����������û����GID������СGIDֵ��

    ��СGIDֵ����������ָ���ġ������ָ������ִ��CGI/SSI�������СGIDֵ���������Ա�֤�����ϵͳ�˺ų�ͻ��

  11. ��װ���ܹ��ɹ��ر�ΪĿ���û�������

    ������dz����ΪĿ���û�����Ĺؼ������ˡ�������ͨ������setuid��setgid��ʵ�ֵġ���������б��У��͸��û���ص���������Ϣ��������ʼ����

  12. �ܹ��л����������ڵ�Ŀ¼��

    ��������ڣ����޷����������ļ�����������л�һ��Ҳ��ʾĿ¼�����ڡ�

  13. ���Ŀ¼��Apache������ռ�����

    ����Ƕ��ڷ�������һ��������ô�����Ŀ¼����suEXEC�ĸ��ĵ�Ŀ¼��������������һ���û�Ŀ¼����ô��Ŀ¼����suEXEC���õĸ��û��ĸ�Ŀ¼����(�μ���suEXEC����ѡ��)

  14. ��Ŀ¼�����������û���д��Ȩ����

    ���Dz����Ŀ¼���Ÿ������ˣ�ֻ�������ſ��Ըı��Ŀ¼�е����ݡ�

  15. Ŀ��CGI/SSI���������

    ��������ڣ���Ȼ�޷��������С�

  16. Ŀ��CGI/SSI���򲻿��Ա������û���д��

    ���Dz�������������޸ij����Ȩ�ޡ�

  17. Ŀ�������δ��setuid����setgid ��

    ���Dz���Ҫִ�еij����ٴθı�UID/GID��

  18. Ŀ���û������������û�������ͬ��

    �û�������ļ���������

  19. ���ǿ��Գɹ�������̵Ļ�����������֤�����İ�ȫ����

    suEXECͨ������һ����ȫ�Ŀ�ִ��·��(�������ж���)������ý��̵Ļ���������ͬʱֻ�����ڰ�ȫ���������б�(�����ж���)�����г��Ļ���������

  20. ���Գɹ��ı�ΪĿ�����ִ����

    �������suEXEC����������ʼ����Ŀ�����ĵط��ˡ�

����suEXEC��װ����׼������ʽ�İ�ȫģ�͡�����Щ�ϸ񣬲�ǿ����CGI/SSI����ϵ����ơ���������ϸ���ǹ���ȫ֮��һ������չ������ģ�͡�

������ڸð�ȫģ����θ��ݷ�����������������ʹ���ߵ�Ȩ�ޣ��Լ�ǡ����suEXEC��װ�����ܹ�����İ�ȫ��������μ�����;������֡�

top

���úͰ�װsuEXEC

�������ǵ�̽�� ...

suEXEC����ѡ��

--enable-suexec
��ѡ������Ĭ�Ͻ�ֹ��suEXEC���ܡ���ͬʱ�����ṩһ�� --with-suexec-xxxxx ѡ���ʹAPACIʹ��suEXEC��������������
--with-suexec-bin=PATH
���ڰ�ȫ���ǣ�suexec�����Ƴ����·�����������ѡ��ָ����Ӳ�����ڷ���������磺--with-suexec-bin=/usr/sbin/suexec
--with-suexec-caller=UID
Apache����ʱ���õ�UID������Ψһ����ִ�г�����û���
--with-suexec-userdir=DIR
����suEXEC������ʵ��û�����Ŀ¼�µ���Ŀ¼��suEXEC�����û����ִ�����Ŀ¼�µ����п�ִ�г���������Щ���������"��ȫ����"�����ʹ��"�򵥵�"UserDirָ��(������"*")����˴�Ӧ�ñ�����Ϊ��ͬ��ֵ����UserDirָ����ָ���Ŀ¼��"passwd"�ļ���ָ�����û�����Ŀ¼��ͬʱ��suEXEC������������������Ĭ��ֵ��"public_html"�������֧�ֵ�����������ÿ���û��в�ͬ��UserDir ����Ӧ�ð����Ǽ�����ͬһ����Ŀ¼�£������������ָ�������Ŀ¼��������ò�����"~userdir"�µ�cgi������Ч��
--with-suexec-docroot=DIR
����Apache��DocumentRoot�����dz�UserDir��suEXECΨһ����ʹ�õ�Ŀ¼����Ĭ��Ŀ¼�� --datadir ֵ��ָ���Ĵ���"/htdocs"�ĺ�׺��Ŀ¼�����磺���������"--datadir=/home/apache"����ô"/home/apache/htdocs"Ŀ¼����ΪsuEXEC���������ĵ���Ŀ¼��
--with-suexec-uidmin=UID
������suEXECĿ���û������UID���Դ����ϵͳ��һ����500��100��Ĭ��ֵ��100
--with-suexec-gidmin=GID
������suEXECĿ��������GID���Դ����ϵͳ����100��Ĭ��ֵҲ��100��
--with-suexec-logfile=FILE
��������suEXEC���ڼ�¼�����������Լ������Ĵ������־�ļ���(����˺��Ŵ������)��Ĭ���ļ�����"suexec_log"����λ�ڱ�׼����־�ļ�Ŀ¼��(--logfiledir)��
--with-suexec-safepath=PATH
���崫��CGI�����һ����ȫ��PATH����������ֵ��Ĭ��ֵ��"/usr/local/bin:/usr/bin:/bin"

����Ͱ�װsuEXEC������
���� --enable-suexec ����suEXEC���ܣ���ôִ��make����ʱ(Apache�Դ���)suexec�������ļ��ͻᱻ�Զ��������������������Ϻ�ִ�� make install ������а�װʱ��suexec�ļ�������װ�� --sbindir ѡ��ָ����Ŀ¼�У�Ĭ��Ϊ"/usr/local/apache2/sbin/suexec"��
ע�⣬��װ������ҪrootȨ����Ϊ��ʹsuEXEC��������������UID���������߱���Ϊroot �������ļ�ģʽ�е�ִ��λ��������Ϊ1(����ִ��)��

�������Ȩ��
��ȻsuEXEC��װ������ȷ�����ĵ����߾�������ѡ�� --with-suexec-caller ��ָ�����û����������Ǵ��������Ŀ����ԣ�һ��ϵͳ���߿���suEXECִ���û���ݼ��֮ǰ�������������ʹ���һ�������õ�©����ͨ�������������������Ѱ취�ǣ�ʹ���ļ�ϵ��ͳȨ����ȷ��ֻ��Apache���û����еij������ִ��suEXEC��

������web-server�ǰ���������ʾ�������õģ�

User www
Group webgroup

����suexec����װ��"/usr/local/apache2/sbin/suexec"Ŀ¼����Ӧ�������������

chgrp webgroup /usr/local/apache2/bin/suexec
chmod 4750 /usr/local/apache2/bin/suexec

�⽫ȷ��ֻ��Apache���û����еij������ִ��suEXEC��

top

���úͽ���suEXEC

Apache�����������У����� --sbindir ѡ��ָ����Ŀ¼(Ĭ��Ϊ��"/usr/local/apache/sbin/suexec")��Ѱ��suexec�����Apache�ҵ���һ����ȷ���õ�suEXEC�����������ڴ�����־�м�¼������Ϣ��

[notice] suEXEC mechanism enabled (wrapper: /path/to/suexec)

���������������û�������Ϣ����ô�ܿ����Ƿ�����û�ҵ��ʵ��Ĵ����������������ִ�г���û�а�װsetuid root��

���Ҫ��Apache���������й����д�suEXEC���ܣ������ֹͣ����������Apache����һ���򵥵�HUP��USR1�ź������������Dz����ġ�

���Ҫ�ر�suEXEC���ܣ�Ӧ��ɾ��suexec�ļ�����ֹͣ����������Apache��

top

ʹ��suEXEC

��CGI������������������������²Ż����suEXEC��װ����һ����SuexecUserGroupָ������������������󣬻��߸�������mod_userdirģ�鴦��

����������
ʹ��suEXEC�������ķ���֮һ����VirtualHost������ʹ��SuexecUserGroupָ�ͨ���������ָ����ȷ����ͬ������������UID�����ж�CGI��Դ��������<VirtualHost>�������User��Group���ִ�С����<VirtualHost>��û�����ָ���������������UID���ִ�С�

�û�Ŀ¼��
��mod_userdir�������������suEXEC�������Ա�������û�Ŀ¼������UIDִ��CGI���򡣴˹��ܵ�ΨһҪ���ǣ����û�������CGIִ��Ȩ�ޣ�������ű�����������ȫ�����Ҫ�󡣲μ� --with-suexec-userdir ����ѡ����

top

����suEXEC

����������suEXEC���������� --with-suexec-logfile ѡ����ָ������־�ļ��м�¼��Ϣ�������о����úͰ�װ�����������Բ鿴�����־�Լ��������Ĵ�����־��

top

����Jabberwock������;���

ע�⣡�ⲿ���ĵ����ܻ�û����ɡ��鿴���µ��޶��汾���뵽Apache������������ĵ���

�������й����ƺͷ�������װ�ļ���ע��������ύ�κι���suEXEC��"bugs"��ǰ������ϸ�Ķ���