[Nasıl] Sanal kullanıcılarla beraber Vsftpd ftp sunucusu kurulumu

Başlatan heartsmagic, 29 Mart 2014 - 07:07:33

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

heartsmagic

Anlatım 14.04 üzerinde denendi, ancak önceki sürümlerde de çalışacaktır. Vsftpd güvenilir bir ftp sunucusudur, fakat yapılandırması biraz karışıktır. Mümkün mertebe ayrıntıya girmeden, açıklamalarla anlatım yapılacaktır. Bu anlatımda sisteme ftp yapacak gerçek kullanıcılar yerine sanal kullanıcılar tercih edilmiştir. Böylece sunucuda ftp erişimi verilmek istenen her kullanıcı için sisteme gerçek bir kullanıcı eklemek gerekmez. Basit bir şekilde vsftpd için sanal kullanıcılar oluşturulur.

Vsftpd kurulumu ve yapılandırılması

Öncelikle Vsftpd'yi, sanal kullanıcılar oluşturmak için de Pam ve apache2-utils paketlerini kuruyoruz:

apt-get install vsftpd libpam-pwdfile apache2-utils

Vsftpd yapılandırma dosyasının yedeğini alıyoruz:

mv /etc/vsftpd.conf /etc/vsftpd.conf.yedek

Ardından yeni bir dosya oluşturuyoruz.

vim /etc/vsftpd.conf

Not: vim yerine nano veya tercih edilen metin düzenleyici seçilebilir.

Daha sonra içini şu şekilde işliyoruz:

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
nopriv_user=vsftpd
virtual_use_local_privs=YES
guest_enable=YES
user_sub_token=$USER
local_root=/home/$USER
chroot_local_user=YES
hide_ids=YES
guest_username=vsftpd
seccomp_sandbox=NO


Buradaki ayarların birçoğu için vsftpd belgelendirmelerine bakılabilir. Can alıcı noktalar şunlar bizim için burada: guest_enable=YES, guest_username=vsftpd, local_root=/home/$USER, chroot_local_user=YES, chroot_list_enable=YES

guest_enable: Bu ayarlama ile sanal kullanıcılar için misafir oturumu açılmış oluyor. Sanal kullanıcılarla erişim bu şekilde olmakta. Her sanal kullanıcı aslında vsftpd için tanımlanan bu misafir oturumunu kullanmakta.

guest_username=vsftpd: Burada da sanal kullanıcılar için kullanılacak misafir oturumun ismi ayarlanıyor. İstediğimiz bir şey olabilir, ancak burada ne seçtiysek anlatımın geri kalan kısmında da o ismi kullanmalıyız.

local_root=/home/$USER, chroot_local_user=YES: Bu yapılandırmaki ikinci ayar ile kullanıcılar kendi dizinlerine hapsedilirler. İlk ayarda ise kullanıcıların ev dizinleri belirlenmektedir.

Yerel kullanıcı tanımlanması

Sanal kullanıcılara FTP imkânı verecek olan misafir oturumu için sisteme kabuk erişimi olmayan bir yerel kullanıcı ekliyoruz:

useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd


Sanal kullanıcıların eklenmesi


Vsftpd sunucusu kurulduğuna göre sisteme FTP yapabilecek sanal kullanıcıları ayarlayabiliriz. Önce ayar dosyalarını tutacak olan dizini oluşturuyoruz:

mkdir /etc/vsftpd

Ardından kullanıcıları apache2-utils paketinin sağladığı htpasswd ile oluşturuyoruz:

htpasswd -cd /etc/vsftpd/ftpd.passwd user1

Burada user1 yerine istenilen kullanıcı ismi seçilebilir. Komut sizden bu kullanıcı için parola tahsis etmenizi ve doğrulamanızı isteyecektir. Bu şekilde istediğiniz kadar sanal kullanıcı ekleyebilirsiniz.


PAM yapılandırması

Sanal kullanıcılar için PAM ayarlaması yapılması gerekmekte. Önce bir yedek alalım:

mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.yedek

Ardından dosyayı tekrar oluşturalım:

vim /etc/pam.d/vsftpd

Ve içine şunu işleyelim:

Alıntı Yapauth required pam_pwdfile.so pwdfile /etc/vsftpd/ftpd.passwd
account required pam_permit.so

Sanal kullanıcılar için dizinlerin ayarlanması

Vsftpd yapılandırma dosyamızda kullanıcılar için ev dizini olarak /home/$USER kullandık. Bu ayar tamamen size kalmış durumdadır. Sistemin istediğiniz bir yerinde sanal kullanıcılar için bir dizin oluşturup kullanabilirsiniz. Fakat, sanal kullanıcıların ev dizini yazılabilir olamaz. Bu Vsftpd'nin son sürümlerinde güvenlik nedeniyle istenmektedir. Kısacası kullanıcıların ev dizini sadece okunabilir olmalı, hemen altında yazılabilir dizinler oluşturulmalıdır. Kısacası mantık şu şekilde olacaktır:

