24.12.2025

Anaheim

Diskimde hangi dosyaların ne tür ADS'lerinin olduğunu kontrol ediyordum:

dir -File -Recurse | % { $a = (gi $_.Fullname -Stream *  | ? Stream -ne ':$DATA').Stream;if ($a) {[PSCustomObject]@{Path=$_.FullName;Stream=$a}}}

Bu tek satırlık powershell komutu bana iki sütun halinde dosya tam yollarını ve birincil akış haricindeki diğer akışları (ADS) listeliyordu. Zone.Identifier varsayılan olarak internetten indirilen dosyaların Mark-of-the-Web işaretini vurguluyor. Ama bir dosya için farklı olarak SmartScreen gördüm. İçeriğini görmek için aşağıdaki komutu çalıştırdım:

gc -path D:\dosya.exe:SmartScreen
Anaheim

Evet. SmartScreen ADS'sinin içeriği tek kelime ve o da Anaheim. Acaba nedir bu Anaheim diye gezinirken cevabı SuperUser.com'da buldum.

SmartScreen'in Windows'un aklı başında insanlar tarafından kullanılmaması gereken bir bileşeni olduğunu biliyordum ama Anaheim'in Edge'in kod adını olduğunu bu sayede öğrenmiş oldum. 

23.12.2025

Dosya gezgininde önizlemesi yapılamayan dosyalar

Windows'un dosya gezgininin önizleme özelliğini yoğun olarak kullanan bir kullanıcı, bazı pdf dosyalarında önizlemenin yapılamadığını söyledi. Önizleme yapabilmek için dosya gezginin araç çubuğundaki "Görünüm" düğmesi ile açılan menüden önizleme bölmesini seçerek pencerenin sağ tarafında dosya içeriğini açmadan (!) da izleyebileceğimiz bir alan oluşturabiliyoruz. Açmadan konusu biraz ilginç, çünkü arka planda dosya açılıyor, disk işlemleri yapılıyor ve belleğe yükleniyor. Sadece bağımsız bir pencereye sahip olmuyor ve belki de çok sayıda dosyanın olduğu bir klasörde hızlı gezinme imkanı veriyor. Neyse, önizleme bölmesinde dosya yerine görüntülenen mesaj şöyle:

Önizlemek istediğiniz dosyalar bilgisayarınıza zarar verebilir. Dosyaya ve aldığınız kaynağa güveniyorsanız, içeriğini görmek için dosyayı açın.

İlk aklıma hangi önizleme bileşenini kullanıdığını kontrol etmek geldi.

"HKEY_CURRENT_USER\.pdf\ShellEx\{8895b1c6-b41f-4c1c-a562-0d564250836f}"

altında Varsayılan değere baktığımda {3A84F9C2-6164-485C-A7D9-4B27F8AC009E} değerini gördüm. Bunun neye karşılık geldiğini görmek için

"HKEY_CURRENT_USER\CLSID\{3A84F9C2-6164-485C-A7D9-4B27F8AC009E}"

altındaki varsayılan değeri kontrol ettim ve

"C:\Program Files (x86)\Microsoft\Edge\Application\143.0.3650.96\PdfPreview\PdfPreviewHandler.dll"

buldum. Yani Edge'in bileşenini kullanıyor. İlk aklıma gelen bunu değiştirmekti. Adobe Acrobat'ın bileşenini ayarladım, fayda etmedi.

Sonradan farkettim bu görüntüleyememe olayı her dosya için olmuyor. Acaba hangi dosyalar için oluyor diye düşünürken son dönemde internetten indirilmiş dosyalar içinde oluyor. Kontrol ettim,

Get-Item ".\dosya.pdf" -Stream Zone.Information

bir Zone.Identifier ADS akışı var. Normal şartlar altında grafik arayüzle şu şekilde dosyaların engeli kaldırılabilir. Ama bir klasör ve tüm alt klasörlerinde yer alan bütün dosyaların engelini kaldırmak için

dir -recurse | Unblock-File

ile tek seferde bütün dosyaların engelini kaldırmayı başardım.

22.12.2025

Fedora'da dnf5'e geçiş

Fedora yükseltmek için şu adımları kullanıyordum. Sürüm 41'den sürüm 43'e yükseltirken bana

sudo dnf system-upgrade reboot

yerine

sudo dnf5 offline upgrade

