mirror of
https://github.com/apache/httpd.git
synced 2025-07-29 12:37:06 +00:00

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1874515 13f79535-47bb-0310-9956-ffa450edef68
558 lines
25 KiB
XML
558 lines
25 KiB
XML
<?xml version="1.0" encoding="UTF-8" ?>
|
||
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
|
||
<?xml-stylesheet type="text/xsl" href="./style/manual.tr.xsl"?>
|
||
<!-- English Revision: 1038591:1874148 (outdated) -->
|
||
<!-- =====================================================
|
||
Translated by: Nilgün Belma Bugüner <nilgun belgeler.org>
|
||
Reviewed by: Orhan Berent <berent belgeler.org>
|
||
========================================================== -->
|
||
|
||
<!--
|
||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||
contributor license agreements. See the NOTICE file distributed with
|
||
this work for additional information regarding copyright ownership.
|
||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||
(the "License"); you may not use this file except in compliance with
|
||
the License. You may obtain a copy of the License at
|
||
|
||
http://www.apache.org/licenses/LICENSE-2.0
|
||
|
||
Unless required by applicable law or agreed to in writing, software
|
||
distributed under the License is distributed on an "AS IS" BASIS,
|
||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
See the License for the specific language governing permissions and
|
||
limitations under the License.
|
||
-->
|
||
|
||
<manualpage metafile="suexec.xml.meta">
|
||
|
||
<title>SuEXEC Desteği</title>
|
||
|
||
<summary>
|
||
<p><strong>SuEXEC</strong> özelliği, Apache HTTP Sunucusu kullanıcılarına
|
||
<strong>CGI</strong> ve <strong>SSI</strong> programlarını sunucunun
|
||
aidiyetinde çalıştığı kullanıcıdan farklı bir kullanıcının aidiyetinde
|
||
çalıştırma olanağı verir. Normalde, <strong>CGI</strong> ve
|
||
<strong>SSI</strong> programlarını çalıştıranla sunucuyu çalıştıran
|
||
aynı kullanıcıdır.</p>
|
||
|
||
<p>Gerektiği gibi kullanıldığında bu özellik, kullanıcılara
|
||
<strong>CGI</strong> ve <strong>SSI</strong> programlarını çalıştırma
|
||
ve geliştirmeye izin vermekle ortaya çıkan güvenlik risklerini azaltır.
|
||
Bununla birlikte, <strong>suEXEC</strong> gerektiği gibi
|
||
yapılandırılmadığı takdirde bazı sorunlara yol açabilir ve bilgisayar
|
||
güvenliğinizde yeni delikler ortaya çıkmasına sebep olabilir.
|
||
Güvenlikle ilgili mevcut sorunlarla başa çıkmada ve <em>setuid
|
||
root</em> programları yönetmekte bilgi ve deneyim sahibi değilseniz
|
||
<strong>suEXEC</strong> kullanmayı kesinlikle düşünmemenizi
|
||
öneririz.</p>
|
||
</summary>
|
||
|
||
<section id="before"><title>Başlamadan önce</title>
|
||
|
||
<p>Belgeye balıklama dalmadan önce, suexec'i kullanacağınız ortam ve
|
||
kendiniz hakkında yapılmış çeşitli kabuller hakkında bilgi sahibi
|
||
olmalısınız.</p>
|
||
|
||
<p>Öncelikle, üzerinde <strong>setuid</strong> va <strong>setgid</strong>
|
||
işlemlerinin yapılabildiği Unix türevi bir işletim sistemi
|
||
kullandığınızı varsayıyoruz. Tüm komut örnekleri buna dayanarak
|
||
verilmiştir. Bu desteğe sahip başka platformlar varsa onlardaki
|
||
yapılandırma burada anlattığımız yapılandırmadan farklı olabilir.</p>
|
||
|
||
<p>İkinci olarak, bilgisayarınızın güvenliği ve yönetimi ile ilgili bazı
|
||
temel kavramları bildiğinizi kabul ediyoruz. Buna
|
||
<strong>setuid/setgid</strong> işlemlerinin sisteminiz ve güvenlik
|
||
seviyesi üzerindeki etkilerini bilmek dahildir.</p>
|
||
|
||
<p>Üçüncü olarak, <strong>suEXEC</strong> kodunun
|
||
<strong>değiştirilmemiş</strong> bir sürümünü kullandığınızı
|
||
varsayıyoruz. Tüm suEXEC kodu, geliştiricilerin yanında sayısız beta
|
||
kullanıcısı tarafından dikkatle incelenmiş ve denenmiştir. Kodların hem
|
||
basit hem de sağlam bir şekilde güvenli olması için gerekli tüm
|
||
önlemler alınmıştır. Bu kodun değiştirilmesi beklenmedik sorunlara ve
|
||
yeni güvenlik risklerine yol açabilir. Özellikle güvenlikle ilgili
|
||
programlarda deneyimli değilseniz suEXEC kodunda kesinlikle bir
|
||
değişiklik yapmamalısınız. Değişiklik yaparsanız kodlarınızı gözden
|
||
geçirmek ve tartışmak üzere Apache HTTP Sunucusu geliştirme ekibi ile
|
||
paylaşmanızı öneririz.</p>
|
||
|
||
<p>Dördüncü ve son olarak, Apache HTTP Sunucusu geliştirme ekibinin
|
||
suEXEC’i öntanımlı httpd kurulumunun bir parçası yapmama kararından
|
||
bahsetmek gerekir. Bunun sonucu olarak, suEXEC yapılandırması sistem
|
||
yöneticisinin ayrıntılı bir incelemesini gerektirir. Gerekli incelemeden
|
||
sonra yönetici tarafından suEXEC yapılandırma seçeneklerine karar
|
||
verilip, normal yollardan sisteme kurulumu yapılır. Bu seçeneklerin
|
||
belirlenmesi, suEXEC işlevselliğinin kullanımı sırasında sistem
|
||
güvenliğini gerektiği gibi sağlamak için yönetici tarafından dikkatle
|
||
saptanmayı gerektirir. Bu sürecin ayrıntılarının yöneticiye bırakılma
|
||
sebebi, suEXEC kurulumunu, suEXEC’i dikkatle kullanacak yeterliliğe sahip
|
||
olanlarla sınırlama beklentimizdir.</p>
|
||
|
||
<p>Hala bizimle misiniz? Evet mi? Pekala, o halde devam!</p>
|
||
</section>
|
||
|
||
<section id="model"><title>SuEXEC Güvenlik Modeli</title>
|
||
|
||
<p>SuEXEC yapılandırması ve kurulumuna girişmeden önce biraz da
|
||
gerçekleşmesini istediğiniz güvenlik modelinin ayrıntıları üzerinde
|
||
duralım. Böylece, suEXEC’in içinde olup bitenleri ve sisteminizin
|
||
güvenliği için alınacak önlemleri daha iyi anlayabilirsiniz.</p>
|
||
|
||
<p><strong>suEXEC</strong> işlevselliği, Apache HTTP Sunucusu tarafından
|
||
gerektiği takdirde artalanda çalıştırılan bir setuid programa dayanır.
|
||
Bu program, bir CGI veya SSI betiğine bir HTTP isteği yapıldığı zaman,
|
||
bu betiği, yöneticinin ana sunucunun aidiyetinde çalıştığı kullanıcıdan
|
||
farklı olarak seçtiği bir kullanıcının aidiyetinde çalıştırmak için
|
||
çağrılır. Böyle bir istek geldiğinde, Apache httpd artalandaki setuid
|
||
programına, HTTP isteği yapılan programın ismiyle beraber aidiyetinde
|
||
çalışacağı kullanıcı ve grup kimliklerini de aktarır.</p>
|
||
|
||
<p>Artalanda çalıştırılan setuid program başarıyı ve başarısızlığı
|
||
aşağıdaki süreci izleyerek saptar. Bunlardan herhangi biri başarısız
|
||
olursa program başarısızlık durumunu günlüğe kaydeder ve bir hata
|
||
vererek çıkar. Aksi takdirde çalışmaya devam eder.</p>
|
||
|
||
<ol>
|
||
<li>
|
||
<strong>Setuid programı çalıştıran kullanıcı sistemin geçerli
|
||
kullanıcılarından biri mi?</strong>
|
||
|
||
<p class="indent">Bu, setuid programı çalıştıran kullanıcının
|
||
sistemin gerçek bir kullanıcısı olduğunudan emin olunmasını sağlar.
|
||
</p>
|
||
</li>
|
||
|
||
<li>
|
||
<strong>Setuid program yeterli sayıda argümanla çağrılmış mı?
|
||
</strong>
|
||
|
||
<p class="indent">Apache HTTP Sunucusunun artalanda çağırdığı
|
||
setuid program ancak yeterli sayıda argüman sağlandığı takdirde
|
||
çalışacaktır. Argümanların sayısını ve sırasını Apache HTTP sunucusu
|
||
bilir. Eğer setuid program yeterli sayıda argümanla çağrılmamışsa
|
||
ya kendisinde bir değişiklik yapılmıştır ya da kurulu Apache httpd
|
||
çalıştırılabilirinin suEXEC ile ilgili kısmında yanlış giden bir
|
||
şeyler vardır.</p>
|
||
</li>
|
||
|
||
<li>
|
||
<strong>Bu geçerli kullanıcının bu setuid programı çalıştırma
|
||
yetkisi var mı?</strong>
|
||
|
||
<p class="indent">Sadece tek bir kullanıcı (Apache’nin aidiyetinde
|
||
çalıştığı kullanıcı) bu programı çalıştırmaya yetkilidir.</p>
|
||
</li>
|
||
|
||
<li>
|
||
<strong>Hedef CGI veya SSI programı hiyerarşik olarak güvenliği
|
||
bozacak bir dosya yolu üzerinde mi?</strong>
|
||
|
||
<p class="indent">Hedef CGI veya SSI programının dosya yolu '/' veya
|
||
'..' ile başlıyor mu? Buna izin verilmez. Hedef CGI veya SSI
|
||
programı suEXEC’in belge kök dizininde yer almalıdır (aşağıda
|
||
<code>--with-suexec-docroot=<em>DİZİN</em></code> seçeneğine
|
||
bakınız).</p>
|
||
</li>
|
||
|
||
<li>
|
||
<strong>Hedef kullanıcı ismi geçerli mi?</strong>
|
||
|
||
<p class="indent">Hedef kullanıcı mevcut mu?</p>
|
||
</li>
|
||
|
||
<li>
|
||
<strong>Hedef grup ismi geçerli mi?</strong>
|
||
|
||
<p class="indent">Hedef grup mevcut mu?</p>
|
||
</li>
|
||
|
||
<li>
|
||
<strong>Hedef kullanıcı <code>root</code> değil, değil mi?</strong>
|
||
|
||
<p class="indent">Mevcut durumda, <code>root</code> kullanıcısının
|
||
CGI/SSI programlarını çalıştırmasına izin verilmemektedir.</p>
|
||
</li>
|
||
|
||
<li>
|
||
<strong>Hedef kullanıcı kimliği asgari kullanıcı numarasından
|
||
<em>BÜYÜK</em> mü?</strong>
|
||
|
||
<p class="indent">Asgari kullanıcı numarası yapılandırma sırasında
|
||
belirtilir. Böylece CGI/SSI programlarını çalıştırmasına izin
|
||
verilecek olası en düşük kullanıcı numarasını belirlemeniz mümkün
|
||
kılınmıştır. Bu bazı “sistem” hesaplarını devreden çıkarmak için
|
||
yararlıdır.</p>
|
||
</li>
|
||
|
||
<li>
|
||
<strong>Hedef grup <code>root</code> değil, değil mi?</strong>
|
||
|
||
<p class="indent"><code>root</code> grubunun CGI/SSI
|
||
programlarını çalıştırmasına izin verilmemektedir.</p>
|
||
</li>
|
||
|
||
<li>
|
||
<strong>Hedef grup numarası asgari grup numarasından
|
||
<em>BÜYÜK</em> mü?</strong>
|
||
|
||
<p class="indent">Asgari grup numarası yapılandırma sırasında
|
||
belirtilir. Böylece CGI/SSI programlarını çalıştırmasına izin
|
||
verilecek olası en düşük grup numarasını belirlemeniz mümkün
|
||
kılınmıştır. Bu bazı “sistem” hesaplarını devreden çıkarmak için
|
||
yararlıdır.</p>
|
||
</li>
|
||
|
||
<li>
|
||
<strong>Apache’nin artalanda çağırdığı setuid program hedef
|
||
kullanıcı ve grubun aidiyetine geçebildi mi?</strong>
|
||
|
||
<p class="indent">Bu noktadan itibaren program setuid ve setgid
|
||
çağrıları üzerinden hedef kullanıcı ve grubun aidiyetine geçer.
|
||
Erişim grubu listesi de ayrıca kullanıcının üyesi olduğu tüm
|
||
gruplara genişletilir.</p>
|
||
</li>
|
||
|
||
<li>
|
||
<strong>Hedef CGI/SSI programının bulunduğu dizine geçebildik mi?
|
||
</strong>
|
||
|
||
<p class="indent">Dizin mevcut değilse dosyaları da içeremez. Hedef
|
||
dizine geçemiyorsak bu, dizin mevcut olmadığından olabilir.</p>
|
||
</li>
|
||
|
||
<li>
|
||
<strong>Hedef dizin Apache için izin verilen yerlerden biri mi?
|
||
</strong>
|
||
|
||
<p class="indent">İstek sunucunun normal bir bölümü için yapılmış
|
||
olsa da istenen dizin acaba suEXEC’in belge kök dizini altında mı?
|
||
Yani, istenen dizin, suEXEC’in aidiyetinde çalıştığı kullanıcının
|
||
ev dizini altında bulunan, <directive module="mod_userdir"
|
||
>UserDir</directive> ile belirtilen dizinin altında mı? (<a
|
||
href="#install">suEXEC’in yapılandırma seçeneklerine</a>
|
||
bakınız).</p>
|
||
</li>
|
||
|
||
<li>
|
||
<strong>Hedef dizin başkaları tarafından yazılabilen bir dizin değil,
|
||
değil mi?</strong>
|
||
|
||
<p class="indent">Başkaları da yazabilsin diye bir dizin açmıyoruz;
|
||
dizin içeriğini sadece sahibi değiştirebilmelidir.</p>
|
||
</li>
|
||
|
||
<li>
|
||
<strong>Hedef CGI/SSI programı mevcut mu?</strong>
|
||
|
||
<p class="indent">Mevcut değilse çalıştırılamaz.</p>
|
||
</li>
|
||
|
||
<li>
|
||
<strong>Hedef CGI/SSI program dosyasına başkaları tarafından
|
||
yazılamıyor, değil mi?</strong>
|
||
|
||
<p class="indent">Hedef CGI/SSI programının dosyasına sahibinden
|
||
başka kimsenin bir şeyler yazmasını istemeyiz.</p>
|
||
</li>
|
||
|
||
<li>
|
||
<strong>Hedef CGI/SSI program setuid veya setgid <em>değil</em>,
|
||
değil mi?</strong>
|
||
|
||
<p class="indent">UID/GID‘i tekrar değiştirecek programlar
|
||
çalıştırmayı istemeyiz.</p>
|
||
</li>
|
||
|
||
<li>
|
||
<strong>Hedef kullanıcı/grup, programın kullanıcı/grubu ile aynı mı?
|
||
</strong>
|
||
|
||
<p class="indent">Hedef kullanıcı dosyanın sahibi mi?</p>
|
||
</li>
|
||
|
||
<li>
|
||
<strong>İşlemlerin güvenle yapılabilmesi için süreç ortamını
|
||
başarıyla temizleyebildik mi?</strong>
|
||
|
||
<p class="indent">suEXEC, sürecin çalışacağı ortama güvenli bir
|
||
program çalıştırma yolu sağlamaktan başka, yapılandırma sırasında
|
||
oluşturulan güvenli ortam değişkenleri listesinde isimleri bulunan
|
||
ortam değişkenlerinden başkasını aktarmayacaktır.</p>
|
||
</li>
|
||
|
||
<li>
|
||
<strong>Hedef CGI/SSI programı haline gelip çalışabildik mi?</strong>
|
||
|
||
<p class="indent">Burası suEXEC’in bitip CGI/SSI programının
|
||
başladığı yerdir.</p>
|
||
</li>
|
||
</ol>
|
||
|
||
<p>Bu süreç suEXEC güvenlik modelinin standart işlemlerini oluşturur.
|
||
Biraz zorlayıcı ve CGI/SSI tasarımına yeni kurallar ve sınırlamalar
|
||
getiriyor olsa da düşünülen güvenliği adım adım sağlayacak şekilde
|
||
tasarlanmıştır.</p>
|
||
|
||
<p>Düzgün bir suEXEC yapılandırmasının hangi güvenlik risklerinden
|
||
kurtulmayı sağladığı ve bu güvenlik modelinin sunucu yapılandırmasıyla
|
||
ilgili sorumluluklarınızı nasıl sınırlayabildiği hakkında daha
|
||
ayrıntılı bilgi edinmek için bu belgenin <a
|
||
href="#jabberwock">"Uyarılar ve Örnekler"</a> bölümüne bakınız.</p>
|
||
</section>
|
||
|
||
<section id="install"><title>suEXEC’in Yapılandırılması ve Kurulumu</title>
|
||
|
||
<p>Eğlence başlıyor.</p>
|
||
|
||
<p><strong>suEXEC yapılandırma seçenekleri</strong><br />
|
||
</p>
|
||
|
||
<dl>
|
||
<dt><code>--enable-suexec</code></dt>
|
||
|
||
<dd>Bu seçenek, hiçbir zaman öntanımlı olarak kurulmayan ve
|
||
etkinleştirilmeyen suEXEC özelliğini etkin kılar. suEXEC özelliğini
|
||
kullanma isteğinizi Apache’nin kabul edebilmesi için
|
||
<code>--enable-suexec</code> seçeneğinin yanında en azından bir tane
|
||
de <code>--with-suexec-xxxxx</code> seçeneği belirtilmiş
|
||
olmalıdır.</dd>
|
||
|
||
<dt><code>--with-suexec-bin=<em>YOL</em></code></dt>
|
||
|
||
<dd>Güvenlik sebebiyle <code>suexec</code> çalıştırılabilirinin
|
||
bulunduğu yer sunucu koduna yazılır. Bu seçenekle öntanımlı yol
|
||
değiştirilmiş olur. Örnek:<br />
|
||
<code>--with-suexec-bin=/usr/sbin/suexec</code></dd>
|
||
|
||
<dt><code>--with-suexec-caller=<em>KULLANICI</em></code></dt>
|
||
|
||
<dd>Normalde httpd’nin aidiyetinde çalıştığı <a
|
||
href="mod/mpm_common.html#user">kullanıcı</a>dır. Bu, suEXEC
|
||
çalıştırıcısını çalıştırmasına izin verilen tek kullanıcıdır.</dd>
|
||
|
||
<dt><code>--with-suexec-userdir=<em>DİZİN</em></code></dt>
|
||
|
||
<dd><p>Kullanıcıların ev dizinleri altında suEXEC’in erişmesine izin
|
||
verilen alt dizinin yerini tanımlar. Bu dizin altında suEXEC
|
||
kullanıcısı tarafından çalıştırılacak tüm programlar "güvenilir"
|
||
olmalıdır. Eğer “basit” bir <directive module="mod_userdir"
|
||
>UserDir</directive> yönergesi kullanıyorsanız ( içinde “*”
|
||
bulunmayan), bunun aynı dizin olması gerekir. Eğer burada belirtilen
|
||
dizin, <code>passwd</code> dosyasında kullanıcı için belirtilmiş
|
||
dizinin altında <directive module="mod_userdir">UserDir</directive>
|
||
yönergesinde belirtilen dizin olmadığı takdirde suEXEC işini
|
||
gerektiği gibi yapmayacaktır. Öntanımlı değer
|
||
<code>public_html</code>’dir.</p>
|
||
|
||
<p>Eğer, sanal konaklarınızın herbiri farklı <directive
|
||
module="mod_userdir">UserDir</directive> yönergeleri içeriyorsa
|
||
burada belirtilecek dizinin üst dizininin hepsinde aynı olması
|
||
gerekir. <strong>Aksi takdirde, "~<em><code>kullanıcı</code></em>"
|
||
istekleri düzgün çalışmayacaktır.</strong></p></dd>
|
||
|
||
<dt><code>--with-suexec-docroot=<em>DİZİN</em></code></dt>
|
||
|
||
<dd>httpd için belge kök dizinini belirler. Bu, (<directive
|
||
module="mod_userdir" >UserDir</directive>’lardan başka) suEXEC için
|
||
kullanılacak tek hiyerarşi olacaktır. Öntanımlı dizin sonuna
|
||
"<code>/htdocs</code>" eklenmiş <code>--datadir</code> dizinidir.
|
||
Yani, seçeneği "<code>--datadir=/home/apache</code>" olarak
|
||
belirtmişseniz suEXEC çalıştırıcısı için belge kök dizini
|
||
"<code>/home/apache/htdocs</code>" olur.</dd>
|
||
|
||
<dt><code>--with-suexec-uidmin=<em>UID</em></code></dt>
|
||
|
||
<dd>suEXEC kullanıcısının kullanıcı kimliği olarak izin verilen en
|
||
düşük değeri belirler. Çoğu sistemde bu ya 500’dür ya da 100; 100
|
||
öntanımlıdır.</dd>
|
||
|
||
<dt><code>--with-suexec-gidmin=<em>GID</em></code></dt>
|
||
|
||
<dd>suEXEC kullanıcısının grup kimliği olarak izin verilen en düşük
|
||
değeri belirler. Çoğu sistemde bu 100 olup, seçeneğin de öntanımlı
|
||
değeridir.</dd>
|
||
|
||
<dt><code>--with-suexec-logfile=<em>DOSYA</em></code></dt>
|
||
|
||
<dd>suEXEC hareketlerinin ve hatalarının kaydedileceği günlük
|
||
dosyasının adını belirler (denetim ve hata ayıklama için
|
||
kullanışlıdır). Öntanımlı günlük dosyası ismi
|
||
"<code>suexec_log</code>" olup yeri (<code>--logfiledir</code>
|
||
seçeneği ile belirtilen) günlük dosyaları dizinidir.</dd>
|
||
|
||
<dt><code>--with-suexec-safepath=<em>YOL</em></code></dt>
|
||
|
||
<dd>CGI çalıştırılabilirlerine aktarılacak güvenilir <code>PATH</code>
|
||
ortam değişkeninin değerini tanımlar.
|
||
"<code>/usr/local/bin:/usr/bin:/bin</code>" öntanımlıdır.</dd>
|
||
</dl>
|
||
|
||
<section>
|
||
<title>SuEXEC çalıştırıcısının derlenmesi ve kurulumu</title>
|
||
|
||
<p>SuEXEC özelliğini <code>--enable-suexec</code> seçeneği ile
|
||
etkinleştirdiyseniz <code>make</code> komutunu verdiğinizde httpd
|
||
ile birlikte <code>suexec</code> çalıştırılabilir dosyası da
|
||
derlenecektir.</p>
|
||
|
||
<p>Tüm bileşenler derlendikten sonra <code>make install</code> komutunu
|
||
vererek kurulumu tamamlayabilirsiniz. <code>suexec</code>
|
||
çalıştırılabilir dosyası <code>--sbindir</code> seçeneği ile
|
||
tanımlanan dizine kurulacaktır; öntanımlı yeri
|
||
<code>/usr/local/apache2/bin/</code> dizinidir.</p>
|
||
|
||
<p>Kurulum adımında <strong><em>root yetkisine</em></strong> sahip
|
||
olmanız gerektiğini unutmayın. Çalıştırıcıya kullanıcı kimliğinin
|
||
atanabilmesi ve dosyanın sahibi olan kullanıcı kimliği ile
|
||
çalıştırılabilmesini mümkün kılan bitinin etkin kılınabilmesi için
|
||
kurulumun <code><em>root</em></code> tarafından yapılması
|
||
önemlidir.</p>
|
||
</section>
|
||
|
||
<section>
|
||
<title>Paranoyak yetkilendirme</title>
|
||
|
||
<p>SuEXEC çalıştırıcısı kendini çalıştıran kullanıcının
|
||
<program>configure</program> betiğine
|
||
<code>--with-suexec-caller</code> seçeneği ile belirtilen kullanıcı
|
||
olup olmadığına bakacaksa da, bu sınamanın da bir sistem veya
|
||
kütüphane çağrısı ile istismar edilmiş olma ihtimali gözardı
|
||
edilmemelidir. Bunun meydana gelmesini önlemek için ve genelde
|
||
yapıldığı gibi dosyanın izinlerini suEXEC çalıştırıcısı sadece
|
||
httpd'nin aidiyetinde çalıştığı grup tarafından çalıştırılacak
|
||
şekilde ayarlayınız.</p>
|
||
|
||
<p>Örneğin, sunucunuz şöyle yapılandırılmışsa:</p>
|
||
|
||
<example>
|
||
User apache<br />
|
||
Group apache-grup<br />
|
||
</example>
|
||
|
||
<p>Ve <program>suexec</program> çalıştırılabilir de
|
||
<code>/usr/local/apache2/bin/</code> dizinine kurulmuşsa şu komutları
|
||
vermelisiniz:</p>
|
||
|
||
<example>
|
||
chgrp apache-grup /usr/local/apache2/bin/suexec<br />
|
||
chmod 4750 /usr/local/apache2/bin/suexec<br />
|
||
</example>
|
||
|
||
<p>Böylece suEXEC çalıştırıcısını httpd’yi çalıştıran grubun
|
||
üyelerinden başkasının çalıştıramayacağından emin olabilirsiniz.</p>
|
||
</section>
|
||
</section>
|
||
|
||
<section id="enable">
|
||
<title>suEXEC’in etkin kılınması ve iptal edilmesi</title>
|
||
|
||
<p>httpd başlatıldığı sırada <program>suexec</program> çalıştırıcısı için
|
||
<code>--sbindir</code> seçeneği ile tanımlanan dizine bakar (seçeneğin
|
||
öntanımlı değeri <code>/usr/local/apache/sbin/suexec</code>’tir). httpd
|
||
düzgün yapılandırılmış bir suEXEC çalıştırıcısı bulduğu takdirde hata
|
||
günlüğüne şöyle bir ileti yazacaktır:</p>
|
||
|
||
<example>
|
||
[notice] suEXEC mechanism enabled (wrapper: <var>/dosya/yolu/suexec</var>)
|
||
</example>
|
||
|
||
<p>Sunucu başlatıldığında bu ileti yazılmazsa sunucu ya çalıştırıcı
|
||
programı umduğu yerde bulamamıştır ya da dosyanın <em>setuid</em> biti
|
||
<em>root</em> tarafından etkin kılınmamıştır.</p>
|
||
|
||
<p>SuEXEC mekanizmasını etkin kılmak istediğiniz sunucu çalışmaktaysa
|
||
sunucuyu önce öldürmeli sonra yeniden başlatmalısınız. Basit bir
|
||
<code>HUP</code> veya <code>USR1</code> sinyali ile yeniden başlamasını
|
||
sağlamak yeterli olmayacaktır.</p>
|
||
|
||
<p>SuEXEC mekanizmasını iptal etmek için ise <program>suexec</program>
|
||
dosyasını sildikten sonra httpd'yi öldürüp yeniden başlamalısınız.</p>
|
||
</section>
|
||
|
||
<section id="usage"><title>SuEXEC’in kullanımı</title>
|
||
|
||
<p>CGI programlarına yapılan isteklerin suEXEC çalıştırıcısı tarafından
|
||
yerine getirilebilmesi için sanal konağın bir <directive
|
||
module="mod_suexec">SuexecUserGroup</directive> yönergesi içermesi veya
|
||
isteğin <module>mod_userdir</module> tarafından işleme konulması
|
||
gerekir.</p>
|
||
|
||
<p><strong>Sanal Konaklar:</strong><br />SuEXEC çalıştırıcısını farklı
|
||
bir kullanıcı ile etkin kılmanın tek yolu <directive
|
||
module="core">VirtualHost</directive> bölümleri içinde <directive
|
||
module="mod_suexec">SuexecUserGroup</directive> yönergesini
|
||
kullanmaktır. Bu yönergede ana sunucuyu çalıştıran kullanıcıdan farklı
|
||
bir kullanıcı belirterek ilgili sanal konak üzerinden CGI kaynakları
|
||
için yapılan tüm isteklerin belirtilen <em>kullanıcı</em> ve
|
||
<em>grup</em> tarafından çalıştırılması sağlanır. Bu yönergeyi
|
||
içermeyen sanal konaklar için ana sunucunun kullanıcısı
|
||
öntanımlıdır.</p>
|
||
|
||
<p><strong>Kullanıcı dizinleri:</strong><br />
|
||
<module>mod_userdir</module> tarafından işleme sokulan tüm istekler için
|
||
suEXEC çalıştırıcısı istek yapılan kullanıcı dizininin sahibinin
|
||
aidiyetinde çalıştırılacaktır. Bu özelliğin çalışması için tek
|
||
gereklilik, kullanıcının SuEXEC çalıştırıcısı için etkin kılınmış olması
|
||
ve çalıştırıcının yukarıdaki <a href="#model">güvenlik sınamalarından</a>
|
||
geçebilmesidir. Ayrıca, <code>--with-suexec-userdir</code> <a
|
||
href="#install">derleme</a> seçeneğinin açıklamasına da bakınız.</p>
|
||
</section>
|
||
|
||
<section id="debug"><title>SuEXEC ve hata ayıklama</title>
|
||
|
||
<p>SuEXEC çalıştırıcısı yukarıda değinildiği gibi günlük bilgilerini
|
||
<code>--with-suexec-logfile</code> seçeneği ile belirtilen dosyaya
|
||
yazacaktır. Çalıştırıcıyı doğru yapılandırarak kurduğunuzdan emin olmak
|
||
istiyorsanız, yolunda gitmeyen şeyler var mı diye bu günlük dosyasına
|
||
bakmayı ihmal etmeyin.</p>
|
||
|
||
</section>
|
||
|
||
<section id="jabberwock">
|
||
<title>Uyarılar ve Örnekler</title>
|
||
|
||
<p><strong>UYARI!</strong> Bu bölüm henüz bitmedi. Bu bölümün son hali
|
||
için <a
|
||
href="http://httpd.apache.org/docs/&httpd.docs;/suexec.html">çevrimiçi
|
||
belgelere</a> bakınız.</p>
|
||
|
||
<p>SuEXEC çalıştırıcısından dolayı sunucu ayarlarına bazı sınırlamalar
|
||
getiren bir kaç önemli nokta mevcuttur. SuEXEC ile ilgili hata
|
||
bildiriminde bulunmadan önce bunlara bir göz atmalısınız.</p>
|
||
|
||
<ul>
|
||
<li><strong>suEXEC ile ilgili önemli noktalar</strong></li>
|
||
|
||
<li>Hiyerarşik sınırlamalar
|
||
|
||
<p class="indent">Güvenlik ve verimlilik adına, tüm suEXEC
|
||
isteklerinin sanal konaklar için üst düzey belge kökünün altındaki
|
||
dosyalarla, kullanıcı dizinleri için ise üst düzey bireysel belge
|
||
köklerinin altındaki dosyalarla sınırlı kalması gerekir. Örneğin,
|
||
dört sanal konağınız varsa ve suEXEC çalıştırıcısının
|
||
getirilerinden faydalanmak istiyorsanız, sanal konaklarınızın belge
|
||
kök dizinlerini ana sunucunun belge kök dizininin altında kalacak
|
||
şekilde yapılandırmanız gerekir (örnek yolda).</p>
|
||
</li>
|
||
|
||
<li>SuEXEC'in <code>PATH</code> ortam değişkeni
|
||
|
||
<p class="indent">Bunu değiştirmek tehlikeli olabilir. Bu değişkende
|
||
tanımladığınız her yolun <strong>güvenli</strong> bir dizini işaret
|
||
ettiğinden emin olmalısınız. Başkalarının oralarda bir truva atı
|
||
çalıştırmasını istemiyorsanız buna çok dikkat ediniz.</p>
|
||
</li>
|
||
|
||
<li>SuEXEC kodunda değişiklik
|
||
|
||
<p class="indent">Gerçekte ne yaptığınızı bilmiyorsanız bu,
|
||
<strong>büyük bir sorun</strong> olabilir. Böyle şeyler yapmaktan
|
||
mümkün olduğunca uzak durmalısınız.</p>
|
||
</li>
|
||
</ul>
|
||
|
||
</section>
|
||
|
||
</manualpage>
|