← man/system_admin
visudo — man visudo — 80×24
ugur@toprak:~/man/system_admin$man visudo
Bölüm 8 Sistem Yönetimi

visudo

sudoers dosyasını düzenler

Kullanım

       visudo [-chIOPqsV] [[-f] sudoers]

Açıklama

visudo, vipw(8) aracına benzer şekilde sudoers dosyasını güvenli bir biçimde düzenler. visudo, sudoers dosyasını aynı anda birden fazla düzenlemeye karşı kilitler, temel geçerlilik denetimleri yapar ve düzenlenen dosyayı kurmadan önce sözdizimi (syntax) hatalarını denetler. Eğer sudoers dosyası şu anda başka biri tarafından düzenleniyorsa, daha sonra tekrar denemenizi belirten bir mesaj alırsınız.

Eğer sudoers dosyası mevcut değilse, düzenleyiciden dosyaya yazmadan çıkılmadığı sürece bu dosya oluşturulacaktır.

visudo, düzenlemeden sonra sudoers dosyasını çözümler ve bir sözdizimi hatası varsa değişiklikleri kaydetmez. Bir hata bulduğunda visudo, hatanın oluştuğu satır numaralarını belirten bir mesaj yazdırır ve kullanıcıya “Ne yapmalı? (What now?)” istemini sunar. Bu noktada kullanıcı; sudoers dosyasını yeniden düzenlemek için ‘e’, değişiklikleri kaydetmeden çıkmak için ‘x’ veya çıkıp değişiklikleri kaydetmek için ‘Q’ girebilir. ‘Q’ seçeneği son derece dikkatli kullanılmalıdır; çünkü visudo orada bir sözdizimi hatası olduğuna inanıyorsa, sudo da öyle inanacaktır. Bir sözdizimi hatası algılandıktan sonra düzenlemek için ‘e’ yazılırsa, imleç hatanın oluştuğu satıra yerleştirilecektir (düzenleyici bu özelliği destekliyorsa).

visudo'nun hangi düzenleyiciyi çalıştıracağını belirleyen iki sudoers ayarı vardır:

editor visudo ile kullanılmasına izin verilen düzenleyicilerin iki nokta üst üste (‘:’) ile ayrılmış listesi. visudo, mümkünse kullanıcının SUDO_EDITOR, VISUAL veya EDITOR ortam değişkenleriyle eşleşen düzenleyiciyi veya listedeki mevcut ve çalıştırılabilir olan ilk düzenleyiciyi seçecektir. SUDO_EDITOR, VISUAL veya EDITOR ortam değişkenleri env_keep listesinde yer almadığı veya sudoers dosyasında env_reset seçeneği devre dışı bırakılmadığı sürece sudo bu değişkenleri korumaz. Varsayılan düzenleyici yolu /usr/bin/vi'dir ve bu yol derleme zamanında --with-editor yapılandırma seçeneği aracılığıyla ayarlanabilir.

env_editor Eğer ayarlanmışsa visudo, varsayılan düzenleyici listesine geri dönmeden önce SUDO_EDITOR, VISUAL veya EDITOR ortam değişkenlerinin değerini kullanacaktır. visudo genellikle root olarak çalıştırıldığından, bu seçenek visudo yetkilerine sahip bir kullanıcının root olarak günlük kaydı olmadan rastgele komutlar çalıştırmasına izin verebilir. Bir alternatif, editor değişkenine iki nokta üst üste ile ayrılmış bir “güvenli” düzenleyiciler listesi yerleştirmektir. Bu durumda visudo, SUDO_EDITOR, VISUAL veya EDITOR değişkenlerini yalnızca editor içinde belirtilen bir değerle eşleşiyorlarsa kullanacaktır. Eğer env_reset bayrağı etkinse, visudo sudo aracılığıyla çağrıldığında env_editor bayrağının çalışabilmesi için SUDO_EDITOR, VISUAL ve/veya EDITOR ortam değişkenleri env_keep listesinde bulunmalıdır. Varsayılan değer "on" (açık) şeklindedir ve derleme zamanında --with-env-editor yapılandırma seçeneği ile ayarlanabilir.

