Bir hesabı nasıl tamamen devre dışı bırakırım?


48

Bir hesabı nasıl tamamen devre dışı bırakırım? passwd -lkimsenin bir şifre kullanarak bir hesaba giriş yapmasına izin vermeyecek, ancak yine de özel / genel anahtarlar üzerinden giriş yapabilirsiniz. Hesabı tamamen nasıl devre dışı bırakabilirim? Hızlı düzeltme olarak dosyayı yeniden adlandırdım authorized_keys_lockme. Başka bir yolu var mı?


3
Sonunda yeniden etkinleştirmeyi mi düşünüyorsunuz? Sistem kilitlendi mi? Olmazsa, hesabı basitçe kaldırırdım.
Ken

Yanıtlar:


59

Göre doğru yolu usermod(8):

usermod --lock --expiredate 1970-01-02 <username>

(Aslında, argüman --expiredate, biçimdeki geçerli tarihten önce herhangi bir tarih olabilir YYYY-MM-DD.)


Açıklama:

  • --lockkullanıcının şifresini kilitler. Ancak, başka yöntemlerle giriş yapılması (örneğin, genel anahtar) yine de mümkündür.

  • --expiredate YYYY-MM-DDbelirtilen tarihte hesabı devre dışı bırakır. man shadow 51970-01-01'e göre belirsiz bir değerdir ve kullanılmayacaktır.

Bunu makinemde test ettim. Bu komutu yürüttükten sonra ne şifre ile giriş ne de genel anahtar mümkün değildir.


Hesabı daha sonraki bir tarihte yeniden etkinleştirmek için:

usermod --unlock --expiredate '' <username>

7
/ Etc / shadow süre sonu alanını 0 olarak ayarlayacağından 1970-01-01 kullanmayın. Shadow (5) 1 Ocak 1970. Lütfen kullanın: usermod --lock - expiredate 1970-02-02 <kullanıcı adı>
Marcus Maxwell

4
Bu işlemi tersine çevirme yöntemini de sağlayabilirseniz çok iyi olur. usermod --unlock --expiredate '' usernameYapacak gibi görünüyor .
Bob

3
@MarcusMaxwell'in yazdığı şeye şunu ekliyor: Şunun için yazılan sayfa usermod:Note: if you wish to lock the account (not only access with a password), you should also set the EXPIRE_DATE to 1.
Zero3

1
Neden --expiredate 1tek başına yeterli değil?
Thomas Jensen,

Ancak sudo su usernamebaşka bir hesap kullanarak iş gibi görünüyor.
xuhdev

10

Şifreyi kilitle ve kabuğu değiştir /bin/nologin.

sudo usermod --lock --shell /bin/nologin username

(Ya da daha net olarak sudo usermod -L -s /bin/nologin username,.)


'Kabuğu / bin / nologin' olarak nasıl değiştiririm?

5
@ mattdm Bir kullanıcı hala yürütülecek bir komutu belirleyebileceği için bu tam bir çözüm değildir. Örneğin ssh username@hostname /bin/bash, varsayılan kabuğu ne olursa olsun, kullanıcıya bir bash istemi verecektir.
phunehehe

4
@phunehehe - denediniz mi? Günlükte, "kabuk [bin / nologin olmadığından kullanıcı adına] izin verilmiyor" ifadesini alırsınız.
mattdm

2
Bildiğim kadarıyla geçersiz kabuk davranışı belgelenmedi. Öte yandan, man sayfa şifresi bir lider ise !! Linux'ta hesap kilitli olarak kabul edilir ve bu gerçekten işe yaramaz. Öyleyse, bilirsin, dokümantasyon ve gerçeklik zaten sadece yaklaşık eşleşmelerdir. :)
mattdm

2
sudo chsh -s /bin/nologin/etc/passwdelle düzenlemekten daha iyi olurdu . Ayrıca, bazı sistemlerde öyle /sbin/nologin.
Mikel

3

İşte başka bir basit yol. Kullanıcı hesabının süresi dolmuş olarak ayarlayabilirsiniz. Bu hesap için her iki şifre tabanlı ve SSH anahtar tabanlı girişleri engeller, ancak yok değil şifreyi dokunun.

