[Çözüldü] Proftpd kullanıcı ayarları

Başlatan CeRNoBiL, 13 Mart 2012 - 17:44:09

« önceki - sonraki »

0 Üyeler ve 3 Ziyaretçi konuyu incelemekte.

CeRNoBiL

Arkadaşlar merhaba, ubuntu 11.10 desktop sürümüne buradan aldıgım bilgiler ile 2 adet web sitemi tek sunucu üzerinden apache virtual host kullanarak yayımlamayı başardım.
bir kaç problemim var bunlardan birincisi ftp ayaları. Virtual user sayesinde 3 tane kullanıcı olusturdum. İlk kullanıcı A ikincisi B ols üçüncü kullanıcı C olsun. A kullanıcısı /home/siteler dizinini görüyor. B kullanıcısı /home/siteler/site1 C kullanıcısı /home/siteler/site2 klasörünü görüyor dizinlerini ayırt edebildim. Sorun şu birinin oluşturduğu dizine veya dosyaya diğer kullanıcılar müdahele edemiyor. Mesela A kullanıcısı site1 ve site2 klasörünü oluşturdu siteleri kurdu diyelim. Diğer B ve C kulllanıcıları bu kurulan sitenin dosyasına müdahele edemiyor. Sadece ftpye bağlanıyor ama upload silme vs yapılamıyor. site1 klasörünü B kullanıcı açsaydı ve kendi dosyalarını yollasaydı bu sefer sadece B müdahele edecekti diğerleri yapamıcaktı. Bu durum sinir bozucu bi durum. Çözümü nedir? Nasıl yapabilirim. aşağıda proftpd.conf dosyam mevcut. İlgilenen arkadaşlardan yardım rica olunur..

#
# /etc/proftpd/proftpd.conf -- This is a basic ProFTPD configuration file.
# To really apply changes, reload proftpd after modifications, if
# it runs in daemon mode. It is not required in inetd/xinetd mode.
#

AuthUserFile /home/web/ftpd.passwd
AuthGroupFile /home/web/ftpd.group

# Includes DSO modules
Include /etc/proftpd/modules.conf

# Set off to disable IPv6 support which is annoying on IPv4 only boxes.
UseIPv6 off
# If set on you can experience a longer connection delay in many cases.
IdentLookups off

ServerName "Arastirma ve Uygulama H. Ftp Server 12-03-2012 - Samet ULUTURK"
ServerType standalone
DeferWelcome off
#Beklememesi icin start.
UseReverseDNS off

# Beklememesi icin.
MultilineRFC2228 on
DefaultServer on
ShowSymlinks on

TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 1200

DisplayLogin                    welcome.msg
DisplayChdir                .message true
ListOptions                "-l"

DenyFilter \*.*/

# Use this to jail all users in their homes
DefaultRoot ~

# Users require a valid shell listed in /etc/shells to login.
# Use this directive to release that constrain.
RequireValidShell off

# Port 21 is the standard FTP port.
Port 21

# In some cases you have to specify passive ports range to by-pass
# firewall limitations. Ephemeral ports can be used for that, but
# feel free to use a more narrow range.
# PassivePorts                  49152 65534

# If your host was NATted, this option is useful in order to
# allow passive tranfers to work. You have to use your public
# address and opening the passive ports used on your firewall as well.
# MasqueradeAddress 1.2.3.4

# This is useful for masquerading address with dynamic IPs:
# refresh any configured MasqueradeAddress directives every 8 hours
<IfModule mod_dynmasq.c>
# DynMasqRefresh 28800
</IfModule>

# To prevent DoS attacks, set the maximum number of child processes
# to 30.  If you need to allow more than 30 concurrent connections
# at once, simply increase this value.  Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd)
MaxInstances 10
MaxClients 10
# Set the user and group that the server normally runs at.
User proftpd
Group nogroup

# Umask 022 is a good standard umask to prevent new files and dirs
# (second parm) from being group and world writable.
Umask 022  022
# Normally, we want files to be overwriteable.
AllowOverwrite on

# Uncomment this if you are using NIS or LDAP via NSS to retrieve passwords:
# PersistentPasswd off

# This is required to use both PAM-based authentication and local passwords
# AuthOrder mod_auth_pam.c* mod_auth_unix.c

# Be warned: use of this directive impacts CPU average load!
# Uncomment this if you like to see progress and transfer rate with ftpwho
# in downloads. That is not needed for uploads rates.
#
# UseSendFile off

TransferLog /var/log/proftpd/xferlog
SystemLog   /var/log/proftpd/proftpd.log

