İçeriğe geç
DomainQ
WordPress

WordPress Kullanıcı Rolü Yetmiyorsa Hangi Yetki Kontrol Edilmeli?

Bir kullanıcı “bu işlemi yapamazsınız” hatası aldığında sorun yalnızca rol adı olmayabilir. İstenen işlem için gerekli capability’yi ve kurulum türünü kontrol edin.

WordPress Kullanıcı Rolü Yetmiyorsa Hangi Yetki Kontrol Edilmeli? — DomainQ blog kapak görseli

Bir kullanıcı yazı hazırlayabiliyor ama kullanıcı hesabını düzenleyemiyor, eklenti kuramıyor ya da Site Editor içinde yaptığı değişikliği kaydedemiyorsa ilk tepki genellikle rolünü “daha yüksek” bir rolle değiştirmek olur. Bu yaklaşım gereğinden fazla erişim verebilir ve asıl sorunu gizleyebilir. WordPress kullanıcı yetkisi kontrolünde daha doğru soru şudur: Kullanıcı hangi belirli işlemi yapmaya çalışıyor ve bu işlem hangi capability’yi, yani belirli işlem yetkisini gerektiriyor?

WordPress yetki sorunu inceleme akışı: Yapılamayan işlemi tanımla; Tek site veya çoklu siteyi doğrula; Gerekli capability’yi kontrol et; Site Editor ise REST API yanıtını incele; Geniş yetki etkisini değerlendir
WordPress yetki sorunu inceleme akışı

Kısa özet

  • Rol, kullanıcının sitedeki sorumluluklarını ve yapabileceği görev kümesini tanımlar; tek tek işlem izinleri capability olarak adlandırılır.
  • Bir rolün adı diğerinden üstün olduğu anlamına gelmez; sorun giderirken kullanıcının yapmaya çalıştığı işlemi ve o işlem için gereken capability’yi ayırmak gerekir.
  • Tek siteli kurulumlarda bazı yönetim yetkileri yalnız yöneticidedir; çoklu sitede aynı yetkiler yalnız Super Admin’e aittir.
  • Site Editor sorunlarında edit_theme_options temel erişim yetkisidir; ancak düzenlenecek içerik türüne göre ek capability’ler gerekebilir.

Rol ile capability arasındaki fark nedir?

WordPress’te rol, bir kullanıcının yapabileceği görevlerden oluşan kümeyi tanımlar. Bu görevleri mümkün kılan tekil izinlere capability denir. Örneğin publish_posts, moderate_comments ve edit_users ayrı capability örnekleridir.

Bu nedenle “Editör rolü yeterli mi?” sorusu tek başına her zaman yeterli bir teşhis sorusu değildir. Kullanıcı bir işlemi yapamıyorsa, rol adından önce o işlemin gerektirdiği capability’yi belirlemek gerekir. Varsayılan olarak rollere belirli capability’ler atanır; bunlar add_cap() ve remove_cap() işlevleriyle eklenebilir veya kaldırılabilir.

Rolleri bir kıdem sıralaması gibi değerlendirmeyin. WordPress belgelerine göre roller, sitedeki sorumlulukları tanımlar. Bir rolün adı daha üst düzey görünse bile, kullanıcının ihtiyacı olan belirli işlem iznini içerdiği sonucuna varılmamalıdır.

  • Önce engellenen işlemi açıkça yazın: örneğin eklenti kurma, kullanıcı düzenleme veya şablon kaydetme.
  • Ardından bu işlemin gerektirdiği capability’yi kontrol edin.
  • Role capability eklemek veya çıkarmak, rol adını değiştirmekten farklı bir işlemdir.

Kaynak: [1]

Önce kurulum türünü belirleyin: tek site mi, çoklu site mi?

Bazı yönetim capability’leri kurulum türüne göre farklı kişilere ayrılmıştır. Tek siteli WordPress kurulumunda bu ek yönetim yetkilerine yalnız Administrator rolü erişir. Multisite olarak da anılan çoklu site kurulumunda ise bu yetkiler yalnız Super Admin’e aittir.