kullanmamı önerdi. Meğer sürüm 41'de artık bu yönde bir değişiklik olmuş. dnf5 hala tavsiye edilen kararlı yapıda değil, ama muhtemelen sürüm 45'te artık dnf yerine kullanılabilir olacak.

Diğer tüm durumlar için dnf ana komutu dnf5 ile değiştirmek yeterli:

dnf5 install firefox
dnf5 remove firefox
dnf5 search firefox
dnf5 upgrade

gibi. 

19.12.2025

dnf update sırasında çıkan "Downloading successful, but checksum doesn't match." mesajı

Buna hata mı demek lazım, uyarı mı, yoksa bilgilendirme mesajı mı?

Fedora üzerinde dnf update yaparken rastladım. Şuna benzer bir mesajdı:

$ sudo dnf check-upgrade
Updating and loading repositories:
 Fedora 41 - x86_64 - Updates                               100% |  67.2 KiB/s |  31.8 KiB |  00m00s
 Signal Messaging Devel Project (Fedora_41)                 100% |   2.3 KiB/s |   1.7 KiB |  00m01s
 Fedora 41 openh264 (From Cisco) - x86_64                   100% |   3.6 KiB/s | 989.0   B |  00m00s
 Brave Browser                                              100% |  15.5 KiB/s |   2.0 KiB |  00m00s
 ProtonVPN Fedora Stable repository                         100% |   4.8 KiB/s |   3.7 KiB |  00m01s
 Fedora 41 - x86_64                                         100% | 182.4 KiB/s |  32.7 KiB |  00m00s
 Fedora 41 - x86_64 - Updates                               100% |   1.3 MiB/s |   4.6 MiB |  00m03s
>>> Downloading successful, but checksum doesn't match. Calculated: e96bd9b4c272be2d9c7d4a656b7ae322
>>> Downloading successful, but checksum doesn't match. Calculated: e96bd9b4c272be2d9c7d4a656b7ae322

Genelde böyle bir hata olursa paket güncellenmemiş olur. Hangi paket güncellenmedi acaba diye bakmak istedim, /var/log/dnf.log dosyasına, ama burada hata olduğuna dair bir bilgi bulamadım. Bu kelime ile yaptığım aramalarda şu adreste bulduğum açıklamaya göre güncelleştirme sırasında kullanılan yansı sunucuda geçici bir uyumsuzluk olabileceği, dnf'in hata yaşanan paketi yeniden indirerek veya yansı sunucuyu değiştirerek sorunu giderebileceği belirtilmiş. Hatta böyle bir uyumsuzluğun belki de yansı sunucunun üzerindeki paketlerin diğer bir yansı üzerinden güncellenmesi sırasında karşılaşılabileceği ifade edilmiş.

Sonuç olarak tekrar dnf upgrade yaptığımda hata oluşmadı, loglarda da sorun olduğuna dair bir kayıt bulamadım. Yani geçici bir durummuş, çözülmüş. 

18.12.2025

KB5072033 - Aralık 2025 Build 26100.7462 güncellemesi

Son dönemde Invoke-WebRequest'i kullandığım betiklerimde aşağıdaki gibi bir uyarı ile karşılaşıyorum.


Bunu hiç düşünmemiştim. Meğer Invoke-WebRequst cmdlet'i, çalıştırıldığında sayfadaki javascript betiklerini de çalıştırıyormuş. Bunu yapmak istemiyorsak, sadece sayfanın HTML içeriğini almak istiyorsak -UseBasicParsing parametresini kullanmalıymışız.

Bunu son birkaç günde görmeye başladım. Önce

Get-Hotfix

ile bilgisayarımda son yüklenen güncelleştirmeleri inceledim. En son yüklenen, olağan şüpheli olarak KB5072033'ü buldum. Bunu kullanarak yaptığım arama beni şu ve bu sayfalara götürdü. Bu vesile ile 24H2 güncelleştirmesinde artık Powershell 2.0 bileşeninin olmadığını da görmüş oldum ama asıl önemli olan söz konusu güncelleştirmenin bir toplu güncelleştirme paketi olduğu ve aslında 9 Aralık tarihli KB5074596 güncelleştirmesi ile Invoke-WebRequest'in bu uyarıyı göstermeye başladığını öğrendim. Artık tüm Invoke-WebRequest cmdlet'lerine -UseBasicParsing parametresini koymak gerek.

Powershell 5.1 Windows Management Framework bileşeni aracılığıyla bazı güvenlik güncelleştirmeleri almış mıdır, bilemiyorum ama bu şekilde bir özellik güncelleştirmesi uzun zamandır ilk defa alıyor sanki. 

