Bir kullanıcının giriş yapması nasıl engellenir, ancak Linux'ta “su kullanıcısına” izin verilir?


93

Bir kullanıcının " su - kullanıcı " kullanarak giriş yapmasına izin verirken, kullanıcının SSH kullanarak giriş yapmasını nasıl önlersiniz?

Kabuğu ayarlamaya çalıştım /bin/falseama denediğimde suişe yaramıyor.

Yalnızca giriş yapanlara izin vermenin birkaç yolu var sumı?

SSH AllowUsergitmenin yolu mu? (eğer böyle giderse bunu nasıl yaparım?)

Yanıtlar:


113

Sen kullanabilirsiniz AllowUsers / AllowGroups sadece birkaç kullanıcıları / ssh veya üzerinden giriş için izin verilen gruplar varsa DenyUsers / DenyGroups yalnızca birkaç kullanıcıları / gruplardır varsa değil giriş izin verdi. Bunun yalnızca ssh üzerinden giriş yapılmasını kısıtladığına dikkat edin, diğer giriş yöntemleri (konsol, ftp, ...) hala mümkündür. Çoğu ssh kurulumunda bu seçenekleri / etc / ssh / sshd_config dosyasına eklemeniz gerekir .

Eğer giriş kabuğunu / bin / false olarak ayarladıysanız, kullanabilirsiniz su -s /bin/bash user( seçtiğiniz kabuk ile / bin / bash komutunu değiştirin ).


herkese çok teşekkürler. Soruma 2+ puan kazanmayı beklemiyordum :) :) "Su -s ..." yapısını çok seviyorum ve konsol / ftp iyi bir nokta. Gerçekten "su-s" gibi bir şeyin peşindeydim.
NoozNooz42

3
Su-hilesi altındır. Apache, kimse, vb. İzinlerini test etmek için gereken sistem hesapları için her zaman kullanıyorum. Genellikle su - user -s / bin / bash. İsteğe bağlı argüman - kullanıcının doğrudan oturum açmış olması durumunda kullanıcının bekleyeceği şeye benzer bir ortam sağlamak için kullanılabilir.
dmourati

2
Yüklenecek çevre değişkenlerine (örneğin / etc / profile gibi) ihtiyacınız varsa, fazladan bir çizgi koymak şunları yapacaktır:su - -s /bin/bash user
Leons

13

Suyun hala çalışmasını istiyorsanız, suyunu geçici bir kabuk olarak kullanabilir sudo -u [username]veya geçebilirsiniz -s /bin/bash. Her ikisi de aynı şeyi bir kabuk olmadan yaparlar /etc/passwd.


7

Bir hesabın şifresi yoksa ( passwd -d kullanıcı adı ), etkileşimli olarak giriş yapamazlar (konsol, SSH, vb.). Geçerli bir kabukları varsa, su hala çalışacaktır. "Etkileşimli" olsa da not edin; Birisi hesap için bir SSH keypair kurmaya karar verirse, işe yarayacak!


kullanıcının su için geçerli bir kabuğu olması gerekiyor mu? Başka bir kullanıcıya dava açtıktan sonra hala aynı orijinal kabukta olduğunuzdan eminim ... aslında diğer kullanıcı olarak GİRİŞ YAPMAYIN ... Öyleyse, sadece kabuğunu / dev / null olarak ayarlamak işe yarayabilir lutfen.
Brian Postow

Evet, hala geçerli bir kabuk gerektiriyor: [root @ localhost ~] # su daemon Bu hesap şu anda mevcut değil. [root @ localhost ~] # su - daemon Bu hesap şu anda mevcut değil. (RHEL sistemi, arka
planın

3

Sshd_config içinde bir satır ekle DenyUser [username]

Bunun, kullanıcının konsoldan giriş yapmasını engellemeyeceğini unutmayın.


1
Olmalı DenyUsers, bir 's' ile.
David G

2

Yukarıda belirtilenlere ek olarak (kullanıcı şifresini devre dışı bırakma ve / veya ayarlama), oturum açma erişimini kontrol etmek için pam_access modülü (pam_access ve access.conf sayfasındaki arama sayfasına bakın) kullanılabilir.


1

diğerlerinin dediği gibi;

DenyUser usernameveya DenyGroup groupnamein sshd_config, ssh üzerinden keypair / password girişini engeller.

Yine de, genellikle AllowGroup sshbu satırlar boyunca bir şey gibi bir şey yapıyorum ve açıkça o gruba ssh erişimi gereken kişileri ekliyorum.

daha sonra, diğerlerinin söylediği gibi yapabilirsiniz: passwd -d usernamekullanıcıların şifresini boşaltmak için, böylece konsoldan giriş yapamazlar veya başka bir yolla. ya da daha iyisi passwd -l usernamehesabı 'kilitlemek' için. ssh'nin kilitli bir hesaba erişimi reddetmesi olasıdır, hatta anahtarlarla bile, ama pozitif değilim.


1
Aslında ssh, hesap şifresi kilitli olsa bile anahtar kimlik doğrulamasını kullanarak oturum açmanıza izin verecektir.
Richard Holloway

1

Bir yorumda bahsettiğim gibi, hala geçersiz bir mermi ile bir hesaba dava açabileceğinizi düşünüyorum. Bu nedenle, kullanıcının kabuğunu / dev / null değerine ya da bölmenin kabuğu ne olursa olsun, yine de o kullanıcıya su verebilmelisiniz ... ancak herhangi bir şekilde giriş yapma girişiminiz geri çekilir ...


1

edit / etc / shadow ekleyerek! parolanın başlangıcına

username:!<hash>:#####:#:#####:#:::

Yeni bir kurulumu güvence altına alırken, sudo kurduktan sonra yaptığım ilk şey budur, bu yüzden kimse sisteme giriş yapmak veya ssh ile root kullanıcısını kullanamaz, sudo kullanıcıları hala root kullanıcısı olarak çalışabilir.


0

Giriş yapmasına veya silmesine izin verilmeyen kullanıcı için bir şifre belirtmeyin.

# passwd -d myuser

0

Yalnızca kullanıcıyı kök hesabından dava etmek istediğinizi ve diğer tüm erişimi devre dışı bıraktığınızı varsayalım:

Bunu kullanın (root olarak çalıştırın):

usermod -e 1 -L user

Bu, şifre girişini devre dışı bırakır (diğer birçok cevapta da önerildiği gibi), ancak hesabı da sona erer . Süresi dolmuş bir hesaba giriş yapamazsınız, örneğin SSH tuşlarıyla. su userHesabın süresi dolduğunu belirten bir bildirim gösterse de yine de yapabilirsiniz .


0

Hangi mekanizmanın en iyi olduğunu bilmek, gereksinimlere bağlıdır. Gereksinimleri biliyorsanız, uygun mekanizmayı seçebilirsiniz. Yukarıdaki cevapların tümü bazı gereksinimler için geçerlidir.

Sadece SSH erişimini kısıtlamak mı istiyorsunuz? Posta veya ssh yöntemleri için erişime mi ihtiyacınız var? Erişim sadece kökten mi geliyor?

su - userKökten başka bir kullanıcı olması durumunda kullanıcı için bir şifre gerekir. Ancak, sudo -u user -ikullanıcı için bir şifre gerektirmez.

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.