# Logging onto /var/log/lastlog is enabled but set to off by default
#UseLastlog on

# In order to keep log file dates consistent after chroot, use timezone info
# from /etc/localtime.  If this is not set, and proftpd is configured to
# chroot (e.g. DefaultRoot or <Anonymous>), it will use the non-daylight
# savings timezone regardless of whether DST is in effect.
#SetEnv TZ :/etc/localtime

<IfModule mod_quotatab.c>
QuotaEngine off
</IfModule>

<IfModule mod_ratio.c>
Ratios off
</IfModule>


# Delay engine reduces impact of the so-called Timing Attack described in
# http://www.securityfocus.com/bid/11430/discuss
# It is on by default.
<IfModule mod_delay.c>
DelayEngine on
</IfModule>

<IfModule mod_ctrls.c>
ControlsEngine        off
ControlsMaxClients    2
ControlsLog           /var/log/proftpd/controls.log
ControlsInterval      5
ControlsSocket        /var/run/proftpd/proftpd.sock
</IfModule>

<IfModule mod_ctrls_admin.c>
AdminControlsEngine off
</IfModule>


<Directory /opt/lampp/htdocs/siteler/*>
   <Limit All>
AllowAll
   </Limit>
</Directory>

<Directory /opt/lampp/htdocs/siteler/site1/*>
   <Limit All>
      AllowAll
   </Limit>
</Directory>

<Directory /opt/lampp/htdocs/siteler/site2/*>
   <Limit All>
      AllowAll
   </Limit>
</Directory>

#
# Alternative authentication frameworks
#
#Include /etc/proftpd/ldap.conf
#Include /etc/proftpd/sql.conf

#
# This is used for FTPS connections
#
#Include /etc/proftpd/tls.conf

#
# Useful to keep VirtualHost/VirtualRoot directives separated
#
#Include /etc/proftpd/virtuals.con

# A basic anonymous configuration, no upload directories.

# <Anonymous ~ftp>
#   User ftp
#   Group nogroup
#   # We want clients to be able to login with "anonymous" as well as "ftp"
#   UserAlias anonymous ftp
#   # Cosmetic changes, all files belongs to ftp user
#   DirFakeUser on ftp
#   DirFakeGroup on ftp
#
#   RequireValidShell off
#
#   # Limit the maximum number of anonymous logins
#   MaxClients 10
#
#   # We want 'welcome.msg' displayed at login, and '.message' displayed
#   # in each newly chdired directory.
#   DisplayLogin welcome.msg
#   DisplayChdir .message
#
#   # Limit WRITE everywhere in the anonymous chroot
#   <Directory *>
#     <Limit WRITE>
#       DenyAll
#     </Limit>
#   </Directory>
#   # Uncomment this if you're brave.
#   # <Directory incoming>
#   #   # Umask 022 is a good standard umask to prevent new files and dirs
#   #   # (second parm) from being group and world writable.
#   #   Umask 022  022
#   #            <Limit READ WRITE>
#   #            DenyAll
#   #            </Limit>
#   #            <Limit STOR>
#   #            AllowAll
#   #            </Limit>
#   # </Directory>
#
# </Anonymous>

# Include other custom configuration files
Include /etc/proftpd/conf.d/


heartsmagic

Aslında olması gereken bu, öteki türlü herkes her şeyi yapabiliyor olursa işler karışabilir, güvenlik ve gizlilik konularından bahsediyorum. Ancak, benim öyle bir derdim yok diyorsan bakman gereken şey umask konusu:

http://ersoybulduk.blogspot.com/2008/03/umask-kisaca-ontanimli-olarak-yeni.html
http://www.cyberciti.biz/tips/understanding-linux-unix-umask-value-usage.html

Yapılandırma dosyasında umask ayarı var, bakınırsan göreceksin. Tabi olayı gruplar üzerinden de çözmen mümkün sanırım. Eğer grubun müdahale yetkisi varsa ilgili kullanıcıları aynı gruba almak da çözüm sağlayabilir belki. Kullandığın yapıyı bilmediğim için net bir şey söyleyemiyorum ne yazık ki.
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.

CeRNoBiL

hocam merhaba,
Umask 022

kodunu conf dosyasında
Port 21

kodunun altına yerleştirdim proftpd restart ettim fakat yine dizinlele diğer kullanıcılar müdahale edemedi yazma silme vs.

aşağıdaki gibi <Directory> </Directory> tagları arasına yerleştirdim dizin olarak yine olmadı, acaba bi yerde hatamı yapıyorum ?
<Directory /opt/lampp/htdocs/siteler/*>
Umask 022
   <Limit All>
AllowAll
   </Limit>

</Directory>

heartsmagic

İlgili dosyada zaten şöyle bir bölüm var:

# Umask 022 is a good standard umask to prevent new files and dirs
# (second parm) from being group and world writable.
Umask 022  022


022 ile 755 oluyor. Eğer sahip değilse kullanıcı o dizine yazamaz, çizemez, dosya oluşturamaz. Kısacası senin istediğin şey 775 şeklinde olur ki orada da grup yazar, çizer. 777 malum herkese açıktır. Fakat dediğim gibi pek makul ayar değil. Bu olayı grup + umask ile doğru şekilde çöz bence. Kullanıcılar ortak bir grupta bulunsun ve dosya oluşturma 775 olsun. En azından herkese açık olmaz dizinler. Gerçi bu tamamen senin bileceğin bir mesele.
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.

CeRNoBiL

hocam teşekkürler. zaten 2 kullanıcı vardı 2 grupda. Onları sileceğim tek gurupda 2 kullanıcı tanımlayım. Umask 022 022 yapayım deneyim sonucu buradan yazayım.

CeRNoBiL

hocam merhaba nasıl yazacagımı bilemiyorum ama başlayayım.

söylediginiz gibi aşağıdaki komutlarla uid'si 3000 ve 3001 olan gid'si 3010 olan 2 kullanıcı oluşturdum;

ftpasswd --passwd --name samet --home /siteler
    --shell /bin/sh --uid 3000 --gid 3010

ftpasswd --passwd --name tip --home /siteler/tip
    --shell /bin/sh --uid 3001 --gid 3010


aşağıdaki komutla da gid si 3010 olan grubu olusturup 2 kullanıcıya bu gruba atadım.
ftpasswd --group --name users --gid 3010 --member samet --member tip

Umask ayarları 022 022 olarak proftpd.conf dosyasında zaten default olarak geliyor. <directory> taglarınada Umask 022 022 olarak ekledim ama hala samet kullanıcısının site1 içinde oluşturdugu dosyalara ve dizinlere müdahele edemiyor ne yazıyo nede başka birşey. Grub a o sitelerin tüm alt dizinlerine yazma okuma izni nasıl verebilirim ? samet kullanıcısı ile Filezilla ile bağlanıyorum /site1 klasörünü 775 yapıyorum bu sefer tip kullanıcısı sadece site1 klasörüne yazıyor çiziyor okuyor alt klasörlere birşey yapamıyor. 775 i tüm klasörlere mi uygula demem gerekiyor? kafam karıştı iice.. istiyorum ki isteyen kullanıcı istediği dizini oluştursun ve herkes birbirine müdahele edilsin. bu şekilde olursa tip kullanıcısı site1 klasörü içinde dosya oluşturdugunda buna ben müdahele edemeyecegim değil mi..

heartsmagic

Şimdi, Proftpd'de işler nasıl yürüyor tam bilmiyorum. Senin bir tane kullanıcın olmalı sistemde sanırım, onun üzerinden sanal kullanıcılar oluşturmalısın? Tam olarak böyle mi yapıyorsun yoksa kullanıcıların ayrı ayrı mı? Dizinlerin sahiplikleri kimin elinde? Dizinler bir gruba ait mi?
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.

CeRNoBiL

hocam merhaba, sorunu çözerek geldim yanınıza :)

1 tane tüm sitelere(site1 ve site2) müdahele edecek kullanıcım var, samet.
sadece site1 sitesine müdahele edecek kullanıcı var, kullanici1
sadece site2 sitesine müdahele edecek kullanıcı var, kullanici2

dediğiniz gibi olayı grup+umask olayı ile çözdüm. bu 3 kullanıcıyıda aynı grubun içerisine aldım ve dizinleri oluşturdum. Proftpd den de sanal kullanıcı passwd ve group dosyasını güncelledim ve Umask olarak tüm dizinlere 007 verdim, artık her kullanıcı ftp ye dosya yüklerken 775 chmod unda yazıyor ve gruplardaki tüm ftp kullanıcıları gördüğü kadarıyla dizinlere erişiyor. samet kullanıcısı site1 ve site2 ye şuan istedigi gibi yazıyor çiziyor :) DefaultRoot ~ yaptıgım içinde üst dizinlere çıkamıyorlar. Bir sorun yok gibi görünüyor şuan.

İlginize çok teşekkürler.