Haftada bir gün için sudoers?


10

Patronum tarafından üretim redhat sunucumuzun sistem yöneticisi olmak için gönüllü oldum. Benden rm -f *uzun zaman önce meydana gelen aksiliklerden kaçınmak için güvenliği sıkılaştırmamı istedi .

Şu anda, makineye sudo 53 kullanıcı giriyor ve bu bir denetim kabusu. Sadece haftanın belirli günlerinde kullanıcı erişimine izin verilip verilmeyeceğini merak ediyorum.

Örneğin, 'Joe' kullanıcısının SADECE Salı ve Perşembe günleri girişine izin verebilir miyim ve 'Jane' sadece Pazar günleri? Buna etc/sudoersizin vermek için özelleştirilebilir mi?

Sudo kullanmak yerine daha iyi bir yol var mı?


10
Kılavuz sayfasını okumamanızı tavsiye ederim. Bkz. Xkcd # 1343
user60684

3
Hayır, ona kılavuzu okumamasını söylüyorum çünkü IMHO'yu okumak imkansız. Eğer okumak daha kolay olursa OP muhtemelen man sayfasında bir cevap bulur.
user60684

10
Bunu yapabilirsiniz, ancak kullanıcıların kökleri olan her gün kendilerine sürekli sudo erişimi verebileceğini unutmayın.
Nick Matteo

2
@ Mark0978 Şirketin adını biliyor olsaydınız, muhtemelen başınızı gülerek ölürdünüz. Bir üretim sunucusunda izin verildiği utanç verici.
Chris

3
Bu biraz aptalca görünüyor. Bu sadece Bill'in Çarşamba sabahı zaman aralığının çalışmasını beklemesi gerekeceği anlamına geliyor rm -rf /.
Michael Hampton

Yanıtlar:


21

sudo kimlik doğrulamasını PAM aracılığıyla yapıyor, tıpkı bir Linux kutusundaki diğer her şey gibi.

Yani bunu pam_time.soyapmak için kullanabilmelisin .

Varsayılan olarak en azından Debian'da bu modül etkin değildir. Şuna benzer bir satır eklemeniz gerekir:

account    requisite  pam_time.so

birine /etc/pam.d/sudosadece sudo için veya sağlamak için /etc/pam.d/common-accountsistem üzerindeki tüm programlar için etkinleştirmek için (Pam-yetkilisi güncelleme bloğundan sonra).

Ardından /etc/security/time.conf, kısıtlamalarınızı ayarlamak için düzenleyin . Hizmet adı olmalıdır sudo. Örneğin, Fred'in sudoCuma günü sadece 15:00 - 17:00 arasında kullanılmasına izin vermek için :

sudo;*;fred;Fr1500-1700

(NOT: Bunu test etmedim.)

edit: Açık olmak gerekirse, ben diğer cevap ve çeşitli yorumcular katılıyorum, kök olarak çok fazla komut çalışan çok fazla insan var gibi görünüyor ve gerçekten bunu düzeltmek gerekiyor. Ve elbette eğer kök haline gelebilirlerse, pam yapılandırmasını düzenleyebilirler ...


PAM uygulaması karmaşık görünmektedir, fakat aynı zamanda kimin ne zaman ne yaptığını daha sıkı kontrol etmeyi de sağlar. Kabul edildi ve oy verdi. Teşekkür ederim.
Chris

2
Onu teşvik etmenin doğru cevap olduğunu düşünmüyorum, IMAO bu sorunun doğru cevabı "TUTUCULAR İÇİN ÇALIŞTIR !!!! 1! 1 !! 1! 1"
o0 '.

Bu gerçekten işe yarıyor mu? "Login", "ssh", "gdm", "su" gibi çeşitli giriş mekanizmalarını pam_time.so kullanarak kontrol edebiliyorum, ama sudo için çalışmıyor. Herkesin mesai saatleri dışında herhangi bir normal mekanizma tarafından köklenmesini önlemek istiyorum. (Kurşun geçirmez olmadığını anlıyorum, birisi önceden setuid bir kabuk veya arka kapı hazırlayabilir, ancak bunun bu durumda olacağını beklemiyorum.)
Sam Watkins

20

Neden 53 kullanıcının günlük işlerini yapmak için sudo'ya ihtiyaç duyduğunu sorgulayacağım - çoğu kullanıcı (hatta geliştiriciler için), sudo nadir bir istisna olmalı, birinin rasgele bir sudo rm -rf *komut çalıştırması gibi rutin bir şey değil .

