Kullanıcıların kendi giriş dizinleri dışındaki bir şeye erişmelerini nasıl önleyebilirim?


22

Kullanıcıların kendi giriş dizinleri dışındaki bir şeye erişmelerini nasıl önleyebilirim?

Örneğin, altında bir NTFS bölümü var /media/ntfs, bu yüzden kullanıcı ssh ile oturum açarsa bu bölüme ulaşabilir. Kullanıcıları cdana klasörlerinden nasıl devre dışı bırakabilirim ?

Yanıtlar:


22

İlk önce ihtiyacınızı yeniden değerlendirin. Çözmeye çalıştığınız sorun nedir? Neden kullanıcıların ev dizinlerini terk etmelerini önlemek istiyorsunuz? Diğer kullanıcıların giriş dizinleri gibi belirli başka dizinlere girmelerini istemiyor olmanız yerine, değil mi?

Kullanıcıların ana dizinden çıkmalarını önlemek çok zordur. Aslında bu da biraz saçma (açıklama izleniyor). Kullanıcıların, girmelerini istemediğiniz dizinlere girmesini önlemek çok daha kolaydır.

Öncelikle, evet, kullanıcılara kısıtlı bir kabuk denebilir , bkz man rbash. Bu, cdbaşka yerlere girmelerini engeller , ancak yalnızca bu kabuğun içinde. Kullanıcı başlarsa viveya nano(veya bir dosyayı açmaya muktedir herhangi bir başka programı) onlar yine açık dosyaları herhangi bir yere sistemde. Nitekim, kısıtlanmış bir kabuk örneğin cat /etc/passwd;

Bir sonraki adım bir kök hapishane. Topluluk wiki ve bu soruda daha fazla bilgi . Bir kök hapishanesi, kullanıcıları kasıtlı olarak koyduğunuz dosya ve komutlardan başka hiçbir şeye erişemedikleri duvarlı bir bahçenin içine kilitlese de, kök hapishaneler gerçekten kullanıcılardan ziyade güvenilmeyen yazılımları izole etmeye yöneliktir . Özellikle, yüksek ayrıcalıklarla çalışması gereken yazılımlar içindir - dolayısıyla bir kök hapishanesidir.

Diğer taraftan, kullanıcılar güvenilirdir : yüksek ayrıcalıklara sahip olmadan kimliklerini doğrulamak ve çalıştırmak zorunda kalmışlardır . Bu nedenle, dosya izinleri, sahip olmadıkları dosyaları değiştirmekten ve görmemesi gereken şeyleri görmekten alıkoymak için yeterlidir. Kullanıcıların bir dosyanın içeriğini okumasını önlemek için, dünyadaki okunabilirliğini ile kaldırın chmod o-r FILE. Kullanıcıları bir dizinin dışında tutmak için dünya ile erişilemez duruma getirin chmod o-rwx DIR.

Dünyada okunabilirlik yine de iyi bir sebepten ötürü varsayılandır: kullanıcılar aslında dosya sistemindeki malzemelerin çoğuna ihtiyaç duyarlar . Kullanıcıları kendi evlerinde kilitlemeyin, çünkü dışarıda sırlar vardır.

Kullanıcıları kendi dizinlerinde kilitlemek neden biraz saçma

Yararlı bir şey yapmak için kullanıcıların komutlara ve uygulamalara erişmesi gerekir. Bunlar /binve gibi dizinlerdedir /usr/bin, bu yüzden ihtiyaç duydukları tüm komutları oradan ev dizinlerine kopyalamazsanız, kullanıcıların /binve erişimine ihtiyaçları olacaktır /usr/bin. Ama bu sadece başlangıç. Uygulamalar, /usr/libve altındaki kütüphanelere ihtiyaç duyarlar ve /libbunlar içinde bulunan sistem kaynaklarına /devve içindeki /etcve yapılandırma dosyalarına erişebilir /usr/share.

Bu sadece salt okunur bölümdü. Uygulamalar ayrıca isteyecek /tmpve sık sık /varyazmak isteyecektir . Bu nedenle, bir kullanıcıyı ana dizini dahilinde sınırlamak istiyorsanız, ona çok fazla kopyalamak zorunda kalacaksınız. Aslında, hemen hemen tüm bir temel dosya sistemi - zaten sahip olduğunuz, yer almaktadır /.


2
Bu bana bir şey ifade etmiyor, bir kullanıcının sadece 1 klasöre erişmesini istemenin birçok nedeni olabilir. Bir örnek, dosyaları 1 sunucudan diğerine aktarmak uğruna erişim veriyor olabilir. Bunun yerine , herhangi bir kullanıcının tam sisteme göz atmasının biraz saçma olduğunu düşünüyorum .
Richard,

Benim durumumda, cihazların uzaktan yönetimi için cihazların makineye ssh geri dönmesine izin verecek bir kullanıcı ayarlıyorum. Bu yüzden, söz konusu kullanıcı hesabını mümkün olduğu kadar sınırlandırmak istiyorum, ancak tehlikeye girerse - başarılı bir bağlantıya ihtiyacım var. Aptalca diyemem, sadece başarmaya çalıştığın şeye bağlı.
John

7

Ben kullanıcıya erişim sağlamak için gerekli samüzerindeki /var/xyzdiğer klasörlere sadece ve blok listeleme içeriğini içinde/var/

Aşağıdaki komut dizisini kullandım:

setfacl -R -m user:sam:--- /var/

setfacl -m user:sam:rx /var/

setfacl -R -m user:sam:rwx /var/xyz/

Böylece kullanıcı, altında listelenen dizinleri görebilir, /var/ancak alt dizinleri altındaki içerikleri göremez /var/xyz.


2
Askubuntu'ya hoş geldiniz! Bunu, ev dizinleriyle ilgili sorulan soruya bir cevap olarak görmüyorum.
Yaşlı Geek,

3
@ElderGeek OP sadece aynı komutları kullanamaz, fakat ana dizini için?
Seth

@Evet Evet, ancak ortalama bir kullanıcı için net mi olacak?
Yaşlı Geek

3
@Elder Evet, inanıyorum. Mükemmel değil, ama yine de bir cevap
Seth

1

Diğer dizinlere, özellikle diğer kullanıcıların ev dizinlerine erişimi kısıtlamanın yanı sıra, bir kullanıcının ll /homesistemdeki diğer kullanıcıların adlarını da görmesini ve görmesini istemedim .

Bunu önlemek için kök çalıştırma chmod 701 /home. Bu, /homedizinin kendisinin elbette "okuma / yazma / çalıştırma" olmasını sağlar, ancak yalnızca herkese "çalıştırma" yapar. /homehala erişilebilir cd, ancak kullanıcılar içeriklerini okuyamıyor - diğer kullanıcıların ana klasörleri ve dolayısıyla kullanıcı adları.


Bu, kesinlikle bir sorunun cevabı olmasa da, hala çok ilginç ... Müşterilerin ssh alabileceği uzak bir sunucuyu işlettiğiniz bir durumda, bu harika. Diğer müşterilerin kullanıcı adlarının gizliliğini korurken, bekledikleri gibi hareket edebilirler.
Jack_Hu
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.