Makale Özeti

Active Directory'deki bir kullanıcının yanlışlıkla sinilip tekrar yaratılması sonucu SharePoint Portal Server 2003 üzerindeki eski kullanıcı ile bu yeni kullanıcının eşleştirilmesi işlemini konuşuyor olacağız.

Makale

Microsoft SharePoint Portal Server 2003 ürünü, windows hesapları üzerinden kullanıcılarn kimlik denetimlerini yapma ve onları yetkilendirme üzerine kurulu bir yapıdadır. Active Directory üzerinde tanımlı kullanıcıları rahatlıkla portal üzerinde kullanıcı olarak tanımlayıp rahatlıkla yetkilendirme yapabilmekteyiz. Ancak, bütün bu yetkilendirmeler sonucunda, herhangi bir nedenden ötürü bir kullanıcıyı Active Directory'den silersek, sonradan bu kullanıcıyı, tüm bilgileriyle tekrardan yaratırsak, çoğu windows uygulaması gibi SharePoint de bu kullanıcıyı, tüm bilgileri eski kullanıcıyla aynı olsa dahi, yeni bir kullanıcı olarak nitelendirir. Bunun temelinde de her kullanıcıya ait tek bir SID'nin olması, bir kullanıcının bilgileri arasında SharePoint'i ilgilendiğinin de SID oluşudur.

Böyle bir durumda iki seçenek bulunmaktadır; birincisi yeni kullanıcıya, eski kullanıcının sahip olduğu tüm yetkileri teker teker vermek, ikincisi ise SharePoint içerik veritabanına elle müdehale etmektir. Birinci yöntem hem zorlayıcı hem de amatör bir yaklaşım olmakla beraber, ikinci yöntem de sistem veritabanlarına müdehale anlamına geldiğinden ötürü tehlikeli bir yaklaşımdır ve Microsoft tarafından kesinlikle önerilmemektedir.

Eğer seçiminizi ikinci yöntemden yöne kullanırsanız, o noktada işimi çok daha kolay olur. İkinci yöntemin amacı, yeni yaratılmış olan kullanıcının SID'sini ve diğer bilgilerini, eski kullanıcınınkilerle SharePoint veritabanı üzerinde değiştirmektir. Bunun için ilk önce, eski kullanıcıya ait logon name'in bilinmesi gereklidir. Bu logon name bilgisi ile SharePoint web sitesinin içerik veritabanları içerisinde, varsayılan kurulumda sonu _SITE ile biten isimli veritabanının içerisindeki UserInfo tablosunda:

Select * From UserInfo Where tp_login = 'yazgelistir\nezih'

şeklinde bir arama yaptırmak bize yazgelistir\nezih kullanıcısı ile ilgili olan tüm satırları listeleyecektir. Bu bilgileri bulduktan sonra ikinci adım, yeni kullanıcının SID'sini bulmaktır. Bunun için de SQL Server'ın sistem fonksiyonlarından suser_sid bizim yardımımıza koşacaktır. suser_sid fonksiyonu parametre olarak domain\logonName şeklinde verilmiş olan karakter dizisini alır ve karşılığında bu kullanıcının SID'sini döndürür. Bu noktada bizim işimiz artık çok kolay olmaktadır.

Diyelim ki, eskiden yazgelistir\nezih şeklinde bir kullanıcımız vardı, ve bu kullanıcıyı sildik, yeniden yarattık. Bu değişikliği SharePoint'e aktarmak için:

Update UserInfo
Set tp_systemid = suser_sid('yazgelistir\nezih')
Where tp_login = 'yazgelistir\nezih'

scriptini çalıştırmak yeterlidir. Eğer yeni yarattığımız kullanıcının logon name'i de farklı olacak ise ( mesela yazgelistir\nezih.tinas ), bu noktada scripti :

Update UserInfo
Set tp_systemid = suser_sid('yazgelistir\nezih.tinas'), tp_login = 'yazgelistir\nezih.tinas'
Where tp_login = 'yazgelistir\nezih'

şeklinde değiştirmek gereklidir.

Bu işlem sonucunda sistem yeni kullanıcı ile, eski kullanıcının yetkileri çerçevesinde çalışıyor olacaktır. Tekrarlamak gerekirse, Microsoft, bu tarz, SharePoint veritabanlarına elle müdehale işlemlerini kesinlikle önermemektedir. Bu işlem sonucunda oluşabilecek hasar sonrası Microsoft size yine destek vermeyecektir. Seçim yine sizin...