Özel rpm'den sudoers.d'ye nasıl eklerim?


1

Sudoer'lara girişler eklemek için oluşturduğum özel bir RPM'im var, böylece RPM'ime bir dosya ekledim /etc/sudoers.d/mypackageve sudo komutlarımı oraya koydum.

Dosyalar eklenir ve RPM oluşturulur. Ne yazık ki, paketi yüklemeye çalıştığımda, şikayet ediyor:

file /etc/sudoers.d from install of mypackage-1.0.0-1.x86_64 conflicts with file from sudo-1.8.6p7016.el7.x86_64

Eğer gibi --force ile kurarsam, rpm iyi yüklenir:

rpm -Uvh --force mypackage.rpm

Muhtemelen sudoers dosyasının içeriğini eko edebilirim /etc/sudoers.dama sudoers dosyasının rpm ile takip edilmesini tercih ederim.

Özel bir RPM'den sudo'lara sudo şikayet etmeden nasıl giriş eklerim?

EDIT: Yazımı biraz netleştirmek için, dosyalarla dolu bir düzine dizinim var:

/etc/sudoers.d
/etc/httpd/conf.d/
/etc/systemd/system
/etc/cron.d
...

Önceden bir dizin listesine sahip olmadığımdan ve bu liste değişebileceğinden, yapmaya çalıştım:

%files
/etc/*
%exclude /etc/sudoers.d
/etc/sudoers.d/*

ancak bu noktada, sudoers.d içindeki dosyalar dahil edilmez. Dizinleri birer birer belirtmek isteseydim, dinamik olarak bu dizin listesini oluşturmam gerekirdi

Önerildiği gibi yapmaya çalıştım rpm -qf /etc/sudoers.dve diyor sudo-1.8.5.el7_2.x86_64. Yaparsam rpm -qf /etc/systemd/system, söyler systemd-219-19.el7_2.x86_64ama rpm'yi yüklemeye çalışırken rpm şikayet etmez

Yanıtlar:


2

Bunun nedeni muhtemelen %filesşu şekilde bir şeye sahip olmanız:

%files
/etc/sudoers.d/

Bu, paketinizin yalnızca içindeki dosyaları içermesini sağlar /etc/sudoers.d; aynı zamanda dizinin kendisi. Bunu kullanarak kontrol edebilirsiniz rpm -qlp <generated-rpm>.

rpmfarklı paketlerin aynı dosya veya dizini sağlamasına izin vermez. Çözüm sadece dosyaları paketlemek için içeride bu dizinde:

%files
/etc/sudoers.d/*

Aslında / etc / * kullandım ve size oy verdim ama bunu yaparsam sorunum yok oluyor. Ancak, benim sorunum potansiyel olarak / etc içinde değişen sayıda dizine sahip olmam ve bu yüzden / etc / * kullandım. Bir dışlama /etc/sudoers.d eklemeye çalıştım, sonra bir /etc/sudoers.d/* yönergesini ekledim, ancak oradaki dosyalar dahil edilmedi. Tek tek listelemeden tüm etc alt dizinlerini dahil etmenin ve hala çalışmanın bir yolu var mı?
Youn Elan

İlginç olan, sadece /etc/sudoers.d ile yaptığıdır. Bunu /etc/httpd/conf.d /etc/profile.d / etc / systemd / system etc ile yapmaz
Youn Elan

neden bir "dışla" yapıyorsun? Dosyalarınızın her birini yalnızca manuel olarak belirleyebilirsiniz (/etc/sudoers.d/file1 vb.); ya önerdiğim satır: /etc/sudoers.d/*. Daha sonra rpm'nize tam olarak nelerin dahil olduğunu kontrol edebilirsiniz rpm -qlp.
Chris Maes

Bunu /etc/httpd/conf.d/ etc ile yapmaması mantıklıdır; Çünkü hiç kimse bu dizinleri sağlıyor gibi görünmüyor. Belli bir dosya veya dizinin sahibi olup olmadığına bakabilirsinizrpm -qf /path/to/dir/or/file
Chris Maes

Açıklığa kavuşturmak için yazıyı düzenledim: evet, sudo'ya aitti, ancak aynı şey /etc/systemd/system(systemd tarafından sağlanan) ve /etc/httpd/conf.d(httpd tarafından sağlanan) için de geçerli, ancak orada hiçbir uyarı yok
Youn Elan
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.