run0: systemd'nin sudo yerine geçen aracı
- v256'ya dahil edilen yeni araç (aslında mevcut
systemd-run'ın symlink edilmiş hali)
sudoya benzer şekilde çalışıyor, ancak SUID değil
- Servis yöneticisinden hedef kullanıcının UID'siyle komut veya kabuk başlatmasını istiyor
- İstemciden bağlam devralmadan, PID 1'den yeni fork edilen yalıtılmış bir yürütme bağlamında hedef komutu çağırıyor
- run0 kendi yapılandırma dilini uygulamıyor, yetkilendirme için
polkit kullanıyor.
- Yetki yükseltme sırasında terminal arka planını kırmızımsı bir tona çevirerek ayrıcalıklı modda çalışıldığını bildiriyor. Pencere başlığında da yetki yükseltmeyi gösteren kırmızı bir nokta gösteriyor.
systemd-run'ın --property= anahtarını destekliyor; böylece çağrılan ayrıcalıklı komut/oturum için istenen servis ayarları belirtilebiliyor.
sudo'nun sorunları
sudo, ayrıcalıksız kullanıcıların kendi bağlamlarından çağırabildiği, görece büyük bir SUID ikilisidir.
- Karmaşık bir yapılandırma dili, yüklenebilir eklentiler (LDAP vb.), ana makine adı eşleştirme gibi nedenlerle saldırı yüzeyi geniştir.
- En büyük sorun SUID ikilisi olması. Ayrıcalıksız kod tarafından çağrılır ve ayrıcalıksız kodun kontrol ettiği yürütme bağlamını (ortam değişkenleri, süreç zamanlama özellikleri, cgroup atamaları, güvenlik bağlamı, aktarılan dosya tanımlayıcıları vb.) devralır. SUID ikililerinin bunları çok dikkatli biçimde temizlemesi gerekir, ancak çoğu zaman bunu yeterince iyi yapamazlar.
Diğerleri
- run0 ile yalnızca kabuk değil, root yetkisiyle başka komutlar da çalıştırılabilir. Program sona erdiğinde terminal rengi eski haline döner.
- Arka plan renginin otomatik değişmesi rahatsız edici olabilir, ancak
--background= anahtarıyla değiştirilebilir veya devre dışı bırakılabilir.
sudoyu tamamen run0 ile değiştirmek mümkün görünüyor, ancak her dağıtımın tercihi farklı olabilir.
- LDAP desteği gibi
sudonun eklenti yaklaşımı birçok soruna sahip. polkit, systemd içinde güvenli şekilde yönetilen bir yöntemle genişletilebilir.
- run0'ın bash betiği içinde çalışıp çalışmadığı,
sudo ile uyumlu SUDO_xxx ortam değişkenleriyle kontrol edilebilir.
GN⁺ görüşü
- Sık kullanılan
sudoya alternatif olarak run0'ın sunulması etkileyici. SUID'in risklerinden kaçınırken sudonun avantajlarını da devralıyor gibi görünüyor.
- Yetki yükseltmenin görsel olarak açıkça belirtilmesi, yanlışlıkla oluşabilecek zararı azaltmaya yardımcı olabilir. Terminal arka plan renginin değişmesi rahatsız edici olabilir ama seçeneklerle ayarlanabildiği için büyük bir sorun olmayacaktır.
polkit üzerinden yetki yapılandırması, sudoya göre daha az esnek olabilir; ancak bu durum sistemi daha basit hale getirip saldırı yüzeyini azaltabilir. polkit yapılandırma örneklerinin iyi belgelenmesi önemli görünüyor.
sudoya bağımlı mevcut betikler vb. için geçiş sürecinde bir süre daha sudonun birlikte sunulması gerekecek gibi duruyor. Ancak yeni ortamlarda en baştan run0 kullanmak daha iyi olabilir.
- Uzun vadede run0'ın benimsenmesini vesile ederek SUID'i cesurca kaldırıp sistem yetkilerini sistem servislerinde merkezi olarak yöneten bir mimariye geçiş umuluyor. Güvenlik ve dayanıklılık açısından bunun doğru yön olduğu düşünülüyor.
1 yorum
Hacker News görüşleri
run0,sudodan farklı olarak istemciden hiçbir bağlam devralmadan PID 1'den yeni çatallanmış izole bir exec bağlamında hedef komutu çağırıyor. Bu, shell komutlarının genel kullanım senaryosuyla uyuşmuyor; pratikte sorun kaynağı olacak ve yaygın biçimde benimsenmesi zor olacaktır.run0yaygın biçimde kullanılırsa,sudogibi davranan bir bayrak eklenecek ve insanlar da o bayrağı sürekli kullanacaktır. Bu sorun çıkardığında systemd projesisudoyu ortadan kaldırmaya çalışabilir.run0, yetki seviyeleri arasında katı IPC sınırları koyaraksudodan farklı bir yaklaşım benimsiyor. systemd kullanmak isteyenler için iyi bir yöntem olabilir.sudobüyük ölçüde tek bir kişi tarafından bakımı yapılan bir proje.run0ın davranışı birçok açıdansudodan çoksshye daha yakın.localhosta SSH ile bağlanarak benzer bir araç uygulanabilir.run0için loglama, aktarılan ortam değişkenleri, sinyal işleme vesudoedityerine ne kullanılacağı gibi soru işaretleri var.run0dışında, Rust ile yazılmış, bellek güvenli ve daha az hatalı birsudogerçekleştirmesi de bulunuyor.