Hesabı devre dışı bırakmadan bir kullanıcının girişini devre dışı bırak


87

Diyelim ki adduserkomutu kullanarak "bogus" adlı bir kullanıcı yarattım . Bu kullanıcının, hesabı devre dışı bırakmadan uygulanabilir bir giriş seçeneği olmayacağından nasıl emin olabilirim. Kısacası, hesabın üzerinden erişilebilir olmasını istiyorum su - bogus, ancak düzenli bir oturum açma istemiyle erişilebilir olmasını istemiyorum.

Etrafta arama yaparken, kullanıcının şifresini devre dışı bırakmam gerekiyor gibi görünüyor ancak yapmak passwd -d bogusyardımcı olmadı. Aslında, işleri daha da kötüleştirdi, çünkü artık bir şifre bile yazmadan sahte giriş yapabiliyordum.

Belirli bir hesap için düzenli girişleri devre dışı bırakmanın bir yolu var mı?

Not: Daha net olmak gerekirse, bir kullanıcıyı gdm gibi grafiksel giriş ekranlarının menü seçeneklerinden nasıl kaldıracağımı biliyorum, ancak bu yöntemler girişi gerçekten devre dışı bırakmadan hesabı gizler. Düzenli girişi tamamen devre dışı bırakmanın bir yolunu arıyorum, metin modu dahil.


