Linux kullanıcısı mevcut şifreyi bilmeden şifresini değiştirebilir mi?


25

Birkaç ubuntukutu kuruyorum ve opscode'ları chefbir yapılandırma aracı olarak kullanıyorum . Her kullanıcının ortak anahtarlarını bu sunucuların her birine kurmak ve parola doğrulamasını devre dışı bırakmak oldukça kolay olurdu.

Ancak, kullanıcıların sudovarsayılan olarak bir şifre gerektiren ayrıcalıklarına da sahip olmaları gerekir.

Ben erişimi yönetimi yöntemi olarak kullanıcıların genel anahtarları kullanmak istiyorsanız ve kullanıcıların izin verirseniz sudoayrıcalıkları, ortalama Ben de kullanıcılara kurmak gerektiğini yapar NOPASSWD: ALLiçinde visduoveya bir kullanıcı eğer kendi şifresini değiştirebilir bir yolu yoktur onlar sadece ortak anahtar doğrulaması var mı?



@sr - göründüğü gibi görünmüyor ...
cwd 22

Neden kullanıcılarınızın sudo ayrıcalıklarına sahip olmasını istiyorsunuz? Umarım bu işlemin kök erişiminden uzaklaştığınızın farkındasınızdır. Burada biraz zaman harcamak ve sudo ile bağlantılı olarak kullanılacak bir komut alt setine izin vermek için bir şans olabilir (bu daha az güvensiz olabilir). Go man sudoers, bazı komutların sudo ile kullanıcı şifresi gerektirmeden çalıştırılabilmesi hakkında bilgi verir. Önceden bir parola gerekmeden kullanıcı başına "öz-parola" ayarına izin verecek / etc / sudoers öğesine bir kabuk komut dosyası bile ekleyebilirsiniz.
insanlıkANDpeace

@ humanityANDpeace - Bunu anlıyorum. Ekip üyelerimizin hepsinin, bakımını yaptığımız bulut sunucularına kök erişimi gerekiyor. Artık kullanıcıların genel anahtarlarını yönetmek için şef kullanıyoruz NOPASSWD: ALLve ekip üyelerinin parçası olduğu bir sysadmin grubumuz var . Daha iyi bir çözüm önerebilirseniz lütfen cevap olarak gönderin.
cwd

Yanıtlar:


21

Sudo, en yaygın konfigürasyonunda, kullanıcının şifresini yazmasını gerektirir. Tipik olarak, kullanıcı zaten hesabın kimliğini doğrulamak için şifresini kullandı ve şifreyi tekrar yazmak, meşru kullanıcının konsolunu terk etmediğini ve kaçırılmadığını doğrulamanın bir yoludur.

Kurulumunuzda, kullanıcının şifresi sadece kimlik doğrulaması için sudo olarak kullanılacaktır. Özellikle, bir kullanıcının SSH anahtarının güvenliği tehlikeye girerse, saldırgan sunucudaki kök ayrıcalıklara yükseltemez. Saldırgan, hesaba bir anahtar günlüğü ekleyebilir, ancak bu anahtar günlüğü diğer kullanıcılar tarafından algılanabilir ve hatta otomatik olarak izlenebilir.

Bir kullanıcının normal olarak farklı bir şifreye geçmek için mevcut şifresini bilmesi gerekir. passwdBu doğrular programı (değil yapılandırılabilir, ancak bu yararlı veya senaryodaki bütün arzu az değildir). Ancak, root eskisini bilmeden herhangi bir kullanıcının şifresini değiştirebilir; Bu nedenle, sudo yetkilerine sahip bir kullanıcı, passwdçalıştırarak komut istemine girmeden kendi şifresini değiştirebilir sudo passwd $USER. Eğer sudokullanıcının şifresini gerektirecek şekilde yapılandırılmış, daha sonra kullanıcı için şifre girdiniz gerekir sudooldu Neyse.

Parola doğrulamasını seçerek devre dışı bırakabilirsiniz. Sizin durumunuzda, ssh ve muhtemelen başka hizmetlerde parola doğrulamayı devre dışı bırakırsınız. Kullanım (Ubuntu dahil) en modern Unix'lerde Çoğu hizmet PAM yapılandırmak kimlik doğrulama yöntemleri. Ubuntu'da, PAM yapılandırma dosyaları içinde yaşar /etc/pam.d. Parola doğrulamasını devre dışı bırakmak için içerideki auth … pam_unix.sosatırı yorumlayın /etc/pam.d/common-auth. Ayrıca, emin olun olun PasswordAuthentication noiçinde /etc/ssh/sshd_configdevre dışı sshd en yerleşik şifre doğrulaması için.

Bazı yönetim kullanıcılarının bir parola ile oturum açmasına veya konsolda parola doğrulamasına izin vermek isteyebilirsiniz. Bu PAM ile mümkün (oldukça esnek), ancak kafamın tepesinden nasıl çıkacağımı söyleyemedim; Yardıma ihtiyacınız olursa ayrı bir soru sorun.


PAM'ı SSH anahtar kimlik doğrulaması ile birlikte kullanmanın uygun bir yolu , parola istemini (teorik olarak daha güvenli) anahtar kimlik doğrulaması
SSH'sinin

sudo passwdSudo kullanıcısı için geçerli kullanıcının şifresini değiştireceğini mi söylüyorsunuz ?
still_dreaming_1

