DBA olarak bazen system üstünde işlem yapmak isteyebiliriz. Yada server da windows account umuz yoktur ama windows üzerinde bir işlem yapmamız gerekebilir. Böyle bir durumda xp_cmdshell imdadınıza yetişecektir.

xm_cmdshell ile windows üzerinde işlettiğiniz komutları SQL Server aracılığıyla yapabilirsiniz. Burada yapabilecekleriniz SQL Server service account unun yapabilecekleri ile sınırlı. Eğer local admin se değmeyin keyfimize :)

xm_cmdshell i SQL Server da kullanan login in sysAdmin olması gerekmekte. Bu şekilde bir sysAdmin user ıyla ilk denememizi yapalım.

Örneğin c:\ klasörüne dır çekelim.

xp_cmdshell 'dir c:\'

 

Execute ettiğimizde aşağıdaki gibi bir hata aldığınız değil mi?

Msg 15281, Level 16, State 1, Procedure xp_cmdshell, Line 1
SQL Server blocked access to procedure 'sys.xp_cmdshell' of component 'xp_cmdshell' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'xp_cmdshell' by using sp_configure. For more information about enabling 'xp_cmdshell', see "Surface Area Configuration" in SQL Server Books Online.

Bunun sebebi SQL Server kurulumunda güvenlikten dolayı default olarak xm_cmdshell in disable gelmesi. Dolayısıyla bu işlemi gerçekleştirmek istiyorsak xp_cmdshell i enable etmeliyiz.

xp_cmdshell i sp_configure ile enable edebiliriz. bunun için aşağıdaki kodu execute etmeniz yeterlidir.

 

sp_configure 'show advanced options',1
reconfigure
sp_configure 'xp_cmdshell',1
reconfigure


dir komutunu tekrar çalıştırırsak sonucu göreceğizdir.

xp_cmdshell 'dir c:\'


dr1

Yazımın başında xp_cmdshell i kullanabilmek için sysAdmin olmak gerekiyor demiştim. Bu gerekliliğin nasıl ortadan kaldırılabileceğini anlattığım makaleme aşağıdaki linkten ulaşabilirsiniz.

http://www.turgaysahtiyan.com/post/SQL-Server-Proxy-Account-Kullanarak-sysAdmin-Olmayan-User-lara-xp_cmdshell-Kullandc4b1rmak.aspx

İyi çalışmalar

Turgay Sahtiyan

Not : Blog haricinde, faydali gördügüm yazilari ve linkleri twitter adresimden paylasiyorum. Beni twitter'da takip etmek için : twitter.com/turgaysahtiyan