Bu ayrım özellikle eklenti veya tema kurulumu, WordPress çekirdeğinin güncellenmesi ve kullanıcıların düzenlenmesi gibi işlemlerde önemlidir. Kullanıcının rolü yönetici olsa bile, çoklu sitede Super Admin değilse bu işlemler için gereken yetkilere sahip olmayabilir.

Örnek senaryo: Çoklu site kurulumunda bir site yöneticisi eklenti kurmak ister ve işlem engellenir. Bu durumda yalnız rol adını değiştirmek yerine, işlemin çoklu sitede Super Admin’e ayrılmış yönetim yetkileri arasında olduğunu kontrol etmek gerekir.

  • Eklenti kurma veya silme
  • Tema kurma, silme ya da düzenleme
  • WordPress çekirdeğini, eklentileri veya temaları güncelleme
  • Kullanıcıları düzenleme

Kaynak: [1]

Site Editor açılıyor ama bölüm yüklenmiyor veya kayıt olmuyorsa

Site Editor erişiminde WordPress’in temel olarak kontrol ettiği capability edit_theme_options’tır. Bu yetki, kullanıcının Site Editor üzerinden şablonları açıp yönetebilmesinde temel rol oynar. Ancak kullanıcının düzenlemesi beklenen içerik türlerine bağlı olarak başka capability’ler de gerekebilir.

Bir kullanıcı Site Editor’ı açabiliyor fakat bazı alanlar yüklenmiyor ya da değişiklikler kaydedilmiyorsa, tarayıcının geliştirici araçlarında REST API isteklerini inceleyin. 401 Unauthorized veya 403 Forbidden yanıtı dönen istekler, izin denetiminde başarısızlık olduğunu gösterebilir.

REST API yanıtındaki hata kodu ve mesajı, ilgili uç noktanın hangi izin kontrolünde başarısız olduğuna işaret edebilir. Bu bilgi, rolün hangi uç nokta için gereken capability’den yoksun olabileceğini anlamaya yardım eder. Böylece rastgele geniş yetki vermek yerine, sorunu belirli işlem düzeyinde inceleyebilirsiniz.

edit_theme_options eklemeyi yalnızca Site Editor erişimi olarak düşünmeyin. Bu capability, tema ile ilgili başka yönetim işlevlerine de erişim sağlayabilir. Yetki değişikliğini uygulamadan önce bu daha geniş kapsamı değerlendirin.

  • Site Editor erişimi için edit_theme_options kontrolünü yapın.
  • Yükleme veya kaydetme sorunu varsa geliştirici araçlarındaki REST API isteklerini inceleyin.
  • 401 Unauthorized ve 403 Forbidden yanıtlarında hata kodu ile mesajı okuyun.
  • Bir capability eklemeden önce erişim kapsamının yalnız hedef ekranla sınırlı olmayabileceğini değerlendirin.

Kaynak: [1]

Güvenlik açısından özellikle dikkat edilmesi gereken capability’ler

Capability eksikliği sorununu çözmek, her yetkiyi vermek anlamına gelmez. WordPress belgeleri, unfiltered_html capability’sinin kullanıcıya sayfa, yazı, yorum ve bileşenlerde HTML hatta JavaScript kodu yayımlama izni verdiğini belirtir. Güvenilmeyen kullanıcılara verilmesi, zararlı veya hatalı biçimlendirilmiş kod yayımlanması riski taşıyabilir.

unfiltered_upload capability’si ise varsayılan olarak hiçbir role verilmez; buna Super Admin de dahildir. Bir kullanıcıya alışılmadık bir yükleme yetkisi vermeyi düşünüyorsanız, bunun varsayılan rol yapısının dışında olduğunu fark ederek karar verin.

