Apache HTTP Server Version 2.4
suEXEC ����� ����ġ�� CGI�� SSI ���α��� �������� ������ ����� ID�� �ƴ� �ٸ� ����� ID�� �����ϵ��� �Ѵ�. ���� CGI�� SSI ���α��� �����ϸ� �������� ������ ����ڿ� ���� ����ڷ� �����Ѵ�.
�� ����� ������ ����ϸ� ����ڰ� ���� CGI�� SSI ���α��� �����ϰ� �����Ҷ� ���� �� �ִ� ���������� ����� ���� �� �ִ�. ���� suEXEC�� �������ϰ� �����Ǹ� ���� ������ ��ǻ�Ϳ� ���ο� ���� ������ ���� �� �ִ�. ���� setuid root ���α��� �̷� ���α��� ���� ������ �����ϴٸ� suEXEC�� ��������ʱ� �������� �ٶ���.
�����ϱ� ���� �켱 ����ġ��� �� ������ ������ ������.
���� setuid�� setgid ����� ������ ���н��� �ü���� ����Ѵٰ� �����Ѵ�. ��� ���ɾ� ���鵵 ���� ������ �Ѵ�. suEXEC�� �����ϴ� �ٸ� �÷����� ����ϴٸ� ������ �ٸ� �� �ִ�.
�ι�°, ����� ��ǻ�� ������ �⺻ ����� ������ �ͼ��ϴٰ� �����Ѵ�. ����� setuid/setgid ��ɰ� �̵��� �ý��۰� ���ȿ� ��ġ�� ���� ��� ���� ���ذ� ���Եȴ�.
����°, suEXEC �ڵ��� ������������ ������ ����Ѵٰ� �����Ѵ�. �����ڿ� ���� ��Ÿ���͵��� suEXEC�� ���õ� ��� �ڵ带 ���ɽ����� �����ϰ� �˻��ߴ�. �ڵ带 �����ϰ� �ϰ� Ȯ���� ������ �����ϱ����� ��� ���Ǹ� ����. �� �ڵ带 �����ϸ� ����ġ���� ������ ���ο� ���� ������ ���� �� �ִ�. ���� ���α��ֿ� ���� �ſ� �� �˰� �ڵ带 ���캸������ ����ġ��� �۾��� ������ �ǻ簡 ���ٸ� suEXEC �ڵ带 ���������ʱ� ������ ���Ѵ�.
��°���� ����������, ����ġ���� suEXEC�� ����ġ �⺻��ġ�� �������� �ʱ�� �����ߴ�. �ᱹ �����ڰ� ���Ǹ� ��←�� suEXEC�� �����ؾ� �Ѵ�. suEXEC�� ���� ������ �� �������� �����ڴ� �Ϲ����� ��ġ����� suEXEC�� ��ġ�� �� �ִ�. suEXEC ����� ����ϴ� �ý����� ������ å������ �����ڴ� �� ���������� �����ְ� ���캸�� �����ؾ� �Ѵ�. �̷� ���� ������ suEXEC�� ����Ҹ�ŭ �����ְ� ��ȣ�� ������� suEXEC�� ����ϵ��� ����ġ���� ���ϱ� �����̴�.
������ ����ϱ� ���ϴ°�? ����? ����. ���� ��������!
suEXEC�� �����ϰ� ��ġ�ϱ� ���� �츮�� ���ȸ��� ���� �����Ѵ�. �̸� ���� ��Ȯ�� suEXEC �ȿ����� ���� ���� �Ͼ�� �ý����� ������ ���� ������ �����ؾ� ���� �� �� ������ �� �ִ�.
suEXEC�� ����ġ �������� �θ��� setuid "wrapper" ���α��� ������� �Ѵ�. �� wrapper�� �����ڰ� �ּ����� �ٸ� userid�� �����ϵ��� ������ CGI�� SSI ���α��� HTTP ��û�� ���� �Ҹ���. �̷� ��û�� ���� ����ġ�� suEXEC wrapper���� ���α����� ���α��� ������ ����ڿ� �� ID�� �����Ѵ�.
���� wrapper�� ���� ������ ���� ������ ���и� �����Ѵ�. �� ������ �ϳ��� �����ϸ� ���α��� ���з� ��ϵǰ� ������ ���� �����Ѵ�. �������� ������ ������ ����Ѵ�:
wrapper�� �����ϴ� ����ڰ� ������ �ý����� ��������� Ȯ���Ѵ�.
wrapper�� ������ ���� �ƱԸ�Ʈ�� �־�߸� ����ȴ�. ����ġ �������� �� ������ �ȴ�. wrapper�� ������ ���� �ƱԸ�Ʈ�� �������ϸ� ��ŷ�Ǿ��ų� ����ġ�� suEXEC�� ���� ������ �ִ� ���̴�.
�� ����ڰ� wrapper�� �����ϵ��� ���Ǿ���? ���� �� �����(����ġ �����)���� �� ���α��� ������ �� �ִ�.
������ CGI�� SSI ���α��� '/'�� �����ϰų� ������
'..'�� �����°�? �̵��� ����� �� ����. ������ CGI/SSI
���α��� suEXEC ���� root (�Ʒ�
--with-suexec-docroot=DIR
����)
���� �־�� �Ѵ�.
������ ����ڰ� �����ϴ°�?
������ ���� �����ϴ°�?
���� suEXEC�� root
�� CGI/SSI
���α��� ������ �� ������ �Ѵ�.
�������� �ּ� ����� ID ���ڸ� �����Ѵ�. ���� CGI/SSI ���α��� ������ �� �ִ� userid�� �ּ�ġ�� ������ �� �ִ�. "�ý��ۿ�" ������ �����Ҷ� �����ϴ�.
���� suEXEC�� root
���� CGI/SSI
���α��� ������ �� ������ �Ѵ�.
�������� �ּ� �� ID ���ڸ� �����Ѵ�. ���� CGI/SSI ���α��� ������ �� �ִ� groupid�� �ּ�ġ�� ������ �� �ִ�. "�ý��ۿ�" ���� �����Ҷ� �����ϴ�.
�� �ܰ迡�� ���α��� setuid�� setgid ȣ���� �Ͽ� ������ ����ڿ� ���� �ȴ�. ��, �� ���ٸ���� ����ڰ� �ش�� ��� ������ �ʱ�ȭ�ȴ�.
���丮�� �������� �ʴٸ� ������ ���� �� ����. �̰����� ���丮�� ������ �� ���ٸ� ���丮�� �������� ���� ���̴�.
������ �Ϲ����� �κ��� ��û�� ��� ��û�ϴ� ���丮�� suEXEC ���� root �Ʒ� �ִ°�? UserDir�� ��û�� ��� ��û�ϴ� ���丮�� suEXEC userdir�� ������ (suEXEC ���� �ɼ� ����) ���丮 �Ʒ��� �ִ°�?
���丮�� �ٸ� ������� ����α� �������ʴ´�. ���� �����ڸ��� ���丮 ������ ������ �� �ִ�.
���������ʴٸ� ������ ���� ����.
�����ڿ� ������ CGI/SSI ���α��� �����ϱ� �������ʴ´�.
�츮�� ���α��� �ٽ� UID/GID�� �����ϱ� �������ʴ´�.
����ڰ� ������ �������ΰ�?
suEXEC�� (�������� ������) ������ ���� PATH�� ���, (�̰͵� �������� ����) ������ ȯ�溯�� ��Ͽ� ���ŵ� ������ ����� ���μ����� ȯ�溯���� �����.
���⼭ suEXEC�� ������ ������ CGI/SSI ���α��� �����Ѵ�.
�̰��� suEXEC wrapper ���ȸ��� ǥ�� �����̴�. �ټ� �����ϰ� CGI/SSI ���迡 ���ο� ������ ������, ������ ���ο� �ΰ� �Ѵܰ辿 ���ɽ����� ���������.
�� ���� ���� ���� ������ � ������ �ִ����� ������ suEXEC �������� � ���� ������ ���� �� �ִ����� ���� �� ������ "�ٽ� �ѹ� �����϶�" ���� �����϶�.
���� ����ִ� ������ �����Ѵ�.
suEXEC ���� �ɼ�
--enable-suexec
--enable-suexec
�ɼǿܿ�
--with-suexec-xxxxx
�ɼ��� �ּ��� �Ѱ�
�ʿ��ϴ�.--with-suexec-bin=PATH
suexec
���̳ʸ� ��δ� ���Ȼ� ������
������ ��ϵǾ� �Ѵ�. ��� �⺻���� �����Ϸ��� �� �ɼ���
����Ѵ�. ���� ���
--with-suexec-bin=/usr/sbin/suexec
--with-suexec-caller=UID
--with-suexec-userdir=DIR
--with-suexec-docroot=DIR
--datadir
���� "/htdocs"�� ���� ���̴�.
���� ��� "--datadir=/home/apache
"��
�����ߴٸ� suEXEC wrapper�� document root��
"/home/apache/htdocs" ���丮�� ����Ѵ�.--with-suexec-uidmin=UID
--with-suexec-gidmin=GID
--with-suexec-logfile=FILE
--logfiledir
) ��ġ�Ѵ�.--with-suexec-safepath=PATH
suEXEC wrapper�� �������ϰ� ��ġ�ϱ�
--enable-suexec
�ɼ����� suEXEC ����� �����ϰ���
��� make
���ɾ �����ϸ� suexec
���������� (����ġ�� �Բ�) �ڵ����� ���������.
������ �������� �� make install
���ɾ
�����Ͽ� ��ġ�� �� �ִ�. ���̳ʸ����� suexec
��
--sbindir
�ɼ����� ������ ���丮�� ��ġ�ȴ�.
�⺻ ��ġ�� "/usr/local/apache2/sbin/suexec"�̴�.
��ġ ������ root ������ �ʿ�����
�����϶�. wrapper�� ����� ID�� �����ϱ����ؼ��� �����ڰ�
root
�̰� ���ϸ��� setuserid �����Ʈ��
�����Ǿ� �Ѵ�.
���������� ���Ѽ���
suEXEC wrapper�� �ڽ��� ������ ����ڰ� ���� �ɼ�
--with-suexec-caller
�� ������ �ùٸ� ���������
Ȯ���� ������, �� �˻� ������ suEXEC�� ����ϴ� �ý���ȣ��
Ȥ�� ���̺귯�� �Լ��� ���۵Ǿ��� �� �ִ�. �̸� ����ϸ�
�Ϲ������� ���� �����̹Ƿ� ���� ����ġ�� �����ϴ� �츸��
suEXEC�� ������ �� �ֵ��� ���Ͻý��� ������ �����ؾ� �Ѵ�.
���� ���, �������� ������ ���� �����ϰ�:
User www
Group webgroup
suexec
�� "/usr/local/apache2/sbin/suexec"��
��ġ�Ͽ��ٸ�, ������ �����ؾ� �Ѵ�:
chgrp webgroup /usr/local/apache2/bin/suexec
chmod 4750 /usr/local/apache2/bin/suexec
���� ���� ����ġ�� �����ϴ� �츸�� suEXEC wrapper�� ������ �� �ִ�.
����ġ�� �����Ҷ� --sbindir
�ɼ����� ������
���丮���� suexec
������ (�⺻��
"/usr/local/apache2/sbin/suexec") ã�´�. ����ġ��
���������� ������ suEXEC wrapper�� �߰��ϸ� ���� �α�(error
log)�� ������ ���� ����Ѵ�:
[notice] suEXEC mechanism enabled (wrapper: /path/to/suexec)
���� �����߿� �̷� ������ ���ٸ� ������ ����� ��ҿ��� wrapper ���α��� ã�� ���߰ų�, ���������� setuid root�� ��ġ�����ʾұ� ������ ���̴�.
ó������ suEXEC ����� ����ϰ� �Ͱ� �̹� ����ġ ������ �������̶��, ����ġ�� ���̰� �ٽ� �����ؾ� �Ѵ�. ������ HUP�̳� USR1 �ñ׳η� ������ϴ� �����δ� ������� �ʴ�.
suEXEC�� �Ȼ���Ϸ��� suexec
������ ������
����ġ�� ���̰� ������ؾ� �Ѵ�.
CGI ���α� ��û�� ��� SuexecUserGroup
���þ
����� ����ȣ��Ʈ�� ��û�� �Ͽ��ų� mod_userdir
��
��û�� ó���ϴ� ��쿡�� suEXEC wrapper�� ȣ���Ѵ�.
����ȣ��Ʈ:
suEXEC wrapper��
����ϴ� �Ѱ��� ����� VirtualHost
���ǿ� SuexecUserGroup
���þ
����ϴ� ���̴�. �� ���þ �ּ��� ����� ID�� �ٸ���
�����ϸ� CGI �ڿ��� ��� ��û�� <VirtualHost>
����
������ User�� Group���� ����ȴ�. ��
���þ���� <VirtualHost>
�� ������ �ּ���
userid�� ����Ѵ�.
����� ���丮:
mod_userdir
�� ��û�� ó���Ѵٸ� suEXEC
wrapper�� ȣ���Ͽ�, ��û�� ����� ���丮�� �ش��ϴ� �����
ID�� CGI ���α��� �����Ѵ�. �� ����� �����Ϸ��� �����
ID�� CGI�� ������ �� �ְ� ��ũ��Ʈ�� ���� ����
�˻� ���� �����ؾ� �Ѵ�. ����
�ɼ� --with-suexec-userdir
�� �����϶�.
suEXEC wrapper�� �α� ������ ������ �ٷ�
--with-suexec-logfile
�ɼ����� ������ ���Ͽ�
����. wrapper�� �ùٷ� �����ϰ� ��ġ�ߴٸ� ��� �߸��Ǿ�����
�� �α����Ͽ� ������ error_log�� �������.
����! �� ������ �������� ���� �� �ִ�. ����ġ���� �¶��� �������� �� ������ �ֽ����� �����϶�.
wrapper�� ���� ������ �����ϴ� ��� ��̷ο� ���� �ִ�. suEXEC�� ���õ� "����"�� �����ϱ� ���� �̵��� ���캸�� �ٶ���.
���Ȱ� ȿ������ ���� ��� suEXEC ��û�� ����ȣ��Ʈ�� ��� �ֻ��� document root Ȥ�� userdir ��û�� ��� �ֻ��� ���� document root �ȿ��� ���ؾ� �Ѵ�. ���� ���, ����ȣ��Ʈ �װ��� �����ߴٸ� ����ȣ��Ʈ���� suEXEC�� �̿��ϱ����� ����ȣ��Ʈ�� document root�� �� ����ġ ���� �������� �ۿ� ������ �ʿ䰡 �ִ�. (������ ������.)
�����ϸ� ������ �� �ִ�. ��� �����ϴ� ��� ��ΰ� ���� �� �ִ� ���丮���� Ȯ���϶�. �� �������� �������� �װ��� �ִ� Ʈ���̸� �����ϱ� ������ ���� ���̴�.
�ݺ��ؼ� ��������, ����� ������ �ϴ��� �� �õ��Ѵٸ� ū ������ ���� �� �ִ�. � ��쿡�� ������������.