Seçenekler aşağıdaki gibidir:

-c, --check Yalnızca denetleme modunu etkinleştirir. Mevcut sudoers dosyası (ve içerdiği diğer dosyalar) sözdizimi hatalarına karşı denetlenir. Eğer sudoers dosyasının yolu belirtilmemişse visudo, dosyanın sahipliğini ve izinlerini de denetler (-O ve -P seçeneklerine bakın). -q seçeneği belirtilmediği sürece standart çıktıya sudoers durumunu açıklayan bir mesaj yazdırılır. Denetim başarıyla tamamlanırsa visudo 0 değeriyle çıkış yapar. Bir hatayla karşılaşılırsa visudo 1 değeriyle çıkış yapar.

-f sudoers, --file=sudoers Alternatif bir sudoers dosya konumu belirtir, aşağıya bakın. Sürüm 1.8.27'den itibaren, sudoers yolu -f seçeneği kullanılmadan da belirtilebilir.

-h, --help Standart çıktıya kısa bir yardım mesajı yazdırır ve çıkış yapar.

-I, --no-includes Önceden var olan bir sözdizimi hatası olmadığı sürece dahil edilen (include) dosyaların düzenlenmesini devre dışı bırakır. Varsayılan olarak visudo, ana sudoers dosyasını ve @include veya #include yönergeleriyle dahil edilen tüm dosyaları düzenleyecektir. @includedir veya #includedir aracılığıyla dahil edilen dosyalar, bir sözdizimi hatası içermedikleri sürece asla düzenlenmezler.

-O, --owner Sudoers dosyasının varsayılan sahipliğini (kullanıcı ve grup) zorunlu kılar. Düzenleme modunda, düzenlenen dosyanın sahibi varsayılana ayarlanacaktır. Denetim modunda (-c), sahip yanlışsa bir hata bildirilecektir. Sudoers dosyası belirtilmemişse bu seçenek varsayılan olarak etkindir.

-P, --perms Sudoers dosyasının varsayılan izinlerini (modunu) zorunlu kılar. Düzenleme modunda, düzenlenen dosyanın izinleri varsayılana ayarlanacaktır. Denetim modunda (-c), dosya izinleri yanlışsa bir hata bildirilecektir. Sudoers dosyası belirtilmemişse bu seçenek varsayılan olarak etkindir.

-q, --quiet Sessiz modu etkinleştirir. Bu modda sözdizimi hataları hakkındaki ayrıntılar yazdırılmaz. Bu seçenek yalnızca -c seçeneği ile birleştirildiğinde yararlıdır.

-s, --strict Sudoers dosyasının katı bir şekilde denetlenmesini etkinleştirir. Eğer bir takma ada (alias) başvurulmuş ancak fiilen tanımlanmamışsa veya bir takma adda döngü varsa, visudo bunu bir sözdizimi hatası olarak kabul edecektir. Yalnızca büyük harflerden, rakamlardan ve alt çizgi (‘_’) karakterinden oluşan bir takma ad ile bir ana bilgisayar adı (host name) veya kullanıcı adı arasındaki farkı ayırt etmek mümkün değildir.

-V, --version visudo ve sudoers dil bilgisi (grammar) sürümlerini yazdırır ve çıkış yapar.

Varsayılan olan /private/etc/sudoers yerine başka bir sudoers dosyası belirtilebilir. Kullanılan geçici dosya, belirtilen sudoers dosyasına “.tmp” eklenmiş halidir. Yalnızca denetim modunda (-c), sudoers dosyasının standart girdiden okunacağını belirtmek için ‘-’ kullanılabilir. Politika bir bütün olarak değerlendirildiğinden, tek bir sudoers dahil etme dosyasını sözdizimi hataları açısından denetlemek yeterli değildir.

