Linux mülakat soruları: cevaplarıyla 24 soru
Linux mülakatlarında en çok dosya sistemi ve inode, sabit ve sembolik bağlantılar, izinler ve sudo, süreçler ve sinyaller, sistem açılışı ile ağ hakkında soru sorulur: açık portlar nasıl görülür, DNS çözümlemesi nasıl çalışır ve sunucuya ulaşılamadığında ne yapılır.
Linux soruları DevOps mühendislerinin, sistem yöneticilerinin, SRE'lerin ve backend geliştiricilerin mülakatlarında sorulur. Mülakatçılar nadiren bayrakları ezbere bilmenizi bekler: sistemi anlayıp anlamadığınızı ve sorunun kökünü bulabilip bulamayacağınızı görmek isterler. Aşağıda Linux mülakatlarında en sık çıkan sorular, temelden tanılamaya kadar, cevaplar ve komutlarla birlikte yer alıyor.
İpucu: cevap verirken iddianızı nasıl doğrulayacağınızı, hangi komutla kontrol edeceğinizi de söyleyin. «ss -tlnp ile bakarım» demek, genel laflardan çok daha inandırıcıdır.
Dosya sistemi
1. FHS nedir ve ana dizinlerde ne bulunur?
FHS (Filesystem Hierarchy Standard), dizinlerin nerede olacağını tanımlayan standarttır. Tüm ağaç kök / ile başlar; harfli sürücüler yoktur, diğer dosya sistemleri ağaçtaki dizinlere bağlanır.
/etc— sistem ve servislerin yapılandırması;/var— değişen veriler: günlükler (/var/log), önbellek, kuyruklar, veritabanları;/home— kullanıcıların ev dizinleri,/root— root'un ev dizini;/usr— programlar ve kütüphaneler; modern dağıtımlarda/binve/sbingenellikle/usr/binve/usr/sbin'e bağlıdır;/tmp— geçici dosyalar,/boot— çekirdek ve önyükleyici;/procve/sys— süreç ve çekirdek bilgisi içeren sanal dosya sistemleri,/dev— aygıt dosyaları.
2. inode nedir?
inode, dosyanın meta verilerini tutan dosya sistemi yapısıdır: tür, izinler, sahip, boyut, zaman damgaları, sabit bağlantı sayısı ve veri bloklarına işaretçiler. inode'da dosya adı yoktur: ad, dizinde «ad → inode numarası» olarak saklanır.
inode numarası ls -i ile, ayrıntılar stat file ile görülür. Bir dosya sisteminde inode sayısı sınırlıdır ve df -i kaçının kullanıldığını gösterir. Buradan klasik bir durum çıkar: «diskte çok yer var ama dosya oluşturulamıyor» — milyonlarca küçük dosya inode'ları tüketmiştir.
3. Sabit bağlantı ile sembolik bağlantı arasındaki fark nedir?
Sabit bağlantı (ln file link) aynı inode'a verilmiş bir ek addır. İki ad eşit konumdadır ve veri ancak bağlantı sayısı sıfıra indiğinde silinir. Sınırlamaları: dizinlere sabit bağlantı verilemez ve aynı dosya sisteminin dışına çıkılamaz.
Sembolik bağlantı (ln -s target link) kendi inode'u olan ayrı bir dosyadır; içinde hedefin yolu yazılıdır. Dizinleri ve başka dosya sistemlerini gösterebilir, ama hedef silinir ya da taşınırsa «kopar».
4. Disk doldu ama du, df'den az gösteriyor. Neden?
En yaygın neden: dosya silinmiş ama bir süreç hâlâ açık tutuyordur; örneğin çalışan bir servisin büyük günlük dosyası silinmiştir. Adı artık yoktur, bu yüzden du onu görmez; ama bloklar dolu kalır ve df bunları sayar.
Bu dosyaları bulmak için: lsof +L1 veya lsof | grep deleted. Çözüm: süreci yeniden başlatmak veya dosyayı tanımlayıcısı üzerinden kesmek: : > /proc/PID/fd/N. İleride günlükleri rm ile değil, truncate veya logrotate ile temizleyin.
5. Linux nasıl açılır?
Ana yazılım (BIOS veya UEFI) donanımı başlatır ve kontrolü genellikle GRUB olan önyükleyiciye verir. Önyükleyici yapılandırmayı okur, çekirdeği ve initramfs'i belleğe yükler. initramfs, gerçek köke ulaşmak için gereken sürücüleri içeren geçici bir kök dosya sistemidir.
Çekirdek aygıtları başlatır, kök dosya sistemini bağlar ve PID 1 olan kullanıcı alanı sürecini çalıştırır; çoğu dağıtımda bu systemd'dir. systemd, servisleri varsayılan hedefe, örneğin multi-user.target'a kadar kaldırır. Aşamaların süresini systemd-analyze gösterir.
6. mount komutu ne yapar ve otomatik bağlama nerede tanımlanır?
mount, bir aygıtın dosya sistemini bir dizine (bağlama noktası) bağlar: mount /dev/sdb1 /mnt/data. Mevcut bağlamalar findmnt veya argümansız mount ile görülür.
Açılışta yapılan bağlama /etc/fstab dosyasında tanımlanır. Aygıtları /dev/sdb1 gibi adlarla değil, UUID ile yazmak daha iyidir (blkid gösterir), çünkü ad değişebilir. Yeniden başlatmadan önce mount -a ile değişiklikleri kontrol edin: fstab'daki bir hata açılışı durdurabilir.
Kullanıcılar ve izinler
7. Linux'ta dosya izinleri nasıl çalışır?
Her dosyanın bir sahibi, bir grubu ve üç izin kümesi vardır: sahip, grup ve diğerleri için. Her küme r (okuma), w (yazma), x (çalıştırma) içerir. Sayısal biçimde r=4, w=2, x=1'dir; bu yüzden chmod 640 file sahibe okuma ve yazma, gruba okuma, diğerlerine hiçbir şey verir.
$ ls -l app.conf
-rw-r----- 1 deploy www-data 512 Oct 12 10:03 app.conf
Sahip chown user:group file ile, izinler chmod ile değiştirilir.
8. Dizinler için r, w, x ne anlama gelir?
Dizinlerde anlam farklıdır: r — ad listesini almak mümkündür; w — içinde dosya oluşturmak, silmek ve yeniden adlandırmak mümkündür; x — dizine girmek ve dosyalara adla erişmek mümkündür.
Bunun önemli bir sonucu: bir dosyayı silmek için dizine yazma izni yeterlidir, dosya kişiye ait olmasa bile. Dizinde x yoksa r de yardımcı olmaz: adlar görünür ama dosyalar açılamaz.
9. SUID, SGID ve sticky bit nedir?
Çalıştırılabilir bir dosyadaki SUID, programın onu çalıştıran kişinin değil, sahibinin yetkileriyle çalışmasını sağlar. Klasik örnek /usr/bin/passwd'dir: root'a aittir ve /etc/shadow'u değiştirebilir. Dosyadaki SGID aynı işi grup için yapar; dizinde ise yeni dosyalara dizinin grubunu miras bırakır, bu da ortak klasörler için kullanışlıdır.
Dizindeki sticky bit, dizin herkese yazılabilir olsa bile dosyaların yalnızca sahibi tarafından silinmesine izin verir. /tmp böyledir: ls -ld /tmp çıktısında drwxrwxrwt görürsünüz. Denetim için tüm SUID dosyalarını bulmak: find / -perm -4000 -type f 2>/dev/null.
10. umask nedir?
umask, yeni dosya ve dizinlerden izin çıkaran bir maskedir. Temel izinler dosyalar için 666, dizinler için 777'dir; umask bunlardan bitleri çıkarır. Tipik 022 umask'ta dosyalar 644, dizinler 755 izinleriyle oluşur. Mevcut değeri umask komutu gösterir.
11. Kullanıcılar ve parolalar nerede tutulur?
Hesaplar /etc/passwd dosyasındadır: ad, UID, ana grubun GID'si, ev dizini ve kabuk. Parola karmaları /etc/shadow'da ayrı tutulur; bunu yalnızca root okuyabilir, böylece sıradan kullanıcılar karmaları kaba kuvvetle denemek için alamaz. Gruplar /etc/group'dadır.
Bir kullanıcının bilgisi için id user ve getent passwd user kullanılır; ikincisi LDAP gibi dış kaynakları da hesaba katar.
12. sudo nasıl çalışır ve root ile girişten neden daha iyidir?
sudo, bir komutu /etc/sudoers ve /etc/sudoers.d/ dosyalarındaki kurallara göre başka bir kullanıcı (varsayılan olarak root) adına çalıştırır. Kullanıcı kendi parolasını girer, root'un değil; her işlem kimin yaptığını gösterecek şekilde günlüğe yazılır.
Kural her şeye izin verebilir (alena ALL=(ALL:ALL) ALL) ya da yalnızca belirli komutlara. sudoers'ı düzenlemek için visudo kullanın: kaydetmeden önce sözdizimini kontrol eder ve bir hata sudo'yu kullanılamaz hâle getirmez. Ubuntu'da yönetici yetkisi sudo grubu üyeliğiyle, RHEL türevlerinde wheel grubuyla verilir.
13. Kullanıcıyı gruba nasıl eklersiniz ve değişiklik neden hemen geçerli olmadı?
usermod -aG docker alena kullanıcıyı ek bir gruba ekler. -a bayrağı zorunludur: onsuz -G tüm grup listesinin yerini alır.
Değişiklik yeni oturumda geçerli olur, çünkü mevcut oturum eski grup listesini tutar. Yeniden oturum açın veya newgrp docker ile yeni grupla bir kabuk açın. Kontrol: id.
Süreçler
14. Süreç ve PID nedir, süreçler nasıl görülür?
Süreç, çalışan bir programdır; kendi adres alanı, açık dosyaları ve PID tanımlayıcısı vardır. Her sürecin bir ebeveyni (PPID) vardır ve hepsinin atası PID 1'dir. Süreç listesi ps aux ve ps -ef ile, ağaç pstree veya ps -ef --forest ile, anlık görünüm top ve htop ile görülür.
15. SIGTERM ile SIGKILL arasındaki fark nedir?
kill PID varsayılan olarak SIGTERM (15) gönderir: kibar bir kapanma isteği. Süreç bunu yakalayabilir, bağlantıları kapatabilir, veriyi kaydedebilir ve çıkabilir. SIGKILL (9, kill -9) yakalanamaz: çekirdek süreci hemen, temizlik yapmadan sonlandırır.
Doğru sıra: önce SIGTERM, süreç yanıt vermezse ancak SIGKILL. Bir diğer yaygın sinyal SIGHUP'tır: birçok daemon bunu alınca yapılandırmayı yeniden okur.
16. Zombi süreç nedir?
Zombi, işini bitirmiş ama ebeveyni henüz wait() çağrısıyla çıkış kodunu okumamış süreçtir. Neredeyse hiç kaynak tüketmez, ama süreç tablosunda kaydı kalır. ps'te durumu Z olarak görünür.
Zombiyi öldürmek mümkün değildir, çünkü zaten ölüdür. Ebeveynin onu «gömmesi» gerekir: ebeveyn programı düzeltilir ya da ebeveyn kapatılır; zombi PID 1'e devredilir ve o temizler.
17. Load average neyi gösterir?
uptime ve top'taki üç sayı, son 1, 5 ve 15 dakikada çalışmaya hazır süreçlerin ortalama sayısını gösterir. Linux'ta bu sayıya kesintiye uğratılamayan beklemedeki süreçler de (D durumu, genellikle disk beklemesi) dahildir.
Değer çekirdek sayısıyla (nproc) karşılaştırılır: 4 çekirdekte load 4 tam yük demektir, 16 çekirdekte dörtte bir. Düşük CPU kullanımında yüksek load, giriş-çıkış sorununa işaret eder; bu iostat veya top'taki wa alanıyla kontrol edilir.
Ağ
18. IP adreslerini, yönlendirmeleri ve açık portları nasıl görürsünüz?
Arayüz adresleri ip a, yönlendirme tablosu ip r ile görülür. Eski ifconfig ve net-tools paketindeki netstat birçok dağıtımda varsayılan olarak kurulu değildir.
Dinleyen portlar ve onları açan süreçler ss -tlnp ile görülür: t — TCP, l — yalnızca dinleyenler, n — ada çevirmeden, p — süreç bilgisiyle. UDP için ss -ulnp.
$ sudo ss -tlnp
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=812,fd=6))
LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=640,fd=3))
19. Servis 127.0.0.1:8080 üzerinde dinliyor; dışarıdan bağlanılabilir mi?
Hayır. 127.0.0.1 adresi döngü (loopback) arayüzüdür; yalnızca aynı makineden erişilebilir. Dış bağlantıları kabul etmek için servisin dış arayüzün adresini ya da 0.0.0.0'ı (tüm IPv4 adresleri) dinlemesi gerekir. «Port açık ama dışarıdan çalışmıyor» durumunun yaygın nedeni budur; güvenlik duvarı da bir neden olabilir.
20. Linux bir ana makine adını IP adresine nasıl çevirir?
Kaynakların sırası /etc/nsswitch.conf içindeki hosts: satırıyla belirlenir; genellikle önce /etc/hosts dosyası, sonra DNS. DNS sunucularının adresleri /etc/resolv.conf'dan alınır; systemd-resolved kullanan sistemlerde orada yerel 127.0.0.53 adresi bulunur, gerçek sunucular resolvectl status ile görülür.
Kontrol için dig example.com veya belirli bir sunucuya dig @1.1.1.1 example.com kullanılır. Bir incelik: dig ve nslookup doğrudan DNS'e sorar ve /etc/hosts'u okumaz; getent hosts example.com ise uygulamaların izlediği yolu izler.
21. TCP ile UDP arasındaki fark nedir?
TCP bağlantı kurar (üç yönlü el sıkışma: SYN, SYN-ACK, ACK), teslimat ve sırayı garanti eder, kaybolan paketleri yeniden gönderir. HTTP, SSH ve çoğu veritabanı TCP üzerinde çalışır. UDP bağlantısız ve garantisiz datagramlar gönderir, ama daha düşük gecikmeyle: DNS sorguları, görüntülü aramalar ve oyunlar UDP kullanır.
22. Bir site açılmıyor. Nedeni nasıl ararsınız?
Katman katman, addan uygulamaya doğru ilerleyin:
- Ad çözülüyor mu:
dig site.example, adres beklenenle eşleşiyor mu. - Ana makine erişilebilir mi:
ping(kapalı olabilir),tracerouteveyamtr. - Port açık mı:
nc -zv host 443veyacurl -v https://site.example. - Sunucuda: servis çalışıyor mu (
systemctl status nginx), port dinleniyor mu (ss -tlnp), güvenlik duvarı engelliyor mu (sudo nft list ruleset,sudo ufw status). - Uygulama günlükleri ve servisin
journalctl -uçıktısı.
Mülakatçı için önemli olan, belirli bir araç listesi değil, sistematik sıradır.
23. TIME_WAIT durumu nedir?
TCP bağlantısı kapandıktan sonra onu ilk kapatan taraf, eski bağlantının gecikmiş paketlerinin aynı adres ve port çiftindeki yeni bağlantıya karışmaması için soketi bir süre TIME_WAIT'te tutar. Yoğun yüklü bir sunucu ya da çok sayıda kısa bağlantı açan bir istemci için çok sayıda TIME_WAIT normaldir. Sayısını ss -tan state time-wait | wc -l ile bulabilirsiniz.
24. /etc/hosts ile DNS arasındaki fark nedir ve ilki ne zaman gerekir?
/etc/hosts, tek bir makinede bulunan statik «adres — ad» tablosudur. Standart nsswitch yapılandırmasında DNS'ten önce denetlenir ve test için kullanışlıdır: örneğin DNS kayıtları değişmeden önce bir alan adını yeni sunucuya yönlendirmek. DNS ise dağıtık bir sistemdir ve yanıtları bütün istemciler görür. /etc/hosts'taki bir hata, «benim bilgisayarımda site açılıyor, herkeste açılmıyor» durumunun sık nedenidir.
Sonuç
Linux mülakat soruları üç şeyi ölçer: sistemin modelini anlayıp anlamadığınızı (inode, izinler, süreçler, açılış), tanılama araçlarını bilip bilmediğinizi (ss, dig, journalctl, lsof) ve sorunu adım adım bulabilip bulamadığınızı. Cevaplarınızda komut ve örnek kullanın. Dosya sistemi, izinler ve ağ, kurs içinde uygulamalı olarak ayrıntılı işlenmektedir.
Sık sorulan sorular
Junior DevOps mülakatlarında Linux'tan ne sorulur?
Genellikle temeller: gezinme ve izinler, süreçler ve systemctl, günlük okuma, ip, ss, dig ve curl gibi ağ komutları, bash betiklerinin temelleri. Sık sık «hangi disk dolduruyor, bulun» gibi pratik bir görev verilir.
Komutların bütün bayraklarını ezberlemek gerekir mi?
Hayır; bayrağı man'den kontrol edeceğinizi söylemek kabul görür. Daha önemlisi, hangi aracın hangi sorunu çözdüğünü ve çıktısının ne anlama geldiğini bilmektir.
Mülakatın pratik kısmına nasıl hazırlanırım?
Bir sanal makine kurun ve gerçek görevler çözün: bir web sunucusunu systemd servisi olarak ayarlayın, SSH anahtarıyla girişi yapılandırın, güvenlik duvarı kurun, bir portu dinleyen süreci bulun. Adımlarınızı sesli açıklamak da hazırlığın parçasıdır.
Bu konu “Linux: с нуля до уверенного администрирования” kursunda uygulamalı olarak ayrıntılı işleniyor.
- Как устроена файловая система Linux: от корня до загрузки ядра
- Пользователи, права доступа и sudo: кто и что может делать в системе
- Сеть в Linux: от IP-адреса до сокета и DNS