Etkileşimli olmayan kullanıcı için LDAP kullanarak kimliği doğrulanmış yolunu nasıl ayarlayabilirim?


2

OSX 10.7.5 çalıştıran bir Mac'te, PATH'yi ssh ile bağlanan ve LDAP kullanılarak kimliği doğrulanan etkileşimli olmayan kullanıcılar için ayarlamam gerekiyor. Burada sorulan (ve cevaplanan) aynı soru:

https://serverfault.com/questions/139426/updating-the-path-for-running-an-command-through-ssh-with-ldap-user-account

ancak cevabı tam olarak anlayabilecek kadar PAM veya LDAP ile aşina değilim.

Buna ihtiyacım var gibi görünüyor:

add a line to /etc/pam.d/sshd saying "auth      required    pam_env.so"
create a file named /etc/security/pam_env.conf

ancak pam_env.conf belgelendirmesi gerçekten kafa karıştırıcı ve bir DEFAULT veya OVERRIDE değerine ihtiyacım olup olmadığını söyleyemem.

Doğru adımların bunlar olduğunu doğru muyum? Pam_env.conf dosyasına eklemem gereken satır nedir?

Teşekkürler Chris

ps "auth zorunlu pam_env.so hata ayıklama" satırını /etc/pam.d/sshd içine koymaya çalıştım ve /var/log/system.log dosyasında pam_env.so adresinden geliyor gibi görünen hiçbir şey göremiyorum. Ayrıca /etc/security/pam_env.conf dosyasını yarattım ve içine "PATH DEFAULT = / usr / fred OVERRIDE = / usr / george" satırını koydum ve PATH üzerinde görünür bir etkisi olmadı.

pps Eğer uygularsam:

ssh USER@MACHINE echo \$SHELL

/ Bin / bash yazıyor. Daha sonra MACHINE'da oturum açıp bu satırı / etc / bashrc dosyasına eklersem:

export Test=Fred

ve makineme geri dön ve çalıştır:

ssh USER@MACHINE echo \$Test

hiçbir şey döndürmez. LDAP kullanarak bu şekilde oturum açtığımda, / etc / bashrc dosyasını çalıştırmıyor.

ppps Önemli olabilecek bazı ek bilgiler: MACHINE'da USER adlı yerel bir kullanıcı yok. MACHINE, LDAP kimlik doğrulaması yapacak şekilde ayarlandı, böylece USER @ MACHINE ssh kullandığımda $ HOME'um / Network / Servers / blah / blah / Users / USER olarak ayarlandı. PATH'i ayarlamak için /Network/Servers/blah/blah/Users/USER/.bashrc'yi düzenlersem, bu benim için doğru şekilde çalışır, ancak bu iyi bir çözüm değildir, çünkü bu sunucuya erişmek isteyen herkes kendi sunucusunu düzenlemek zorundadır. ağ .bashrc.


Bunun için kabuk başlatma dosyalarını kullanabilirsiniz. Örneğin, kullanıcılarınızın kabukları olması durumunda /bin/bash, kullanın /etc/bashrc.
Sami Laine,

Teşekkürler Sami, ben denedim ve bir no-go oldu. Ne olduğunu göstermek için sorumu değiştirdim.
Betty Crokker

Eh, şimdi aslında hafızama dayanmak yerine kılavuz sayfasını okuduğumda, oturum açma kabukları için sadece ~ / .bashrc'ye başvurulduğunu açıkça belirtiyorum. Karanlıkta bir çekim için özür dilerim.
Sami Laine

Yanıtlar:


0

Bu, https://askubuntu.com/questions/382485/ssh-how-to-force-execution-of-a-script-etc-sshrc-forcecommand-on ' un bir modifikasyonudur .

Aşağıda /etc/bashrc, etkileşimli olsun ya da olmasın tüm SSH girişleri için kaynak bulmaya zorlayabilirsiniz . Bu, /etc/bashrcetkileşimli olmayan girişler için idam edilmemeye dayanan kullanıcılara bazı sorunlara neden olabilir , bu nedenle dikkatli olun (tam olarak ne istediğinizi olsa da, muhtemelen sonuçları biliyorsunuzdur).

İlk eklemek ForceCommand /usr/local/bin/sshd_envsiçin /etc/sshd_config. Sonra aşağıdakileri içine yerleştirin /usr/local/bin/sshd_envs:

#!/bin/bash

source /etc/bashrc

if [ -n "$SSH_ORIGINAL_COMMAND" ]; then
  eval $SSH_ORIGINAL_COMMAND
else
  exec $SHELL
fi

Daha sonra koyduğunuz ortam ayarları /etc/bashrcher SSH oturum açma için çevreye girecektir.

Lütfen /etc/bashrcilk birkaç satırı değerlendirdikten sonra OS / X için varsayılanın hemen çıkacağını unutmayın (çünkü PS1 etkileşimli olmayan kabuklar için ayarlanmadı):

if [ -z "$PS1" ]; then
  return
fi

Bu yüzden ya bu satırları yorumlayın ya da etkileşimli olmayan SSH girişleriniz için değerlendirilmek istediğiniz her şeyi bu satırlardan önce koyun.

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.