Centos 7’de vsFTP Kurulumu ve Yönetimi
Centos’a yum üzerinden vsftp kuracağız. Öncelikle aşağıdaki komutla hangi versiyon vsftp bulunduğuna bakalım. Ben kurulum aşamasında 3.0.2 versiyonunu kuracağım. Versiyon farklılıklarına göre konfigürasyon ayarları pek değişmeyecektir.
1 | yum info vsftpd |
1 | yum install vsftpd |
vsftp’de bir servis olduğu için servisi açılışta enable yapmamız ve start etmemiz gerekiyor ama bunu ayarlarını yaptıktan sonra yapacağız. Şimdi değil.
vsftp’nin konfigürasyon ayarları da klasik olarak /etc klasörü altında bulunmaktadır.
1 2 | cd /etc/vsftpd/ nano vsftpd.conf |
vsftpd.conf dosyasında bazı değişiklikler yapacağız. Bunları aşağıda sıralıyorum, bazılarının sadece başındaki # kalkacak, sizin conf dosyasında satır farkı olabilir.
1 2 3 4 5 | anonymous_enable = NO xferlog_file=/var/log/xferlog chroot_local_user=YES chroot_list_enable=YES listen_ipv6=NO |
Ayarlar dosyası tamamlandı.
vsftp ile giriş yapabilmek ve ilgili web sayfalarımızı güncelleyebilmek için bir kullanıcı açmamız gerekiyor. Bu kullanıcının ssh yetkisi olmayacak (olabilir de size bağlı) ve sadece ftp ile giriş yapılabilecek;
1 | adduser -r -s /sbin/nologin -M -c 'x Domaini İçin Kullanıcı' domain_adi |
Açtığımız kullanıcıya şifre tanımlıyoruz. Bazen şifreyi büyük küçük harf ve rakam kullanarak yazmamızı isteyebilir. İki kere yazıyoruz.
1 | passwd domain_adi |
Açtığımız kullanıcı ile ftp’ye bağlanıp direkt web sitesi ile ilgili klasöre bağlanmak için /etc/passwd dosyasını açıyoruz. passwd dosyası içerisinde bulunan domainadi ile başlayan satırı aşağıdaki gibi değiştirelim. Ancak sizin klasör ve nginx kullanıcı adı ve grup numarasına göre!
1 | domain_adi:x:996:994:Domain İçin Kullanıcı:/home/domain_adi:/sbin/nologin |
Şununla değiştireceğiz:
1 | domain_adi:x:996:994:Domain İçin Kullanıcı:/var/www/domain_adi.com/public_html:/sbin/nologin |
Şimdi yukarıda ne yaptık?
ilk önce bir kullanıcı tanımladık. Bu kullanıcının bilgilerinin tutulduğu passwd dosyası içerisinden 2. kısımda değişiklikler yaptık. Yani biz ftp ile giriş yaptığımızda domain_adi kullanıcısı ile, direkt olarak bizi /var/www/domain_adi.com/public_html klasörüne yönlendirecek. Ama yönlendirdiği klasördeki izin hakları da aynı açtığımız domain_adi user’ının isim ve grup haklarında olmalıdır. Yoksa bağlantı sağlayamayız. Bakın benim passwd dosyamın içeriği şu şekilde:
1 2 3 4 5 6 7 | root:x:0:0:root:/root:/bin/bash .. .. .. .. nginx:x:996:994:Nginx web server:/var/lib/nginx:/sbin/nologin domain_adi:x:996:994:Kullanici:/var/www/domain_adi.com:/sbin/nologin |
Nginx kullandığınızı varsayarak aşağıdaki açıklamayı yapıyorum:
domain_adi kullanıcısının numalarını da nginx’in numaraları ile aynı yaptım. Tam açıklayamamışta olabilirim, yorumlar kısmından sorabilirsiniz.
996 dediğimiz nginx’in kullanıcı nosu.
994 dediğimiz nginx’in grup nosu.
(Yukardaki nginx grup numaralarını aynı passwd dosyası içerisinde yukarıdaki satırlarda görebilirsiniz.)
/var/www/domainadi.com ise bizim web sitemizin olduğu klasör. FTP ile bağlandığında kullanıcıyı buraya gönderiyoruz.
Firewall var ise FTP izni vermek:
firewall var ise firewall üzerinden ftp servisini eklememiz lazım. Bunun için öncelikle şunu yapın:
1 | firewall-cmd --list-all |
firewalld not found, çalışmıyor vs. gibi bir hata alırsanız firewall aktif değil demektir. Aktif etmeyebilirsiniz bu size kalmış. Tabiki güvenlik sebebi ile aktif etmenizde fayda var. Firewall aktif etmek ve ayarlarını yapmak ile ilgili internetten doküman bulabilirsiniz.
Firwall aktif diye düşünerek devam ediyorum.
1 2 3 | firewall-cmd --add-servie=ftp --permanent firewall-cmd --reload firewall-cmd --list-all |
son komutu verdiğimizde services kısmında ftp’yi görüyor olmamız gerekiyor.
Bağlanmayı deneyelim. Eğer bağlantı sırasında şu şekilde bir hata alırsanız:
1 | vsftpd: refusing to run with writable root inside chroot()... |
vsftpd.conf (/etc/vsftpd/ )dosyasına şunu ekleyelim veya varsa YES olarak düzeltelim:
1 | allow_writeable_chroot=YES |
vsftp’i servisini enable edip tekrar çalıştıralım. Hata veriyorsa /var/log/vsftpd.log dosyasından görebilirsiniz.
1 2 | systemctl enable vsftpd systemctl start vsftpd |
Başarılar…