2
Sizin -dşifresini silmek bayrağıdır. Bu onu devre dışı bırakmaktan farklı (kilitleme olarak kabul edildi, Çad'ın cevabına bakınız).
Caleb

1
Muhtemelen bunları tamamen devre dışı bırakmak istersiniz: unix.stackexchange.com/questions/7690/… Ayrıca bu Ubuntu sor sorusuna bakın: askubuntu.com/questions/282806/how-to-enable-or-disable-a-user
Simon Woodside

Yanıtlar:


102
passwd -l user

İstediğin şey bu.

Bu kullanıcı hesabını kilitleyecektir. Ama yine de yapabilirsin

su - user

ama su - userroot olarak olmalısın .

Alternatif olarak, aynı şeyi !içinde kullanıcının parolasını seçerek başarabilirsiniz /etc/shadow(bunların hepsi passwd -lperde arkasındadır). Ve passwd -ubunu geri alacağım.


27
Bu passwd -lseçeneği kullanarak, kullanıcının başka bir kimlik doğrulama kodu (örneğin bir SSH anahtarı) kullanarak giriş yapabileceğinin farkında olmalısınız.
pl1nk

2
Lütfen bunun nasıl önlenebileceğine dair önerilen bir çözüm için cevabımı aşağıda bulabilirsiniz .
Jörg Gottschlich

2
Bu ubuntu 16.04 üzerinde çalışmıyor. Son kullanma tarihini değiştirecek ve artık kullanıcılara izin vermeyecektir.
merlin

1
Bu --disabled-passwordverilen seçenekle aynı mı adduser? Bu kullanıcı olmadan --disabled-passwordve sonra çalışan bir kullanıcı oluşturmak , ilk etapta passwd -lçalıştığınız adduserile aynı sonucu --disabled-passwordveriyor mu?
haridsv

39

Hakkında passwd(1)yazdığı adam sayfası passwd -l:

Bunun hesabı devre dışı bırakmadığını unutmayın. Kullanıcı başka bir kimlik doğrulama belirteci (örneğin bir SSH anahtarı) kullanarak giriş yapabilir. Hesabı devre dışı bırakmak için yöneticiler usermod - expiredate 1 kullanmalıdır (bu, hesabın son kullanma tarihini 2 Ocak 1970 olarak ayarlayın).

Yani

usermod --expiredate 1 [LOGIN]

Bir kullanıcının artık kullanamaması gereken bir hesabı devre dışı bırakmanın doğru yolu gibi görünüyor (örneğin şirketten ayrıldığı için).


4
CentOs 6.3'te, bir kullanıcı için bağlantıyı passwd -lengelliyor sshve usermod --expiredate 1yapmıyor!
fduff

1
CentOS 7.4'ümde, passwd -lartık sshbir kullanıcı için bağlantıları usermod --expiredate 1 userengellemiyor ve engelliyor. Başına bir kullanıcıyı engellemek için man passwdde kullanabilirsiniz chage -E 0 user. Başvurduktan sonra usermodveya chageyapabilirimsudo su user
user12345 23:17

usermod --expiredate 0 [LOGIN]ayrıca çalışır, sona erme tarihini 1 Ocak 1970 olarak belirlerken, 1 bunu 2 Ocak 1970 olarak ayarlar.
slm

"0 değeri, süresi dolmamış bir hesap olarak veya 1 Ocak 1970'de sona erme olarak yorumlandığından kullanılmamalıdır." - gölge (5)
Johannes

28

Bir kullanıcının oturum açmasını engellemek için iki yöntem vardır:

  1. kullanıcıyı düzenleyerek kilitleyebilirsiniz /etc/passwd
  2. passwdKomutu doğrudan -lanahtar ile vererek

İkinci durumda, kullanıcı başka bir kimlik doğrulama belirteci (örneğin bir SSH anahtarı) kullanarak giriş yapabilir.

Yöntem 1

  1. Nologin nerede olduğunu bulun: / bin / nologin veya / bin / sbin / nologin
  2. Bir terminal aç ve root olarak giriş yap
  3. tip vi /etc/passwd

Artık passwddosyayı Insdüzenlemek için dosyadasınız.

Aşağıdaki satırı nologinseçenekle değiştirin ( /bin/bashkullanıcının giriş yapabileceği anlamına gelir).

root:x:0:0:root:/root:/bin/bash

buna. nologinkullanıcının giriş yapamadığı anlamına gelir.

root:x:0:0:root:/root:/bin/nologin

(veya / bin / sbin / nologin ile)

  1. Vi kapatmak Esc :wq

Yöntem 2

Kullanıcıyı kilitlemek için: passwd -l username

Kullanıcının kilidini açmak için: passwd -u username


1
Ubuntu 14.04 sisteminde /usr/sbin/nologinbunun yerine buldum /bin/nologin.
Dennis Williamson,

7

Oldukça kolay bir iş sadece /etc/passwddosyada bazı değişiklikler yapmak zorunda .

Basitçe, varsayılan olarak varsayılan olan /bin/bashkabuğu değiştirmek zorundasınız, yani bu kabuğu kullanarak giriş yapabilirsiniz /bin/nologinya da /bin/false. Bunu değiştirmek için tavsiye edilir /bin/nologin, çünkü /bin/falseeski.


4

İçine /bin/falsekabuk olarak ayarla/etc/passwd


18
Kişi kabuğu ayarladığında, /bin/falsekullanıcı olarak davranması için su kullanılmasını önler. Ek olarak, /bin/falsehata kullanmak veya yanlış giden şeyle ilgili başka ipucu vermemek de - bir kullanıcının bile bir kabuk almak için su kullanılmasını önlemek istediği durumlarda, /sbin/nologinbir hata üreten kabuk değiştirilmelidir .
HedgeMage

8
Hayır, suhâlâ sahip kullanıcılar için mümkündür /bin/falseiçinde kabuklar passwd- sadece seçeneğini kullanın --shell: su - --shell /bin/sh bogus.
Matej Kovac

1
/usr/sbin/nologinaynı etkiye sahip /bin/false, ancak aynı zamanda yararlı bir bilgi mesajı gösterir.
Rördün

0

Kullanıcıyı passwd -l userkomutu kullanarak kilitlediğimizde !!, /etc/shadowdosyada " " gösterilir . Ancak, kök hesaptan bir kullanıcı kabuğuna geçebiliriz, ancak diğer normal kullanıcılar giriş kabuğundaki kullanıcı hesabına geçemeyiz.

Biz de sağlayarak hesabı devre dışı bırakabilir /bin/nologinya da /bin/falsegiriş /etc/passwddosyası. Yani kullanıcı giriş yapamayabilir.


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.