/home/user1
                     -> ftp

user1 dizini sadece okunabilir olmalıdır. ftp dizini ise kullanıcının yazacağı dizin olacaktır. FTP yaptığında karşısına ftp dizini görünecektir. Bu isim de isteğe bağlıdır. Dizinler ayarlanırken istenilen bir şey seçilebilir.

Şimdi eklemiş olduğumuz user1 kullanıcısı için FTP yapabileceği dizinleri oluşturuyoruz:

mkdir -p /home/user1/ftp

Dizinler için ayarlama yapıyoruz. user1 dizini sadece okunabilir olmalı demiştik:

chmod -w /home/user1

Böylece kullanıcının ev dizinini sadece okunabilir yaptık. Devam edelim:

chmod 755 /home/user1/ftp
chown vsftpd:nogroup /home/user1/ftp


Kullanıcının yazacağı ftp dizinine yazma hakkı verdik ve sahipliğini sanal kullanıcıları tutan misafir kullanıcı olarak ayarladık, yani vsftpd. Bu sayede kullanıcı kendi hesap bilgileri ile sunucumuza FTP yaptığında /home/user1 dizinine gelecek, fakat bu dizine yazamayacaktır. Karşısında ftp dizinini görecek ve bu dizine yazabilecektir. İstenirse user1 dizini altına başka dizinler de eklenebilir. Örneğin www, yedek, falanca gibi. Dizin ayarlamaları yapıldığı sürece kullanıcı buradaki her dizine yazabilir. Fakat eklenen bu sanal kullanıcılar sadece kendi ev dizinlerinde gezinebilirler, sunucunun diğer dizinlerini göremezler.


Vsftpd sunucusunun yeniden başlatılması

Ayarlamalarımızın etkin olabilmesi için sunucuyu yeniden başlatıyoruz:

service vsftpd restart


Not: Yapılandırma dosyasına seccomp_sandbox=NO ayarı alınan bir hata nedeniyle eklenmiştir.
Kaynak: http://www.sigerr.org/linux/setup-vsftpd-custom-multiple-directories-users-accounts-ubuntu-step-by-step/
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

heartsmagic

Birebir denemiş olmama rağmen buraya geçirirken hata yapmış olabilirim, konu düzeltme ve eklemelere açıktır.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

WhereIsMyMind

hocam
ln -s /bin/false /sbin/nologin
echo /sbin/nologin >>/etc/shells
adduser –home=/ftp/serverim –shell=/sbin/nologin admin
  bu şeklde kullanıcı oluşturdum ama dizini değiştirmek istiyorum kullanıcıların kayıtlı olduğu metin vs var mı nasıl değiştirebilirim ?

Ubuntu ÖZGÜRLÜKÜTÜR

heartsmagic

sudo -H gedit  /etc/passwd
ile açacağın dosyadan ev dizinini değiştirebilirsin muhtemelen. Fakat yeni oluşturacağın dizinin sahipliklerini halletmen lazım.

Bu FTP işini şu sorduğun mesele için düşünüyorsan bence hiç uğraşma. Hiç makul değil FTP o iş için. Kaldı ki FTP çok gerilerde kaldı, birçok farklı seçenek var yerine kullanılabilecek. Fakat, bu meseleleri burada değil de diper başlıkta konuşalım.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

LordSas

merhaba ben 2 gündür ftp ile ilgili bişeyler açmaya çalışıyorum ama sürekli hata üstüne hata alıyorum...
1. var/www dizinine nasıl erişim sağlayabilirim.
açtığım siteye ftp erişimim olsun istiyorum sadece...
Lord Clan

neynefes


heartsmagic

Bu devirde artık şart değilse mümkün mertebe FTP kullanılmamalı. Eğer sunucu sadece sana aitse basit bir şekilde SFTP dahi kullanabilirsin.
Yok illa ben FTP istiyorum diyorsan da bu başlık zaten anlatımı yapmakta. Diğer başlığındaki yaşadığın sorun ve buradaki sorduğun soruyu birleştirince bazı şeyleri yanlış yaptığın anlaşılıyor. Uzaktaki sunucu üzerinde Gedit kullanma. Bu başlıkta zaten ona yönelik bir anlatım dahi yok.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

futureng

