Documentation
¶
Overview ¶
* Package sudoers, postern'in yazacağı sudo kurallarını doğrular. * * ⚠️ NEDEN VAR: "dar bir sudo kuralı yazdım" cümlesi, kuralın dar * OLDUĞU anlamına gelmiyor ve aradaki fark genellikle root demek. * * NOPASSWD: /usr/bin/vim → vim içinden kabuk açılır, root. * NOPASSWD: /usr/bin/less … → less içinde "!/bin/sh", root. * NOPASSWD: /usr/bin/systemctl → `systemctl edit` editör açar, root. * NOPASSWD: /usr/bin/find … → find -exec, root. * * Yani operatör "yalnızca log okusun" diye yazdığı kuralla tam yetki * vermiş olabiliyor ve bunu hiçbir yerde göremiyor. Bu paket o farkı * ÖLÇÜLEBİLİR yapıyor: kural yazılmadan önce reddediliyor ya da * operatörün bilerek onayladığı kaydediliyor. * * ⚠️ BU, HEDEFTEKİ visudo'NUN YERİNE GEÇMİYOR. visudo sözdizimini * doğruluyor — dosyanın sudo'yu bozmamasını sağlıyor. Burası ANLAMI * doğruluyor: sözdizimi kusursuz bir kural pekâlâ root verebilir. * İkisi de gerekli ve ikisi ayrı soru.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Command ¶
type Command struct {
// Path, MUTLAK yol. Çıplak ad kabul edilmiyor: PATH'e bağlı bir
// kural, PATH'i etkileyebilen herkese o komutu seçtirir.
Path string
// Args, izin verilen SABİT argümanlar. Boşsa komut argümansız
// çalıştırılabilir.
Args []string
/*
* RunAs, BU komutun hangi hesapla çalışacağı. Boşsa kuralın RunAs'ı,
* o da boşsa root.
*
* ⚠️ KOMUT BAŞINA, ÇÜNKÜ SUDOERS BÖYLE YAZILABİLİYOR. Kural başına
* tek bir hesap, "nginx'i root olarak sına, pg_ctl'i postgres olarak
* yeniden yükle" diyen bir role iki ayrı kural yazdırıyordu — ve
* hedefte bir grubun tek sudoers dosyası olduğu için o iki kural tek
* dosyada birleşmek zorunda. sudoers'ın kendi sözdizimi bunu zaten
* taşıyor: "(root) NOPASSWD: /a, (postgres) NOPASSWD: /b".
*/
RunAs string
}
Command, izin verilen tek bir komut.
type Finding ¶
type Finding struct {
// Command, sorunun bulunduğu komut ("" ise kuralın kendisi).
Command string
// Reason, operatöre okunacak cümle.
Reason string
/*
* Escape true ise sorun "bu komut kabuğa çıkabiliyor" demek ve
* onayla geçilebiliyor. false ise kural YAPISAL olarak sınırsız
* ve onayla bile geçilmiyor.
*/
Escape bool
}
Finding, kuralda bulunan sorun.
type Rule ¶
type Rule struct {
// RunAs, komutun hangi hesapla çalışacağı. Boşsa "root".
RunAs string
Commands []Command
/*
* Acknowledged, operatörün kaçış riskini BİLEREK kabul ettiği.
*
* ⚠️ VARSAYILAN false VE ÖYLE KALMALI. Kaçış riski taşıyan bir
* kuralı sessizce yazmak, "dar yetki verdim" sanan operatöre root
* dağıttırırdı. Onay pozitif kanıt: birinin bunu görüp kabul
* ettiğini söylüyor ve denetim satırına da o şekilde giriyor.
*/
Acknowledged bool
}
* Rule, bir gruba ya da bir JIT hakkına yazılacak sudo kuralı.