15.12.2025

Rocky Linux sunucu kurulumu sonrası ilk ayarlar

Bir Rocky Linux sunucu kurdum. Kurulum sonrası bazı ilk ayarlar yapılması gerek.

İlk iş TCP/IP ayarlarını yapmak. Tercihen nmtui ile IP ataması yaptım. Ama elle atama yapacaksak /etc/NetworkManager/SystemConnections klasöründe her ethernet kartımıza ait bir dosya bulunur, örneğin ens192.nmconnection şeklinde. Bu dosyanın içeriği şöyle olabilir:

[connection]
id=ens192
uuid=<8-4-4-4-12 karakterlik-hex-dizi>
type=ethernet
autoconnect-priority=-999
interface-name=ens192
timestamp=1765795716

[ethernet]

[ipv4]
method=manual
address1=192.168.1.5/24
gateway=192.168.1.1
dns=1.1.1.1;8.8.8.8;
dns-search=domain.com
ignore-auto-dns=true
never-default=true

DNS sunucuların yeri yine /etc/resolv.conf dosyası. 

İkinci iş klavye düzenini değiştirmek. Hazırdaki klavye düzenlerini görmek istersek

localectl list-keymaps

ve bunların arasından örneğin Türkçe-Q klavye düzenini seçmek istiyorsak da

localectl set-keymap trq

komutu ile ilerleyebiliriz.

OpenSSH kurulu mu diye kontrol ettim:

rpm -q openssh

kurulu gelmiş. Hizmet çalışıyor mu diye baktım:

systemctl status sshd

o da çalışıyor. Windows makinemden ssh'a bağlantı denedim:

ssh metin@192.168.1.5

Bana daha önce 192.168.1.5 IP adresine sahip başka bir cihaza ait parmak izinin C:\Users\metin\.ssh\known_hosts dosyasında bulunduğunu söyleyen bir uyarı mesajı verdi. Evet, eski sunucuya ait satırı bu dosyadan silmek istiyorum. Hızlı bir şekilde

cd C:\users\metin\.ssh
cat known_hosts | ? {$_ -notmatch 192.168.1.5} | sc known_hosts2

yaptım. Yedek olması açısından mevuct dosyayı koruyarak yeni dosyayı devreye aldım:

ren known_hosts known_hosts.old2025
ren known_hosts2 known_hosts

Bu noktadan sonra önce sunucuya genel anahtarımızı aktaralım (bir tane yaratmak için tıklayın).

scp genel_anahtarim metin@192.168.1.5:/user/metin

Bu anahtarı authorized_keys dosyasının içine eklemeliyim. Var olan bir authorized_keys dosyası varsa, buna eklemek için ya cat komutunun birleştirme yeteneğini kullanarak

cat genel_anahtarim .ssh/authorized_keys > .ssh/authorized_keys

ya da çift yönlendirme operatörünü kullanabilirim:

cat genel_anahtarim >> .ssh/authorized_keys

Varsayılan olarak parola ile giriş (hatta boş parolalar bile) ve root ile erişim açıktır. Bunları kapatmak için /etc/ssh/sshd_config.d klasörünün içine bir dosya oluşturup aşağıdaki içerik girilebilir.

# Varsayilan portu degistir
Port 2122
# Sadece SSH protokol 2
Protocol 2

# Root kesinlikle giremez
PermitRootLogin no

# Sadece belirli kullanıcılar
AllowUsers metin

# Boş parola kabul etme
PermitEmptyPasswords no

# Parola ile giriş YOK
PasswordAuthentication no
KbdInteractiveAuthentication no
ChallengeResponseAuthentication no

# Sadece anahtar tabanlı giris
PubkeyAuthentication yes

# Yetkisiz forwarding kapali
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no

# Oturum guvenligi
LoginGraceTime 30
MaxAuthTries 3
MaxSessions 2

# Loglar daha ayrintili olsun
LogLevel VERBOSE 

Dağıtımdan dağıtıma değişebilir ama, bu klasör içinde bazı dosyalar olabilir. Örneğin benim sunucumda bu klasörde

-rw-------. 1 root root 412 Jul 20 20:00 40-redhat-crypto-policies.conf
-rw-------. 1 root root 307 Jul 20 20:00 50-redhat.conf

