Yalnızca Centos / linux kurulumunda belirli / dir / erişimli bir FTP kullanıcısı nasıl oluşturulur


44

Bu yüzden bir VPS - CentOS Linux kurulumundayım. Sunucuda vsFTPd var. Şu anda kök kullanıcım aracılığıyla sunucuya SFTP erişimim var, ancak şimdi yalnızca sunucudaki belirli bir dizine FTP erişimi olan yeni bir kullanıcı oluşturmaya çalışıyorum, aşağıdakileri yaptım:

1. mkdir /var/www/mydomain.com
2. mkdir /var/www/mydomain.com/html
3. useradd <-username>
4. passwd <-username>
5. chown –R <-username> /var/www/mydomain.com
5. groupadd <-groupname>
6. gpasswd -a <-username> <-groupname>
7. chgrp -R <-groupname> /var/www/mydomain.com
8. chmod -R g+rw /var/www/mydomain.com

Yapmaya çalıştığım şey, kullanıcıyı SADECE erişebilecek şekilde oluşturmaktır /var/www/mydomain.com - Kullanıcının doğru klasöre doğru şekilde giriş yaptığını gözlemledim, ancak kullanıcı daha sonra diğer dizinlere "geri" dönebiliyor. Kullanıcının belirli bir klasöre yapışmasını ve "göz atmayı" geri alamamasını istiyorum .

Herhangi bir fikir?

Chrooting ile ilgili farklı makaleler buldum, ancak basitçe yukarıdaki adımlarda kullanmak için bir çözüm bulamadım.


digitalocean.com/community/tutorials/… Sorununuzu çözmek için bunu takip edebilirsiniz
Jack,

Ubuntu 18'de olanlar için burada sürümüne özgü digitalocean.com/community/tutorials/…
Dung

Yanıtlar:


39

Bu oldukça basit.

Vsftpd.conf dosyasına aşağıdaki seçeneği eklemeniz gerekir

chroot_local_user=YES

Yapılandırma dosyasındaki belgeler kendi kendini açıklayıcı niteliktedir:

# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().

Bu, kullanıcının kullanıcının HOME olarak yapılandırdığınız klasöre erişebileceği anlamına gelir. Ancak, bir kullanıcı şifresi girişi örneği var:

upload_ftp:x:1001:1001::/var/www/sites/:/bin/bash

Kullanıcının giriş dizinini aşağıdaki komutla ayarlayın

usermod -d /var/www/my.domain.example/ exampleuser

Not: Örneğimde, bu kullanıcı aynı zamanda Linux içindeki bazı zamanlanmış görevler için geçerli bir kullanıcıdır. Bu gereksiniminiz yoksa, lütfen /sbin/nologinbunun yerine kullanıcının kabuğunu değiştirin bash.


Selam millet! Bu konuda bana cevap vermeye zaman ayırdığınız için çok teşekkürler. Yani benim vsftpd.conf dosyamda ive "chroot_local_user = YES" satırını ekledi - sonra anladığım kadarıyla kullanıcıma gösterdiğinize benzer bir satır eklemem gerekiyor? İtiraf etmeliyim ki, sağladığınız örnekte ne yazacağınızı tam olarak bilmiyorum. "1001" vb. o nedir? Kullanıcımın "im_a_linux_noob" olarak adlandırıldığını ve bu kullanıcının dizininin: "/var/www/mydomain.com" olduğunu varsayalım - bu nasıl görünür?
user1231561

Bunu, görevimde yaptıklarımdan başka hiçbir ilave adım olmadan da yapabilir miyim? Yani 1-8 yapıyor ve sonra neyi tanımladığını eklemek hile yapmalı?
user1231561,

Selam. Yukarıdaki örnekte /etc/passwd, upload_ftp adlı bir kullanıcıyı temsil eden dosyanın yalnızca bir satırı (değiştirilmiş) , 1001: 1001 Kullanıcı Kimliği ve Grup Kimliği, / var / www / sites kullanıcının ana dizinidir (ve vsftpd'nin okuduğu parametre) ve / bin / bash, kabuk. Muhtemelen ne durumda eksik kullanıcısına giriş dizini olduğunu ve şu komutla çözülebilir: usermod -d /var/www/mydomain.com <username>. Şerefe :)

3
Evet, çok teşekkürler. Yine de bir sorun. Normal FTP ile iyi bir şekilde giriş yapar, ancak SFTP olarak giriş yaptığımda - sonra tekrar göz atabilirim - herhangi bir fikir?
user1231561,

1
Elbette sftp ftp sunucunuz tarafından değil, ssh sunucunuz tarafından yönetiliyor. "Ham" bir şekilde: SFTP = SSH + FTP; FTPS = FTP + SSL. Burada sftp ile ilgili bir iş parçacığı var ve onu aviod konu çoğaltması için alıntı yapacağım tamam mı? ;) unix.stackexchange.com/a/64541/34720

6

Yapılandırmayı içerecek şekilde değiştirdikten sonra chroot_local_user=YES

Kullanıcının kabuğunu /usr/sbin/nologin, parola sızması durumunda bir miktar riski azaltacak şekilde değiştirebilirsiniz (giriş dizinini de ayarlayın). Kabuğun da listelenmesi gerekir, aksi takdirde /etc/shellskimlik doğrulama başarısız olur.

usermod -d /var/www/my.domain.example -s / usr / sbin / nologin exampleuser

-d, --home HOME_DIR Kullanıcının yeni giriş dizini. -M seçeneği verilirse, geçerli giriş dizininin içeriği, henüz mevcut değilse, oluşturulan yeni giriş dizine taşınır.

-s, --shell SHELL Kullanıcının yeni giriş kabuğunun adı. Bu alanın boş bırakılması, sistemin varsayılan giriş kabuğunu seçmesine neden olur.

https://security.appspot.com/vsftpd/FAQ.txt


4

Bir kullanıcıyı ayarlamak ve kullanıcının yalnızca FTP (yani SSH yok) üzerinden erişmesine izin vermek ve proftpd'deki belirli bir (kullanıcı girişi) dizine erişimi sınırlandırmak için adımlar şunlardır :

  1. Yeni Kullanıcı Ekle: adduser newusername

  2. Şifreyi belirle: passwd newusername

  3. Kullanıcı ana dizini varsayılandan yeni bir klasöre değiştirin:

    usermod -d /target/directory username

  4. shellsDosyayı düzenle : vi /etc/shellsve /dev/nullsonuna ekle

  5. Dosyadaki newusernamegirişi değiştirin: girişin şu şekilde görünmesi için eklemek için :passwdvi /etc/passwd/./newusername

    newusername:x:502:502::/home/ftp/./newusernamehomedirectory/:/dev/null

    4. ve 5. adımlar için ayrıntılar:

  6. Düzenleme /etc/proftpd/proftpd.confdosyası ve yorumsuz çizgiDefaultRoot ~


-4

Kök hesabınızla birlikte kök klasör izinlerini 711 olarak ayarlayın .


-4

Bu komutu çalıştırın:

useradd -d ftp_user:chown 711 /etc/init.d/

2
Gönderinizi, en azından bazı yararlı açıklamalara veya belgelere sahip olacak şekilde genişletmeyi düşünmelisiniz.
HalosGhost

Bu korkunç bir cevap. Esasen ftp kullanıcısına /etc/init.d/ dizinine tam erişim hakkı veriyorsunuz - tam delilik. 711 açıkladı - permissions-calculator.org/decode/0711
Tisch
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.