Bir kullanıcıyı bir klasörle sınırlama ve klasörünü kaldırmalarına izin vermeme


28

Digitalocean'da ubuntu sunucum var ve birisinin sunucumdaki etki alanı için bir klasör vermek istiyorum, benim sorunum, kullanıcının klasörleri veya dosyalarımı görmesini veya klasörlerini açmasını istemiyorum.

Bu kullanıcıyı kendi klasöründe nasıl kısıtlayabilir ve taşınmasına ve diğer dosyaları / dizinleri görmesine izin vermemeyi nasıl sağlayabilirim?


Bu amaç için ayrı kullanıcı hesapları kullanmak isteyebilirsiniz.
Martin von Wittich

Veya belki Jailkit
FloHimself

chmod iyi bir çözüm değil çünkü sunucumdaki tüm klasörler için kullanamıyorum çünkü o klasörden çıkmadan önce kullandı
badr

aslında grup hakkında hiçbir fikrim yok çünkü daha önce kullanmadım, bana faydasının ne olduğunu açıklayabilir misiniz?
badr

Başka bir yöntem - serverfault.com/questions/497011/… .
slm

Yanıtlar:


26

Sorunumu bu şekilde çözdüm:

Yeni grup oluştur

$ sudo addgroup exchangefiles

Chroot dizinini oluşturun

$ sudo mkdir /var/www/GroupFolder/
$ sudo chmod g+rx /var/www/GroupFolder/

Yazılabilir grup dizini oluşturun

$ sudo mkdir -p /var/www/GroupFolder/files/
$ sudo chmod g+rwx /var/www/GroupFolder/files/

İkisini de yeni gruba verin

$ sudo chgrp -R exchangefiles /var/www/GroupFolder/

ondan sonra gidip /etc/ssh/sshd_configdosyanın sonuna ekledim:

Match Group exchangefiles
  # Force the connection to use SFTP and chroot to the required directory.
  ForceCommand internal-sftp
  ChrootDirectory /var/www/GroupFolder/
  # Disable tunneling, authentication agent, TCP and X11 forwarding.
  PermitTunnel no
  AllowAgentForwarding no
  AllowTcpForwarding no
  X11Forwarding no

Şimdi grubuma obama adıyla yeni bir kullanıcı ekleyeceğim:

$ sudo adduser --ingroup exchangefiles obama

Şimdi her şey bitti, bu yüzden ssh servisini yeniden başlatmamız gerekiyor:

$ sudo service ssh restart

Dikkat: kullanıcı şimdi filedizin dışında hiçbir şey yapamaz. Demek istediğim, tüm dosyası klasöründe olmalı.


1
Kullanıcıları olarak değiştirdim sudo su - obamave hala başkalarının dosyalarını görebilir @badr
alper

11

Kısıtlamalar mantıklı bir konudur ve tutarlı bir şekilde tanımlanması gerekir. Yapabileceğiniz şey, kullanıcı için kısıtlanmış bir kabuğu varsayılan kabuğudur .

Örneğin /bin/rksh, kullanıcının önceden tanımlanmış kabuğu yerine o kullanıcının kullandığı varsayılan kabuk olarak ayarlama (kısıtlı bir kornshell) /etc/profile.

NOT: Eğer bu isimde çalıştırılabilir sisteminizde mevcut değilse, o zaman bir sabit link oluşturun ln /bin/ksh /bin/rkshve kshismiyle sınırlı olup olmadığını belirler.

Sınırlı kabuk (örneğin) bir durumu önlemek olacaktır cdkomutu veya bir komutu belirtilmesi /çağırma (açık bir yol) ve bu değişen izin vermez PATH, SHELLya da ENVdeğişken ve çıkış yönlendirmeler de yasaktır.

Sen edebilirsiniz hala sağlamak önceden tanımlanmış (script uygulamacılarıdır kontrol altında!) Kullanıcı sınırsız bir ortamda bu özel komut dosyası (ler) yayınlanmasını sağlayacaktır kullanıcıya kabuk komut dosyalarını.


Bu cevap, chroot ortamını ayarlamaktan çok daha basit olacak, bu yüzden ben oy kullandım.
Azhrei

5

Komut chroot, bir kullanıcı için kısıtlı bir kök oluşturmanıza izin verir, bu soru kavramı chrootve nasıl kullanılacağını açıklar .

Güncelleme: Dijital okyanusta kurulan chroot hapishanesi aranıyor , çevrelerine özgü daha fazla dokümantasyon ortaya çıkıyor. İhtiyacınız olan şeyle ilgili olduğunu düşündüğüm bir çift.

Bir Ubuntu 12.04 VPS'de Test Etmek için Chroot Ortamlarını Yapılandırma

Kısıtlı SSH erişiminin kısıtlı hapsedilen kullanıcıya erişimine nasıl izin verilir?

İşte jailkit ilgilidir birini hangi FloHimself önerdi.


evet açıklıyorlar ama nasıl kullanacaklarını açıklamıyorlardı bazı övgülerle çalıştım ama şunu elde ettim: chroot: '/ bin / bash' komutunu çalıştıramadı: böyle bir dosya ya da dizin yok
badr

1
Doğru, ama şimdi chroot hapishanesini duydunuz, daha fazla araştırma yapabilirsiniz, Dijital Okyanus hakkındaki belgelere bazı linklerle bağlantılarını güncelledim, bu da ortamlarına göre daha fazla açıklama getirdim.
X Tian,
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.