Pratik yaklaşım, kullanıcıya yalnız yapacağı iş için gereken capability’yi değerlendirmektir. Sorun bir kez çözüldükten sonra, eklenen erişimin tema, kullanıcı yönetimi veya kod yayımlama gibi başka alanlara uzanıp uzanmadığını tekrar kontrol edin.

  • Güvenilmeyen kullanıcılara unfiltered_html vermeyin.
  • unfiltered_upload yetkisinin varsayılan olarak hiçbir rolde bulunmadığını dikkate alın.
  • Geniş kapsamlı bir capability eklemeden önce hangi yönetim alanlarını etkileyebileceğini değerlendirin.

Kaynak: [1]

Sorunu capability düzeyinde teşhis etmek için kısa sıra

Bir yetki sorunu ortaya çıktığında hedef, kullanıcıyı en yüksek role taşımak değil, engellenen işlemi açıklığa kavuşturmaktır. Önce kullanıcının yaptığı işlemi, ardından sitenin tekli veya çoklu site yapısını, sonra da ilgili capability’yi ele alın. Bu sıra, rol adlarına göre tahmin yürütmek yerine WordPress’in izin modeline göre inceleme yapmanızı sağlar.

Yeni hesapların görevlerine uygun rollerle açılması için WordPress Kullanıcı Rollerini Seçerken Nelere Bakılır? rehberini de kullanabilirsiniz. Bu rehber rol seçimine odaklanırken, burada ele alınan kontrol sırası mevcut bir rolün neden belirli işlemi yapamadığını araştırmaya yardımcı olur.

  • Kullanıcının yapamadığı işlemi kaydedin.
  • Kurulumun tek site mi, çoklu site mi olduğunu doğrulayın.
  • İşleme karşılık gelen capability’yi belirleyin.
  • Site Editor sorunsa REST API hata yanıtlarını kontrol edin.
  • Yetki eklenirse daha geniş erişim sonucunu yeniden değerlendirin.

Kaynak: [1]

Uygulama kontrol listesi

  • Kullanıcının gerçekleştiremediği işlemi net olarak tanımlayın.
  • Rol adını kıdem göstergesi olarak yorumlamayın.
  • İşlem için gerekli capability’yi kontrol edin.
  • Tek site ile çoklu site ayrımını doğrulayın.
  • Eklenti, tema, güncelleme ve kullanıcı düzenleme işlemlerinde Administrator veya Super Admin sınırını kontrol edin.
  • Site Editor sorunlarında edit_theme_options ve REST API hata yanıtlarını inceleyin.
  • Geniş kapsamlı capability’leri, özellikle unfiltered_html yetkisini dikkatle değerlendirin.
  • unfiltered_upload yetkisinin varsayılan olarak hiçbir role verilmediğini unutmayın.

WordPress’te rol, sorumluluk çerçevesidir; capability ise belirli işlemi yapma iznidir. Kullanıcı bir görevi tamamlayamadığında rolü yükseltmeden önce engellenen işlemi, kurulum türünü ve gereken capability’yi kontrol edin. Özellikle çoklu sitede Super Admin sınırını, Site Editor’da edit_theme_options kapsamını ve geniş erişim veren capability’lerin güvenlik etkisini dikkate alın.

Sık sorulan sorular

WordPress’te yönetici rolü her zaman tüm işlemleri yapabilir mi?

Hayır. Tek siteli kurulumda ek yönetim capability’leri Administrator rolüne aittir. Çoklu site kurulumunda bu yetkiler yalnız Super Admin’e aittir.

Site Editor için yalnız edit_theme_options yeterli midir?

edit_theme_options, Site Editor’a erişim ve şablon yönetimi için WordPress’in temel kontrol ettiği capability’dir. Ancak kullanıcının düzenleyeceği içerik türüne göre başka capability’ler de gerekebilir.

Bir kullanıcıya unfiltered_html vermek güvenli midir?

Bu capability, sayfa, yazı, yorum ve bileşenlerde HTML ve JavaScript kodu yayımlamaya izin verir. WordPress belgeleri, güvenilmeyen kullanıcılara verilmesinin zararlı veya hatalı biçimlendirilmiş kod riski taşıdığını belirtir.

Kaynaklar

[1] Roles and Capabilities – Documentation – WordPress.org