Hesabı kilitlemek için:

# chage -E 0 username

'Username' kullanıcı hesabı sistemde kilitlenecek. Kullanıcı hesabını tekrar etkinleştirmek için aşağıdakileri yapın.

Hesabın kilidini açmak için:

# chage -E -1 username

'Username' kullanıcı hesabı sisteminizde önceden olduğu gibi aynı şifreyle tekrar etkinleştirilecektir . 'Chage' ikilisi, Red Hat Linux'taki shadow-utils paketinin veya Debian Linux'taki passwd paketinin bir parçasıdır .


3

Legate'in cevabı hakkında yorum yapmak için yeterli desteğim yok, ancak bu cevabın bize başka bir kullanım davasında yardımcı olduğunu paylaşmak istedim:

1.) söz konusu hesap, bir son kullanıcı hesabı değil, bir uygulamayı çalıştıran yerel bir hizmet hesabıdır.

2.) son kullanıcılar, kendileri gibi ssh girişi yaparlar ve sudo /bin/su <user>hizmet hesabının doğrudan giriş kabiliyetine sahip olamayacağı bir denetim takibi gerekliliği nedeniyle kullanıcı olmak ve uygulamayı yönetmek.

3.) hizmet hesabının geçerli bir kabuğu olmalı ( /bin/bashdeğil /sbin/nologin), çünkü bir Kurumsal Planlama Platformu (aracı yerel olarak root olarak çalışıyor) olmalıdır su - <user>ve su -s /bin/bash <user>tam bir kabuğun yapabilme yeteneğine sahip olmamalıdır ve işleri uzaktan çalıştırmak için gereklidir Birden çok sunucuyu ve veritabanını kapsayan daha büyük toplu işlemler için.


Yani ...

passwd -l <user>
Kısıtlamaları sağlamaz çünkü ortak anahtar kimlik doğrulaması PAM'yi atlar ve yine de doğrudan oturum açmaya izin verir.

usermod -s /sbin/nologin <user>
Sınırlamaları karşılamıyorsa, işletme zamanlayıcısını büyütür

usermod --lock --expiredate 1970-01-01 <user>
Bu bizim kazananımız. Uzaktan oturum açma devre dışı bırakılmış, ancak yine de kök , zamanlayıcı su <user>diğer kullanıcılarla olduğu gibi yine de sudodüzgün çalışabiliyor ve yetkili son kullanıcılar ihtiyaç duyulduğunda hedef hizmet hesabı haline gelebiliyor.

Çözüm için teşekkürler!


1

Tamamen silmek için kullanın userdel.

Bir hesabı silerseniz, kullanıcı kimliğinin bir yerde dosya sisteminde kullanılmaya devam etmesi ve yeni bir kullanıcının aynı kullanıcı kimliğinin altına girmesi durumunda bu dosyaların sahipliğini devralması riski vardır.

Silinen kullanıcının sahip olduğu herhangi bir dosyanın sahibini değiştirmek istersiniz.

Kullanıcıyı daha sonra tekrar eklemek isterseniz, satırlarını /etc/passwd(ve Solaris'teki /etc/shadow) gibi geçici dosyalara kaydedin /etc/passwd_deleted.

Bu şekilde geri eklediğinizde, aynı kullanıcı kimliğini ve aynı şifreyi kullanabilirsiniz (yukarıdaki dosyalardan birinde şifrelenmiştir)

Yasal Uyarı: UNIX'i kendi başıma öğrendim, böylece kullanıcıyı geçici olarak devre dışı bırakmanın daha iyi bir yolu varsa şaşırmam. Aslında, neden bahsettiğiniz özel / açık anahtarların bile olduğunu bilmiyorum. Ayrıca find, bu kullanıcı sahibiyle dosyaları aramak için kullanılabilecek bir komut olduğundan eminim.


1
google certified_keys veya bu eng.cam.ac.uk/help/jpmg/ssh/authorized_keys_howto.html bir şifre kullanmak yerine temelde okumaya çalışın , o dosyaya publuc anahtarınızı girin ve ssh ile bağlandığınızda otomatik olarak oturum açacaksınız halktan biri geçerli özel anahtarınızla

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.