Merhaba Ubuntu 14.04 üzerinde, vsftpd kurdum. FTP server olarak kullanıyorum. Gerekli güvenlik ayarlarını da yaptım. Şöyle bir sorun yaşıyorum. useradd ile ubutuya 5-6 adet kullanıcı ekledim. Her kullanıcı kendi adı ve şifresiyle FTP ye bağlanıyor ayrıca FTP de diğerlerinin klasörlerini göremiyor * tabi ki. Bazen X kullanıcısının kopyaladığı klasör yada dosyayı silinemiyor. Aynı x kullanıcısı ile başka bilgisayardan FTP ye bağlandığımızda klasörleri silemiyoruz. Filzilla 550 hatası veriyor. (550 Failed to change directory. Hata: Klasör listesi alınamadı) ANcak SSH ile terminalden bağlanıp admin ile silebiliyoruz. Sorunun kaynağı ne olabilir?

http://www.gimptr.com
Hayal Gücünüzün Gerçek Dünyadaki Görünümü..

bugra9

Anlatımda gerçek kullanıcılar yerine sanal kullanıcı kullanılması gösterilmiş. Silemediğiniz dosyaların bulunduğu dizinde
ls -l dosyaAdı
komutunu verip çıktısı ile beraber bu sorun için yeni konu açarsanız daha iyi olur. Bir de bu silinemeyen dosyaların kullanıcı tarafından mı yoksa sunucuda çalışan bir yazılım tarafından mı (örneğin php) oluşturulduğunu belirtirseniz güzel olur.

futureng

[mention=611954]@bugra9[/mention]

Verdiğiniz komut çıktısına göre aşağıdaki özellikleri gösteriyor. Buna göre mesela ben FTP ye "hasim" kullanıcısı ile bağlanıyorum. Bu klasörlerden "projeler"  ve "TOKİ-HAŞİM" klasörüne girebiliyorum ama "Kırklareli Hastane İKMAL" klasörüne giremiyorum. Filezilla yukarıda bahsettiğim hata mesajını veriyor. Ve bu alan sadece "hasim" kullanıcısı ile girilerek dosya ve klasör oluşturulup kopyalanan bir alan. Acaba FTP sisteminde mi bir BUG var.
NOT: Kullanıcılar gerçek kullanıcıdır. FTP için sanal kullanıcı oluşturulmadı.

drwxr-xr-x  3 hasim hasim     4096 Kas 23 11:47 Kırklareli Hastane İKMAL
drwxr-xr-x  3 hasim hasim     4096 Kas 22 09:34 projeler
drwxr-xr-x 15 hasim hasim     4096 Kas  9 12:39 TOKİ-HAŞİM


AYrıca girilemeyn klasöre verdiğiniz komutu tam uygulayınca aşağıdaki çıktıyı alıyorum.

$ ls -l Kırklareli\ Hastane\ İKMAL\ /

total 4
drwxr-xr-x 2 hasim hasim 4096 Kas 23 11:47 FESİH RAPORU


Düzenleme Notu: kodetiketi
http://www.gimptr.com
Hayal Gücünüzün Gerçek Dünyadaki Görünümü..

oktay811

merhab. Ben vps server a transmission kurdum ve bazen torrent indiriyorum. indirdiğim torrentleri filezilla ile pc ye filezilla ile indiriyorum ama android telefondan indiremiyorum. Bende vsfpd kurdum, "/var/www/oktay" klasörü açtım transmission indirme klasörü orayı seçince yazma hatası veridi. Yazması için gerekli izini nasıl verebilirim. Birde  tarayıcıdan ftp://ip_adresi adresini yazdığımızda tam olarak hangi klasör geliyor, ona göre torrentleri oraya indirip tarayıcından da istediğim yere indireyim. Lütfen yardım edebilir misiniz

ahmettepe

Alıntı yapılan: oktay811 - 23 Aralık 2016 - 18:34:21
merhab. Ben vps server a transmission kurdum ve bazen torrent indiriyorum. indirdiğim torrentleri filezilla ile pc ye filezilla ile indiriyorum ama android telefondan indiremiyorum. Bende vsfpd kurdum, "/var/www/oktay" klasörü açtım transmission indirme klasörü orayı seçince yazma hatası veridi. Yazması için gerekli izini nasıl verebilirim. Birde  tarayıcıdan ftp://ip_adresi adresini yazdığımızda tam olarak hangi klasör geliyor, ona göre torrentleri oraya indirip tarayıcından da istediğim yere indireyim. Lütfen yardım edebilir misiniz

Oktay ben apache2 kurdum. varsayılan paylaşım klasörü /var/www/html . transmission ile indirilen klasörü de /var/www/html olarak ayarladım. fakat seninde dediğin gibi yazma yetkisi vermek gerekiyor. Bunun için şu kodu kullanıyorum.

sudo chmod -R 777 /var/www/html

böylece transmission ile torrentlerin indirilen klasör olarak ayarladığım /var/www/html 'e indirmiş oluyor. hem pc den hem androidden herhangi bir indirme programı ile de indiriyorum. filezilla ya bile gerek kalmıyor.