gibi dosyalar vardı. Ben 60-ek-yapilandirma.conf gibi bir dosya oluşturarak bunun içine girdim.

Hepsi bitince OpenSSH hizmetini yeniden başlattım.

systemctl restart sshd

Sonrasında parola ile girmeyi denedim, olmadı -tam da istediğim gibi. Sonra özel anahtarım ile girmeyi denedim:

ssh -i ozel_anahtarim metin@192.168.1.5

ve başarılı. 

12.12.2025

Linux komut geçmişi

Terminalden bağlandığım bir linux sunucu var. Oluşturduğum yeni bir kullanıcı için komut geçmişi (history) yok gibi görünüyor. Bunu etkinleştirmek istiyorum.

Önce kullandığım shell'i kontrol etmem gerek.

echo $SHELL
/usr/bin/sh

ile bash'i değil, sh'i kullandığımı gördüm. Bunu değiştirerek bash yaptım.

chsh -s $(which bash)

sonra bir kez bağlantımı kesip (konsoldan bağlıysam oturumu kapatıp) tekrar oturum açmam gerek.

Sonrasında yine echo $SHELL komutunu kullanarak çıkışta /usr/bin/bash gördüm.

Komut geçmişi, profilin altında .bash_history dosyasına yazılır. Bu dosya yoksa

echo $HISTFILE

komutu ile önce bu değişkenin varlığını kontrol etmek, yoksa

export HISTFILE=~/.bash_history

satırını .bashrc dosyasına eklemek, arkasından etkinleştirmek için

source ~/.bashrc

çalıştırmak gerek.

Komut geçmişini sınırlandıran değişkenler kontrol edilebilir:

echo $HISTSIZE
echo $HISTFILESIZE

Bu değişkenlerin ilki hafızada tutulacak komut geçmişi sayısı, ikincisi diskte tutulacak geçmiş sayısıdır.

zsh için de benzer bir şekilde ~/.zsh_history dosyasında tutulur. HISTSIZE değişkeni aynen geçerlidir, HISTFILESIZE yerine SAVEHIST değişkeni kullanılır.

Daha iyi bir yöntem için audit kullanılabilir. 

3.12.2025

Firefox'ta arama yapmak

Firefox, hep saygı duyduğum kullanmaktan zevk aldığı bir tarayıcı oldu. Adres satırından arama yapma fikrini sanıyorum ilk kullanan tarayıcıydı. Adres satırından yapılan aramalar için arama motoru eklemek de mümkün.

Üstteki ekran görüntüsünde açılan menünün en altında gözüken "Arama ayarları"na tıkladıktan sonra bizi karşılayan sayfaya elle arama motoru eklenebileceği gibi, arama motorunun anahtar kelime yazılan kutusuna sağ tıklayarak açılan menüden "Arama motoru ekle" komutu verilerek de eklenebilir. Ancak sonrasında bunu fareye dokunmadan da yapabilmek için az önce bahsettiğim arama ayarları sayfasına giderek buraya yeni eklenen satırın sağ yarısını çift tıklayarak oraya @viki gibi bir "@" işareti ile başlayan bir etiket yazarsak, ama satırına sadece @viki yazdıktan sonra istediğimiz aramayı gerçekleştirebiliriz.

Başka bir yöntem de yer imlerine yeni bir adres ekleyip anahtar kelimesini belirlemek. Örneğin Youtube'a girmeden adres satırına sadece "you barış manço" yazarak arama yapmak için aşağıdaki gibi bir düzenleme yeterli:


Adres kısmını bulmak için ise Youtube'a girip bir arama yaptıktan sonra adres satırında yer alan her şeyi kopyalayıp, içinde arama terimimizi (ki burada barış+manço) %s değişkeniyle değiştirebilriz.


Bir de DuckDuckGo Bangs mevzu var. Yukarıdakilerin hiçbirini yapmadan sadece arama motorumuzu DuckDuckGo ile değiştirirsek, !w gibi bir ön ekiyle Wikipedia araması, !imdb ön ekiyle IMDB araması yapabiliriz.


Bugün itibariyle +13.000 bang'e sahip olan ddg en iyi çözüm değil. Çünkü arama kriteri önce ddg'nin sunucularına, oradan Wikipedia'ya gönderiliyor. Firefox yöntemleri ile arama kriterleri doğrudan Wikipedia sunucularına (ya da IMDB sunucularına, hangisi ile arama yapıyorsak) gönderildiği için daha iyi bir çözüm.