Hata ayıklama ve sudoers eklentisi (plugin) argümanları visudo 1.8.4 ve daha yüksek sürümleri, sudo.conf(5) dosyasındaki Debug satırları aracılığıyla yapılandırılan esnek bir hata ayıklama çerçevesini destekler.

sudo 1.8.12 sürümünden başlayarak visudo, varsayılan sudoers yol adını, kullanıcı kimliğini (user-ID), grup kimliğini (group-ID) ve dosya modunu geçersiz kılmak için sudoers eklentisine iletilen argümanları da çözümleyecektir. Bu argümanlar, mevcut olmaları durumunda, eklenti yolundan sonra (yani sudoers.so'dan sonra) listelenmelidir. Boşlukla ayrılmış birden fazla argüman belirtilebilir. Örneğin:

Plugin sudoers_policy sudoers.so sudoers_mode=0400

Aşağıdaki argümanlar desteklenmektedir:

sudoers_file=yol_adı sudoers_file argümanı, sudoers dosyasının varsayılan yolunu geçersiz kılmak için kullanılabilir.

sudoers_uid=kullanıcı_kimliği sudoers_uid argümanı, sudoers dosyasının varsayılan sahibini geçersiz kılmak için kullanılabilir. Sayısal bir kullanıcı kimliği (user-ID) olarak belirtilmelidir.

sudoers_gid=grup_kimliği sudoers_gid argümanı, sudoers dosyasının varsayılan grubunu geçersiz kılmak için kullanılabilir. Sayısal bir grup kimliği (group-ID) olarak belirtilmelidir (grup adı değil).

sudoers_mode=mod sudoers_mode argümanı, sudoers dosyasının varsayılan dosya modunu geçersiz kılmak için kullanılabilir. Sekizlik (octal) bir değer olarak belirtilmelidir.

sudo.conf(5) dosyasının yapılandırılması hakkında daha fazla bilgi için ilgili kılavuza bakın.

Ortam

editor ve env_editor sudoers ayarlarına bağlı olarak aşağıdaki ortam değişkenlerine başvurulabilir:

SUDO_EDITOR Kullanılacak düzenleyici olarak visudo tarafından çağrılır

VISUAL SUDO_EDITOR ayarlanmamışsa visudo tarafından kullanılır

EDITOR Ne SUDO_EDITOR ne de VISUAL ayarlanmışsa visudo tarafından kullanılır

Dosyalar

/private/etc/sudo.conf Sudo ön uç yapılandırması

/private/etc/sudoers Kimin neyi çalıştırabileceğinin listesi

/private/etc/sudoers.tmp visudo tarafından kullanılan varsayılan geçici dosya

Teşhisler

sudoers sözdizimi hatalarını bildirmenin yanı sıra, visudo aşağıdaki mesajları da üretebilir:

sudoers file busy, try again later. Şu anda başka biri sudoers dosyasını düzenliyor.

/private/etc/sudoers: Permission denied visudo'yu root olarak çalıştırmadınız.

you do not exist in the passwd database Kullanıcı kimliğiniz (user-ID) sistem passwd veritabanında görünmüyor.

Warning: {User,Runas,Host,Cmnd}_Alias referenced but not defined Bildirilmemiş bir {User,Runas,Host,Cmnd}Alias kullanmaya çalışıyorsunuz veya yalnızca büyük harflerden, rakamlardan ve alt çizgi (‘’) karakterinden oluşan bir kullanıcı ya da ana bilgisayar adı listelemişsiniz. İkinci durumda uyarıları göz ardı edebilirsiniz (sudo şikayet etmeyecektir). Mesajın başına sudoers dosyasının yol adı ve tanımlanmamış takma adın kullanıldığı satır numarası eklenir. Katı (-s) modda bunlar uyarı değil, hatadır.

Warning: unused {User,Runas,Host,Cmnd}_Alias Belirtilen {User,Runas,Host,Cmnd}_Alias tanımlanmış ancak hiç kullanılmamış. Mesajın başına sudoers dosyasının yol adı ve kullanılmayan takma adın tanımlandığı satır numarası eklenir. Kullanılmayan takma adı yorum satırı haline getirmek veya kaldırmak isteyebilirsiniz.

Warning: cycle in {User,Runas,Host,Cmnd}_Alias Belirtilen {User,Runas,Host,Cmnd}_Alias doğrudan veya içerdiği bir takma ad aracılığıyla kendisine bir referans içeriyor. Mesajın başına sudoers dosyasının yol adı ve döngünün algılandığı satır numarası eklenir. sudoers dosyasını çözümlerken sudo döngüleri yok sayacağından, visudo -s (katı) modda çalıştırılmadığı sürece bu sadece bir uyarıdır.

ignoring editor backup file Bir @includedir veya #includedir işlenirken, adı ‘~’ veya .bak ile biten bir dosya bulundu. Bu tür dosyalar sudo ve visudo tarafından atlanır.

ignoring file name containing '.' Bir @includedir veya #includedir işlenirken, adında ‘.’ karakteri barındıran bir dosya bulundu. Bu tür dosyalar sudo ve visudo tarafından atlanır.

unknown defaults entry "name" sudoers dosyası, visudo tarafından tanınmayan bir Defaults ayarı içeriyor.

Ayrıca Bkz.

vi(1), sudo.conf(5), sudoers(5), sudo(8), vipw(8)

Yazarlar

Yıllar boyunca pek çok kişi sudo üzerinde çalışmıştır; bu sürüm temel olarak şu kişi tarafından yazılan kodlardan oluşmaktadır:

Todd C. Miller

sudo'ya katkıda bulunan kişilerin kapsamlı bir listesi için sudo dağıtımındaki CONTRIBUTORS.md dosyasına (https://www.sudo.ws/about/contributors/) bakın.

Uyarılar

Eğer visudo tarafından kullanılan düzenleyici kabuk kaçışlarına (shell escapes) izin veriyorsa, bir kullanıcının root kabuğu elde etmesini engellemenin kolay bir yolu yoktur.

Hatalar

visudo içinde bir hata bulduğunuzu düşünüyorsanız, https://bugzilla.sudo.ws/ adresindeki sudo hata veritabanına bir hata raporu gönderebilir veya https://github.com/sudo-project/sudo/issues adresinden bir sorun (issue) açabilirsiniz. E-posta kullanmayı tercih ederseniz, mesajlar sudo-workers e-posta listesine (https://www.sudo.ws/mailman/listinfo/sudo-workers) (genel) veya sudo@sudo.ws (özel) adresine gönderilebilir.

Lütfen güvenlik açıklarını genel GitHub sorunları, Bugzilla veya e-posta listeleri aracılığıyla bildirmeyin. Bunun yerine, bunları e-posta yoluyla Todd.Miller@sudo.ws adresine bildirin. İsterseniz mesajınızı https://www.sudo.ws/dist/PGPKEYS adresinde bulunan anahtarı kullanarak PGP ile şifreleyebilirsiniz.

Destek

Sınırlı ücretsiz destek sudo-users e-posta listesi aracılığıyla mevcuttur; abone olmak veya arşivlerde arama yapmak için https://www.sudo.ws/mailman/listinfo/sudo-users adresine bakın.

Sorumluluk Reddi

visudo “OLDUĞU GİBİ” sunulmaktadır ve satılabilirlik ile belirli bir amaca uygunluk gibi zımni garantiler de dahil ancak bunlarla sınırlı olmamak üzere her türlü açık veya zımni garanti reddedilir. Tüm ayrıntılar için sudo ile birlikte dağıtılan LICENSE.md dosyasına veya https://www.sudo.ws/about/license/ adresine bakın.

Sudo 1.9.17p2 27 Temmuz 2023 VISUDO(8)