Yanıtlar:
Bu basit. Sadece giriş dizini, erişebilmeniz için ihtiyacınız olana ayarlanmış yeni bir kullanıcı oluşturun (bu komutun sudo
kök kabuğun altında veya altında olması gerekir ):
adduser --home /restricted/directory restricted_user
Bu bir kullanıcı yaratacak restricted_user
, dizin /restricted/directory
ve dizindeki izinler kullanıcının yazabileceği şekilde ayarlanacaktır. Varsayılan olarak başka bir dizine yazma yeteneğine sahip olmaz.
Eğer dizininiz zaten varsa, eklenmiş adduser
bir --no-create-home
seçenekle komutu çalıştırabilir ve izinleri manuel olarak (ayrıca root haklarıyla da) ayarlayabilirsiniz:
chown restricted_user:restricted_user /restricted/directory
chmod 755 /restricted/directory
Dünyaca yazılabilir dizinleri bile bu kullanıcı için erişilemez duruma getirmeniz gerekiyorsa, iki seçenek vardır.
1) Kullanıcıya etkileşimli bir kabuk oturumu sağlamak istiyorsanız, bir chroot hapishanesi oluştururken bu kılavuzu izlemeyi düşünün (içinde /restricted/directory
).
Bundan sonra, aşağıdakini aşağıdakilere ekleyin sshd_config
:
Match user restricted_user
ChrootDirectory /restricted/directory
2) Bağlantının bitiş noktası ile sunucunuz arasındaki dosyaları kopyalaması için ona ihtiyacınız varsa, her şey çok daha kolaydır. Şunun sonuna şu satırları ekleyin sshd_config
:
Match user restricted_user
ForceCommand internal-sftp
ChrootDirectory /restricted/directory
Subsystem sftp internal-sftp
Ardından, başına Subsystem sftp /usr/lib/openssh/sftp-server
bir ( #
) işareti koyarak .
SSH sunucunuzu yeniden başlattıktan sonra (yeniden başlatma sırasında etkileşimli oturumları sonlandırmaz, bu nedenle bir şeyi yanlış yapılandırmış olsanız bile güvenlidir; ayrıca, hala oturum açabildiğinizi kontrol etmeden önce çalışan oturumunuzu kapatmaz), her şey çalışmalıdır. istendiği gibi.
Subsystem sftp internal-sftp
Satırı ikinci örneğinizde Match
bloğun üzerine yazmalısınız . Aksi halde ssh bir hata çıktısı alır ve başlamaz.
Belirli bir dizinde dolaşamayan (örneğin, üst dizine vb.) Kısıtlı bir kullanıcı oluşturmanın ve sınırlı / seçili bir komut kümesine sahip olmanın en kolay yolu, bir Kısıtlı Kabuk kullanmaktır. Ref:
İlk önce rbash
(kök kullanıcı olarak çalıştırma) adlı bir sembolik bağlantı oluşturun .
ln -s /bin/bash /bin/rbash
Sonra bu Sınırlı Kabuk ile normal bir kullanıcı oluşturun ve ana dizini istediğiniz klasöre ayarlayın:
useradd -s /bin/rbash -d /home/restricted_folder username
Kısıtlanmış Kabuk olmasa bile, bu kullanıcıyı açıkça sudoer listesine veya herhangi bir özel gruba eklemezseniz, varsayılan olarak sınırlandırılır.
Kısıtlanmış Kabuk ile aşağıdakilere izin verilmez veya uygulanmaz:
cd ile dizinleri değiştirme
SHELL, PATH, ENV veya BASH_ENV değerlerini ayarlama veya ayarlama
/ içeren komut adlarını belirtme
a / as argümanı içeren bir dosya adı belirtmek. yerleşik komut
Bir eğik çizgi içeren dosya adını, hasp builtin komutuna -p seçeneğinin argümanı olarak belirtme
Başlangıçta kabuk ortamından işlev tanımları alma
SHELLOPTS'ın başlangıçta kabuk ortamından ayrıştırılması
>,> |, <>,> &, &> ve >> yönlendirme işleçlerini kullanarak çıktının yönlendirilmesi
Kabuğu başka bir komutla değiştirmek için exec builtin komutunu kullanma
enable yerleşik komutuna -f ve -d seçenekleriyle yerleşik komutları ekleme veya silme
Devre dışı bırakılmış kabuk yerleşiklerini etkinleştirmek için enable builtin komutunu kullanma
komut yerleşik komutuna -p seçeneğini belirterek
set + r veya set + o ile kısıtlanmış modun kapatılması.
Bu kısıtlamalar, başlangıç dosyalarından sonra uygulanır.
Ayrıca / İsteğe bağlı olarak, kullanıcıyı sınırlı / seçilmiş bir komut kümesiyle kısıtlamak için, söz konusu kullanıcıyla salt okunur bir .bash_profile oluşturabilirsiniz.
PATH=$HOME/bin
ve bu kullanıcıya ~ / bin klasörüne izin verdiğiniz komutları symlink:
ln -s /bin/ls /home/restricted_folder/bin/ls
ln -s /bin/mkdir /home/restricted_folder/bin/mkdir
ln -s /bin/rm /home/restricted_folder/bin/rm
vb.
HTH