Sadece belirli bir dizine erişebilen bir SSH kullanıcısı oluşturabilir miyim?


45

Herhangi bir linux komutunu çalıştırabilen ve açıkça tüm disk alanlarına erişebildiğim için, SSH'yi root hesabımla kullanmaya bağlanabileceğim bir Sanal Özel Sunucum var.

Bu sunucuya SSH kullanarak da erişebilecek, ancak yalnızca belirli bir dizine erişebilecek başka bir kullanıcı hesabı oluşturmak istiyorum. /var/www/example.com/

Örneğin, bu kullanıcının içinde HUGE error.log dosyası (500 MB) olduğunu hayal edin Bu /var/www/example.com/logs/error.log dosyaya FTP kullanarak erişirken, bu kullanıcının günlüğün son satırlarını görüntülemek için 500 MB indirmesi gerekir, ancak onun olmasını isterim. Böyle bir şeyi yürütmek mümkün:

tail error.log

Bu nedenle, SSH kullanarak sunucuya erişebilmesi için ona ihtiyacım var, ancak ona tüm sunucu alanlarına erişim vermek istemiyorum.

Bunu nasıl yapabilirim?

Yanıtlar:


29

chroot Kullanıcı.


Güncelleme:

Vincent Danen tarafından TechRepublic makale diyor ki:

OpenSSH 4.9p1'in piyasaya sürülmesiyle, artık kullanıcıları ev dizinleriyle sınırlamak veya SFTP hizmetlerine erişimlerini sağlamak için üçüncü taraf korsanlara veya karmaşık chroot kurulumlarına güvenmek zorunda değilsiniz.

/ etc / ssh / sshd_config dosyasını (bazı dağıtımlarda / etc / sshd_config) düzenleyin ve aşağıdaki seçenekleri ayarlayın:

Subsystem     sftp   internal-sftp
Match Group sftp
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

Dosyanın sonunda “Maç” direktifinin olduğundan emin olun. Bu, OpenSSH'ye sftp grubundaki tüm kullanıcıların ev dizinlerine chroot edilmesi gerektiğini söyler (% h, ChrootDirectory komutunda

Chroot yapmak istediğiniz tüm kullanıcılar için bunları kullanarak sftp grubuna ekleyin:

# usermod -G sftp joe
# usermod -s /bin/false joe
# chown root:root /home/joe
# chmod 0755 /home/joe

Yukarıdaki usermod komutu, sftp grubuna kullanıcı joe ekler ve kabuklarını / bin / false olarak ayarlar, böylece kesinlikle kabuk erişimini alamazlar. Chown ve chmod komutları, dizin için gerekli izinleri ayarlayacaktır. Bu izinler ayarlandığında, kullanıcının dosya yüklemesine ve indirmesine izin verilir, ancak kök dizinde dizinler veya dosyalar oluşturamaz

Chrooting kabuk hesapları, belirli aygıt dosyalarının ve bir kabuğun kullanıcının giriş dizininde bulunmasını gerektirdiğinden biraz daha karmaşıktır. Aşağıdaki komutlar Mandriva Linux'ta çok basit bir chroot sistemi kuracak:

# mkdir /chroot
# cd /chroot
# mkdir {bin,dev,lib}
# cp -p /bin/bash bin/
# cp -p /lib/{ld-linux.so.2,libc.so.6,libdl.so.2,libtermcap.so.2} lib/
# mknod dev/null c 1 3
# mknod dev/zero c 1 5
# chmod 0666 dev/{null,zero}
# mkdir -p /chroot/home/joe

Yukarıdakilerle, kullanıcı joe ssh içerisine girebilir ve chroot ile sınırlandırılır. Ne yazık ki, bu pek bir şey yapmıyor, ancak size nasıl kurulabileceği konusunda bir fikir veriyor. Ne vermek istediğinize bağlı olarak, ek kitaplıklar ve ikili dosyalar kurmanız gerekecektir.


Ubuntu Topluluk Sitesi diyor

Chroot oluşturma

  1. Dchroot ve debootstrap paketlerini kurun.

  2. Yönetici olarak (yani sudo kullanarak), chroot için yeni bir dizin oluşturun. Bu prosedürde, dizin /var/chrootkullanılacaktır. Bunu yapmak sudo mkdir /var/chroot için komut satırına yazın.

  3. Yönetici /etc/schroot/schroot.confolarak bir metin düzenleyicide açın. Yazın cd /etc/schroot, ardından gksu gedit schroot.conf. Bu dosyayı düzenlemenizi sağlar.

  4. Aşağıdaki satırları ekleyin schroot.confve ardından dosyayı kaydedin ve kapatın. your_usernameKullanıcı adınızla değiştirin .

    [lucid] Description = Ubuntu Lucid konumu = / var / chroot önceliği = 3 kullanıcı = kullanıcı_adı grupları = sbuild root-groups = root

Bir terminal açın ve şunu yazın:

sudo debootstrap --variant=buildd --arch i386 lucid /var/chroot/ \ 
http://mirror.url.com/ubuntu/

Bu, chroot'ta Ubuntu 10.04 (Lucid Lynx) 'in temel bir kurulumunu yaratacaktır. Paketlerin indirilmesi biraz zaman alabilir. Not: Lucid'i seçtiğiniz Ubuntu sürümüyle değiştirebilirsiniz. Not: Yukarıdakileri mirror.url.com, sizin için yerel olan geçerli bir arşiv aynasının URL’si ile değiştirmeniz gerekir . Şimdi temel bir chroot oluşturulmalıydı. Tip sudo chroot /var/chroot chroot'dan içinde bir kök kabuğu geçmek için.

Chroot'u kurma

DNS çözümlemesi ve erişim gibi özellikler sağlayan chroot'u ayarlamak için atabileceğiniz bazı temel adımlar vardır /proc.

Not: Bu komutları chroot'un dışındaki bir kabuğa yazın.

/proc Dosya sistemini chroot'a monte etmek için aşağıdakini yazın (işlemleri yönetmek için gereklidir):

sudo mount -o bind /proc /var/chroot/proc  

DNS çözünürlüğüne chroot içinden izin vermek için aşağıdakini yazın (Internet erişimi için gereklidir):

sudo cp /etc/resolv.conf /var/chroot/etc/resolv.conf 

Bir chroot'a varsayılan olarak çok az paket yüklenir (sudo bile kurulmaz). apt-get install package_namePaketleri kurmak için kullanın .


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.