Hapse atılan SFTP için yazma izinlerinin değiştirilmesi oturum açmayı reddediyor


14

CHROOT kullanarak belirli bir dizine hapsedilen bir SFTP kullanıcısı nasıl ayarlanacağı konusunda birçok web sitesi ve forumda keşif yaptım. İşte izlediğim adımlar ama çalışmak için yazma izinleri alamıyorum.

Kurmak

sshd_config

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp


Match group webmaster
        X11Forwarding no
        ChrootDirectory %h
        AllowTcpForwarding no
        ForceCommand internal-sftp

Klasör oluşturun

mkdir /var/www/sites

Kullanıcı ve Grup Oluştur

useradd uploader
passwd uploader
usermod -d /var/www/sites uploader
groupadd webmaster uploader
groupadd www-data uploader

İzinler ve Mülkiyet

chown root:root /var/www
chmod 755 /var/www/sites

Artık bu ayarlarla kullanıcı yükleyici ana dizine SFTP gönderebiliyor ancak dizine yazamıyor.

Ortaya çıkan 2 tipik hata var, ya giriş yapamıyorum ya da yazma iznim yok.

Sisteme giriş hatası

Error:    Network error: Software caused connection abort
Error:    Could not connect to server


Changing permissions of /var/www/sites to 775 or 777 causes login error.
chown /var/www/sites to uploader:root causes login error.
chwon root:webmaster or root:www-data I have no write permissions

Şüphesiz bunu anlamaya çalışıyorum ve eğer birisi beni doğru yöne yönlendirebilirse, bunu çok takdir ediyorum.

Teşekkür ederim.

Yanıtlar:


16

Çözümü buldum. Kullanıcıya hapsedildi /var/www/sites. Sonra başka bir klasör oluşturdum /var/www/sites/site1.

Kullanırım:

chown root:webmaster /var/www/sites/site1 
chmod 775 /var/www/sites/site1

Bu, giriş dizininin oturum açmak için doğru izinlere sahip olmasını sağladı ve bir sonraki klasöre yazabildi.

Kullanıcının yazma erişimine ihtiyacı varsa , sahiplik ve 755 izinlerine sahip /var/www/sitesolan kullanıcıyı hapse atmanız gerekir . Daha sonra root: (grubunuz) ve 775 izinlerine sahip olmanız gerekir ./var/wwwroot:root/var/www/sites


1

Belki de en büyük çözüm:

mkdir /var/www/sites/myfirstuser/hisownsite
mkdir /var/www/sites/myseconduser/hisownsite

...

chown root:root /var/www/sites /var/www/sites/{myfirstuser,myseconduser} && chmod 755 /var/www/sites/{myfirstuser,myseconduser}

chmod 775 /var/www/sites/myfirstuser/hisownsite
chmod 775 /var/www/sites/myseconduser/hisownsite
chgrp www-data /www/sites/myfirstuser/hisownsite /var/www/sites/myseconduser/hisownsite

Kullanıcıları ekleyin:

useradd -d /var/www/sites/myfirstuser -s /bin/false -g www-data  dev1
useradd -d /var/www/sites/myseconduser -s /bin/false -g www-data dev2
passwd dev1
passwd dev2

Ardından, oluşturduğunuz her kullanıcı için şuna benzer bir ssh etiketi ekleyin: (örneğin "Eşleşme Kullanıcısı" yerine "Eşleşme Grubu" yönergesini de kullanabilirsiniz)

Match User dev1
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

Match user dev2
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

Böylece, ihtiyaç duyduğunuz tüm kullanıcıları köklü bir ortamda yönetebilirsiniz.

Hth, Fabrizio


Son kod bloğunuzu yeniden oluşturun: Matches, virgülle ayrılmış listelerde birden fazla hedefi destekler, böylece her iki kullanıcı için tek bir geçersiz kılma kümesine sahip olarak, şu başlıkta Match User dev1,dev2
underscore_d

1
Öyleyse, okuma / yazma erişimleri olan klasöre kilitlenmeleri için nasıl ayarlarsınız?
Kevin B Burns
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.