1
@ still_dreaming_1 Hayır, komutları çalıştırabilecek bir kullanıcının sudokendi şifresini değiştirebileceğini söylüyorum . Kesin komut gerçekten önemli değil, ama daha detaya girmek, öyle olurdu sudo passwd bobnerede bobkullanıcı adı, ya da bir şey eşdeğerdir. Tartışmasız, sudo passwdgerçekten root şifresini değiştirirdi.
Gilles 'SO- kötülük olmayı'

7

Pam_ssh_agent_auth modülünü kullanabilirsiniz . Derlemesi oldukça kolaydır ve ardından girişi ekleyin.

auth       sufficient pam_ssh_agent_auth.so file=~/.ssh/authorized_keys

önce diğer auth(veya includeiçinde) girişlerinin/etc/pam.d/sudo

ve

Defaults    env_keep += "SSH_AUTH_SOCK"

için /etc/sudoers(yoluyla visudo).

Artık her kullanıcı sudo(iletilen ya da yerel) SSH aracısı ya da şifresi aracılığıyla kimlik doğrulaması yapabilir . Kullanıcılardan ssh-add -c, her sudoaramanın en azından bir miktar onay gerektireceği şekilde kullanmalarını istemek akıllıca olabilir .


İlgili bir konuda, oturum açmak için unix yerine SSH şifrenizi kullanmanıza, otomatik olarak bir aracı başlatmanıza ve anahtarı eklemenize izin veren pam_ssh vardır , böylece size tek bir oturum açma olanağı sunar.
Tobias Kienzler

1

Evet, inanılmaz derecede güvensiz ve bir kullanıcının diğer kullanıcıların şifrelerine erişmesine izin veriyor, ancak sudo olduğundan, yapabileceğiniz pek bir şey yok.

Temel olarak, aşağıdakileri yapın:

$ sudo -i

Şimdi, biz köküz. Her şeye erişimimiz var.

# passwd $username

$ username herkesin kullanıcı adı olabilir.

Yeni UNIX şifresini girin:

Yeni UNIX şifresini tekrar yaz: passwd: password başarıyla güncellendi

Patlama, şifre değiştirildi. Yine, inanılmaz derecede güvensiz çünkü başkalarını değiştirebiliyorsunuz, ama işe yarıyor ama işe yarıyor. Bunu tavsiye etmiyorum, ancak bu cevabı ne yapmamak gerektiğini gösteren bir örnek olarak sunuyoruz .


iyi görünüyor ama burada neler olup bittiğini detaylandırabilir misiniz?
cwd

4
sudo -iGeçerli kullanıcı şifresi olmadan yapmak mümkün değildir .
kravemir

@Miro. Söylediğin gibi. Yine sudo bashde bu /etc/sudoersdosyada verilen kurulum parolasız olabilir . Bence jrg, burada sudo ile olan güvensizlik sorununa daha fazla odaklandığı söyleniyor
insanlıkANDpeace

1
dürüst olmak gerekirse, yapmak zorunda değilsiniz, @Miro'ya sudo -idoğrudan atlayabilirsiniz sudo passwd $username, mevcut kullanıcı şifresini bilmenize gerek yoktur.
Antony

0

Şifrenin amacı, bir kullanıcı anahtarı alan veya katılımsız bir terminal bulan bilgisayar korsanlarının kök erişimi sağlayamamasını sağlamaktır. Bu nedenle şifresiz sudo içeren herhangi bir çözüm önermem.

Belki kısa sürede değiştirmek için bir kullanıcıya sıkı talimatları ile varsayılan şifreyi e-posta, ya da başka onların bir komut dosyası Ekle: Ben basit tutmak önermek .profileveya .loginonların ilk girişte yeni bir şifre talep şekilde ya da bir şey. Tamamlandığında kendini devre dışı bırakabilir expectve mevcut şifreyi girmek için kullanabilirsiniz , böylece asla bilmemeleri gerekir.


0
#% useradd -g somegroup someuser
#% usermod -p "" someuser
#% chage -d 0 someuser
#% sed -i "s/^.*PasswordAuthentication .*/PasswordAuthentication no/" /etc/sshd/sshd_config
#% /sbin/service sshd restart
#% cp -r ~/.ssh `echo ~someuser`
#% chown -R someuser `echo ~someuser`/.ssh
#% chgrp -R somegroup `echo ~someuser`/.ssh
#% echo "%somegroup  ALL=(ALL)   ALL" >> /etc/sudoers

> Bu, yalnızca genel anahtarları kullanarak giriş yapabilen ve giriş yapmak için şifreleri kullanamayan kullanıcılara izin vermelidir. Ancak ilk giriş yaptığı zaman şifreyi değiştirmesi gerekecek ... ama ona önceden bir şifreleme şifresi söylemesine gerek kalmadan ... Kullanıcılardan şifreyi sıfırlamaları istenecek ve daha sonra sadece sudo için kullanabilirler. ancak bu şifreyi kullanarak giriş yapamayacaksınız. Buradaki numara, kullanıcılara, şifrelerini değiştirmeleri gerektiğinde bir defa oturum açtıklarında girmeleri gereken bazı parola söylemememeleri gerektiğidir. Gerçek kullanıcı için gereklidir.

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.