İnsanlara işlerini halletmeleri için ihtiyaç duydukları dosyalara, belki de yeniden başlatma hizmetleri gibi şeyler yapmalarına izin vermek için bazı setuid veya sudo'lu komut dosyaları veya ikili dosyalar kullanarak erişim sağlamak için grup izinlerini (veya daha gelişmiş ACL'leri) kullanabilir misiniz? (güvenli bir setuid / sudo betiği yazmanın zor olduğunu unutmayın, bu yüzden dürüst insanları dürüst tutmak daha fazladır).

İnsanları haftada bir gün sudo erişimi ile kısıtlasanız bile, bu hala bir hafta içinde sudo erişimi olan 53 kişidir, bu nedenle temel sorununuza gerçekten yardımcı olmaz.

Bu nedenle, birçok kullanıcının bir üretim sunucusuna erişmesi gerekip gerekmediğini soruyorum - günlükleri veya üretim dışı bir makineye ihtiyaç duydukları veri / dosyaları gönderebilir misiniz?


Ya da ihtiyaç duyabilecekleri günlük dosyalarına bir çeşit erişim yayınlayabilir misiniz?
boatcoder

@Johnny bu ana bilgisayarda yapılan işlerin büyük çoğunluğu kabuk komut dosyaları oluşturmak / düzenlemek ve çalıştırmaktır. Kullanıcılara izin verilmemelidir vi/cp/mv/rm. Sadece cdve more. Başka hiçbir şey.
Chris

@Johnny Bir dizine ACL ayarlarsam, bu dizindeki dosyalar varsayılan olarak ACL'nin özniteliklerini mi devralır?
Chris

@Chris Evet, dizin için Varsayılan ACL'yi ayarlarsanız.
Michael Hampton

Bu bir yorum olmalı, cevap değil. OP senaryosunun mantıklı olup olmadığına bakılmaksızın, diğer bazı kişilerin belirli zamanlarda belirli kullanıcılar için "sudo" yu kilitleme ihtiyacı benzerdir.
Sam Watkins

7

En basit yol, yapılandırmalarınız için suders.d (inludedir aracılığıyla) kullanmaktır. Daha sonra, istediğiniz zamanlar için her kullanıcının kurallarını bu dizine yerleştirebilecek cron işleriniz olabilir.

#İncludedir yönergesi, sudoers kurallarını kurallarınızın bir parçası olarak bırakabileceğiniz bir sudo.d dizini oluşturmak için / etc / sudoers içinde kullanılabilir. Örneğin, verilen:

#includedir /etc/sudoers.d

sudo, /etc/sudoers.d içindeki her dosyayı okuyacak ve '~' ile biten ya da '.' içeren dosya adlarını atlayacaktır. karakter yöneticisi veya editör geçici / yedek dosyaları ile sorunlara neden önlemek için. Dosyalar sıralanmış sözcük sırasına göre ayrıştırılır. Yani, /etc/sudoers.d/01_first /etc/sudoers.d/10_second tarihinden önce ayrıştırılacaktır. Sıralama sayısal değil, sayısal değil, /etc/sudoers.d/1_whoops /etc/sudoers.d/10_second sonra yükleneceğini unutmayın. Bu tür sorunları önlemek için dosya adlarında tutarlı sayıda önde gelen sıfır kullanmak kullanılabilir.

#İnclude yoluyla eklenen dosyaların aksine, visudo'nun #includedir dizinindeki dosyalar sözdizimi hatası içermedikçe düzenlemeyeceğini unutmayın. Dosyaları doğrudan düzenlemek için udof bayrağıyla visudo çalıştırmak hala mümkündür.

/etc/sudoers.d/joe, joe'nin erişmesini istediğinizde mevcut olur ve erişimi kaldırmak için dosyayı kaldırabilirsiniz.


1
Kullanıcıya özgü sudoers dosyaları ile ilgili bir sorunum vardı: 'sudoers.user1' vb. '~' Ve '.' karakterler sorunumu çözdü. Kılavuzu okuduğunuz için çok memnunum! Teşekkür ederim.
Han

0

Kullanıcıları sudo grubuna koymak için bir crontab ve ardından bu kullanıcıyı çıkarmak için ikinci bir crontab ekleyebilirsiniz.

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.