Help us shape the future of Go! Take the 2026 Go Developer Survey

sudoers

package
v1.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 16, 2026 License: Apache-2.0 Imports: 4 Imported by: 0

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

func Describe

func Describe(findings []Finding) string

Describe, bulguları tek bir cümlede toplar.

func Refuses

func Refuses(findings []Finding, acknowledged bool) bool

* Refuses, doğrulamanın kuralı reddedip reddetmediği. * * ⚠️ ONAY YALNIZCA KAÇIŞ BULGULARINI GEÇİYOR. Yapısal sorunlar — * joker, göreli yol, ALL — onayla da geçmiyor: onlar "riski * biliyorum" denebilecek şeyler değil, kuralın hiçbir sınır * taşımadığı anlamına geliyorlar.

func Render

func Render(user string, r Rule, header string) (string, error)

* Render, kuralı sudoers dosyası olarak yazar. * * ⚠️ DOĞRULAMADAN GEÇMEDEN YAZMIYOR. Ayrı bir fonksiyon olsaydı * çağıranın birini unutması mümkün olurdu; burada unutulamıyor.

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.

func (Command) RunAsOr added in v1.3.0

func (c Command) RunAsOr(ruleRunAs string) string

RunAsOr, komutun etkin hesabı: kendi RunAs'ı, yoksa kuralınki, o da yoksa root.

func (Command) String

func (c Command) String() string

String, sudoers satırındaki hâli.

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.

func Validate

func Validate(r Rule) []Finding

* Validate, kuralı yazılmadan önce inceler. * * Dönen liste boşsa kural yazılabilir. Escape olmayan tek bir bulgu * bile kuralı reddediyor; Escape bulguları yalnızca Acknowledged ile * geçiyor.

func (Finding) Refused

func (f Finding) Refused() bool

Refused, bulgunun onayla bile geçilemeyeceği.

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ı.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL