Stronger_Cracker
- 25 Tem 2022
- 6,403 Mesaj
Aktiflik
Seviye
Deneyim
Burada göreceğiniz komutları biliyor veya kullanıyor olabilirsiniz. Fakat doküman noktasında ne yazık ki türkçe bulmak çok zor oluyor ve okuduğumuz ingilizce paragraftan bildiğimiz birkaç kelime ile tercüme ederek öğrenmeye çalışıyoruz. Bu nedenden dolayı seriyi devam ettirmeyi düşünüyorum. Keyifli okumalar dilerim.
Metin Dosyalarını Görüntüleme ve Düzenleme
cat komutu (dosyaları standart çıktıya birleştirmek amacıyla kullanılır) bir dosyayı okuyup içeriğini terminalde gösterir. Dosya ekrana sığmayacak kadar büyükse, sayfa sayfa görmek için less veya more gibi bir sayfalayıcı (pager) kullanabilirsiniz.
editor komutu bir metin editörü (örneğin Vi veya Nano) başlatır; metin dosyalarını oluşturmanıza, düzenlemenize ve okumanıza olanak tanır. En basit dosyalar bazen doğrudan komut yorumlayıcıdan yönlendirme ile oluşturulabilir: command > file verilen komutun çıktısını file adlı dosyaya yazar (varsa üzerine yazar). command >> file ise aynı mantıkla çalışır; farkı, çıktıyı dosyanın sonuna eklemesidir, üzerine yazmaz.
Dosya ve Dosya İçinde Arama
find directory criteria komutu, directory altındaki dizin ağacında belirtilen criteria (kriterlere) göre dosya arar. En sık kullanılan kriter -name filename’dir; dosyayı adına göre aramanızı sağlar. Dosya adı aramasında "*" gibi joker karakterler de kullanabilirsiniz.
grep expression files komutu, belirtilen files dosyalarının içeriğini tarar ve regular expression (düzenli ifade) ile eşleşen satırları listeler. -r seçeneği eklendiğinde, dizindeki tüm dosyalarda özyinelemeli (recursive) arama yapar. Böylece dosyanın yalnızca içeriğinin bir kısmını biliyorsanız bile o dosyayı bulabilirsiniz.
Süreç Yönetimi
ps aux komutu o an çalışan süreçleri listeler ve PID göstererek onları tanımlamanıza yardımcı olur. Bir sürecin PID’sini bildikten sonra, kill -signal pid komutuyla (sürecin sahibi sizseniz) ona bir sinyal gönderebilirsiniz. Birkaç sinyal vardır; en çok kullanılanlar TERM (sürecin düzgün şekilde sonlanmasını isteme) ve KILL (zorla sonlandırma) dir.
Komut yorumlayıcı, komutun sonuna & konursa programları arka planda da çalıştırabilir. & kullanarak, komut hâlâ çalışıyor olsa bile (arka plan süreci olarak görünmez) kabuğun denetimini hemen geri alırsınız. jobs komutu arka planda çalışan süreçleri listeler; fg %job-number (foreground için) bir işi ön plana getirir. Bir komut ön planda çalışıyorken (normal başlatılmış olsun ya da fg ile ön plana alınmış olsun), Control+Z tuş bileşimi süreci duraklatır ve komut satırının denetimini size geri verir. Ardından süreç bg %job-number (background için) ile arka planda yeniden başlatılabilir.
Yetki Yönetimi
Linux çok kullanıcılı bir sistem olduğu için, dosya ve dizinler üzerinde (Unix’te tüm sistem kaynakları ve cihazlar da bir dosya veya dizinle temsil edilir) yapılabilecek işlemleri sınırlayan bir yetki (izin) sistemi gerekir. Bu mantık tüm Unix benzeri sistemlerde ortaktır.Her dosya veya dizin için üç kullanıcı grubu için ayrı yetkiler tanımlanır:
setuid ve setgid’li Çalıştırılabilirler
Çalıştırılabilir dosyalarla ilgili iki özel yetki vardır: setuid ve setgid (s harfiyle gösterilir). Bu değerler 0 veya 1 ile ifade edildiği için genelde “bit” olarak anılır. Bu iki yetki, herhangi bir kullanıcının programı sırasıyla sahibin veya grubun yetkileriyle çalıştırmasını sağlar. Böylece normalde sahip olmadığınız yetkiler gerektiren işlemlere erişim verilir.
setuid root bir program sürekli süper kullanıcı (root) kimliğiyle çalıştığı için güvenli ve güvenilir olması çok önemlidir. setuid root bir programı kendi seçtiği bir komutu çalıştıracak şekilde ele geçiren bir kullanıcı, root kullanıcısı gibi davranıp sistemde tüm yetkilere sahip olabilir. Penetrasyon testçileri sisteme erişim elde ettiklerinde yetki yükseltmek için bu tür dosyaları sıklıkla ararlar.
Dizinler dosyadan farklı ele alınır. Okuma (r) izni, içeriğin (dosya ve dizinlerin) listesini görmeye izin verir; yazma (w) izni dosya oluşturma ve silmeye; çalıştırma (x) izni ise dizine “girip” içeriğine erişmeye izin verir (örneğin cd ile). Bir dizini okuyamadan geçebilmek (x var, r yok), kullanıcının tam adını bildiği öğelere erişmesine izin verir; adını bilmeden içeriği listeleyerek bulmasına izin vermez.
GÜVENLİK — setgid Dizini ve sticky bit
setgid biti dizinlerde de kullanılır. Bu tür bir dizinde oluşturulan her yeni öğe, normalde olduğu gibi oluşturan kullanıcının ana grubunu değil, üst dizinin sahip grubunu otomatik alır. Bu sayede aynı grubun birkaç kullanıcısı arasında paylaşılan bir dosya ağacında çalışırken ana grubunuzu (newgrp ile) değiştirmeniz gerekmez.
Sticky bit (“t” harfiyle gösterilir) yalnızca dizinlerde anlamlı bir izindir. Özellikle herkesin yazabildiği geçici dizinlerde (örneğin /tmp/) kullanılır: dosya silmeyi kısıtlar; yalnızca dosyanın sahibi veya üst dizinin sahibi silebilir. Bu olmasaydı, /tmp/ içinde herkes başka kullanıcıların dosyalarını silebilirdi.
Dosyayla ilişkili izinleri üç komut yönetir:
Çoğu zaman dosyanın sahibini değiştirirken grubunu da değiştirmek istersiniz. Bunun için chown komutunun özel bir sözdizimi vardır: chown user:group file
İzinler iki şekilde ifade edilir. Sembolik gösterim muhtemelen en kolay anlaşılan ve hatırlanandır. Yukarıda geçen harf sembollerini (u/g/o) kullanır; her kullanıcı kategorisi için izinleri açıkça atayabilir (=), ekleyebilir (+) veya kaldırabilir (-). Örneğin u=rwx,g+rw,o-r sahibe okuma, yazma ve çalıştırma verir; gruba okuma ve yazma ekler; diğerlerinden okumayı kaldırır. Böyle bir komutta ekleme/çıkarma ile değiştirilmeyen izinler olduğu gibi kalır. a (all) harfi üç kategorinin hepsini kapsar; a=rx üçüne de aynı izni (okuma ve çalıştırma, yazma hariç) verir.
(Sekizli) sayısal gösterimde her izin bir değere karşılık gelir: okuma 4, yazma 2, çalıştırma 1. Her izin birleşimi bu üç sayının toplamıyla ifade edilir; her kullanıcı kategorisine (sahip, grup, diğerleri) sırayla bir değer atanır.
Örneğin chmod 754 file şu izinleri verir: sahip için okuma, yazma ve çalıştırma (7 = 4+2+1); grup için okuma ve çalıştırma (5 = 4+1); diğerleri için yalnızca okuma. 0 hiç izin olmadığı anlamına gelir; chmod 600 file sahibe okuma ve yazma verir, diğerlerine hiçbir izin vermez. En sık kullanılan değerler: çalıştırılabilir dosyalar ve dizinler için 755, veri dosyaları için 644.
Özel izinleri (setuid, setgid, sticky) eklemek için aynı mantıkla başa dördüncü bir rakam eklenir: setuid 4, setgid 2, sticky 1. chmod 4754 komutu, az önce anlatılan izinlere ek olarak setuid bitini de ekler.
Sekizli gösterimde tüm izinler tek seferde atanır; sadece “gruba okuma ekle” gibi tek bir ekleme yapılamaz, mevcut izinleri düşünüp yeni sayıyı kendiniz hesaplamanız gerekir.
Sekizli gösterim umask komutunda da kullanılır; bu komut yeni oluşturulan dosyaların izinlerini kısıtlar. Bir uygulama dosya oluşturduğunda örnek bir izin atar, sistem ise umask ile tanımlanan izinleri otomatik olarak kaldırır. Kabukta umask yazdığınızda 0022 gibi bir maske görürsünüz. Bu, sistemin her zaman kaldırdığı izinlerin sekizli gösterimidir (bu örnekte grup ve diğerleri için yazma).
umask komutuna yeni bir sekizli değer verirseniz maske değişir. Kabuk başlangıç dosyasında (örneğin ~/.bash_profile) kullanılırsa, oturumlarınız için varsayılan maskeyi kalıcı olarak değiştirir.
TIP Özyinelemeli (recursive) İşlem
Bazen tüm bir dosya ağacındaki izinleri değiştirmek gerekir. Yukarıdaki komutların hepsinde alt dizinlerde özyinelemeli işlem yapan -R seçeneği vardır.
Dizin ile dosya ayrımı, özyinelemeli işlemlerde bazen sorun çıkarır. Bu yüzden izinlerin sembolik gösteriminde büyük X harfi kullanılır. X, yalnızca dizinlere uygulanan (bu izni olmayan dosyalara uygulanmayan) bir “çalıştırma” iznidir. Böylece chmod -R a+X directory komutu, en az bir kullanıcı kategorisinde (yalnızca sahip olsa bile) zaten çalıştırma izni olan tüm alt dizin ve dosyalar için, tüm kategorilere (a) çalıştırma iznini ekler; diğer dosyaların izinleri değişmez.
Sistem Bilgisi ve Loglar
free komutu bellek (RAM) kullanımı hakkında bilgi verir; df (disk free) ise dosya sistemine bağlı her diskte kalan alanı gösterir. -h (human readable) seçeneği boyutları daha okunabilir birimlere (genelde mebibyte veya gibibyte) çevirir. Benzer şekilde free komutu -m ve -g seçeneklerini destekler ve veriyi sırasıyla mebibyte veya gibibyte cinsinden gösterir.
id komutu, oturumu çalıştıran kullanıcının kimliğini ve üyesi olduğu grupların listesini gösterir. Bazı dosya veya cihazlara erişim yalnızca grup üyelerine açık olabileceği için, hangi gruplara üye olduğunuzu kontrol etmek işinize yarayabilir.
uname -a komutu tek satırda çekirdek adını (Linux), makine adını (hostname), çekirdek sürümünü (release), çekirdek versiyonunu, makine türünü (x86_64 gibi bir mimari dizgisi) ve işletim sisteminin adını (GNU/Linux) verir. Bu komutun çıktısı, kullanılan çekirdeği ve donanım platformunu net biçimde tanımladığı için genelde hata raporlarına eklenmelidir.
Bu komutlar anlık bilgi verir; bilgisayarda ne olduğunu anlamak için çoğu zaman loglara bakmak gerekir. Çekirdek, önemli bir olay olduğunda (yeni USB cihaz takılması, başarısız disk işlemi, açılışta donanım tespiti vb.) mesajlarını bir ring buffer’da tutar. Bu çekirdek loglarına dmesg komutuyla erişilir.
systemd’in journal’ı da birden fazla logu (servislerin stdout/stderr çıktıları, syslog mesajları, çekirdek logları) saklar ve journalctl ile sorgulamayı kolaylaştırır. Argümansız kullanıldığında tüm mevcut logları kronolojik sırada listeler. -r seçeneği sırayı tersine çevirir; en yeni mesajlar önce görünür. -f seçeneği veritabanına eklenen yeni kayıtları sürekli yazdırır. -u seçeneği mesajları belirli bir systemd birimiyle sınırlar (ör: journalctl -u ssh.service).
Donanımı Keşfi
Çekirdek, algılanan donanıma ilişkin birçok bilgiyi /proc/ ve /sys/ sanal dosya sistemleri üzerinden dışa aktarır. Bu bilgileri özetleyen çeşitli araçlar vardır. Bunlardan lspci (pciutils paketinde) PCI aygıtlarını, lsusb (usbutils paketinde) USB aygıtlarını, lspcmcia (pcmciautils paketinde) PCMCIA kartlarını listeler. Bu araçlar, aygıtın tam modelini tespit etmek için çok kullanışlıdır. Bu tespit, internette daha hedefli arama yapmanızı ve böylece daha uygun dokümanlara ulaşmanızı sağlar. pciutils ve usbutils paketleri Kali’nin temel kurulumunda zaten vardır; pcmciautils için ise apt update ardından apt install pcmciautils ile kurulum gerekir. Paket kurulumu ve yönetimi “Temel Paket Etkileşimi” bölümünde ele alınacaktır.
Bu programlar -v seçeneğiyle çok daha ayrıntılı (genelde gereksiz) bilgi listeler. Son olarak lsdev komutu (procinfo paketinde) cihazların kullandığı iletişim kaynaklarını listeler.
lshw programı yukarıdakilerin bir birleşimidir; tespit edilen donanımı hiyerarşik biçimde uzun bir açıklamayla gösterir. Donanım desteğiyle ilgili bir sorun bildirirken tam çıktısını rapora eklemeniz önerilir.
Okuduğunuz için teşekkürler.
Metin Dosyalarını Görüntüleme ve Düzenleme
cat komutu (dosyaları standart çıktıya birleştirmek amacıyla kullanılır) bir dosyayı okuyup içeriğini terminalde gösterir. Dosya ekrana sığmayacak kadar büyükse, sayfa sayfa görmek için less veya more gibi bir sayfalayıcı (pager) kullanabilirsiniz.
editor komutu bir metin editörü (örneğin Vi veya Nano) başlatır; metin dosyalarını oluşturmanıza, düzenlemenize ve okumanıza olanak tanır. En basit dosyalar bazen doğrudan komut yorumlayıcıdan yönlendirme ile oluşturulabilir: command > file verilen komutun çıktısını file adlı dosyaya yazar (varsa üzerine yazar). command >> file ise aynı mantıkla çalışır; farkı, çıktıyı dosyanın sonuna eklemesidir, üzerine yazmaz.
Kod:
$ echo "Kali rules!" > kali-rules.txt
$ cat kali-rules.txt
Kali rules!
$ echo "Kali is the best!" >> kali-rules.txt
$ cat kali-rules.txt
Kali rules!
Kali is the best!
Dosya ve Dosya İçinde Arama
find directory criteria komutu, directory altındaki dizin ağacında belirtilen criteria (kriterlere) göre dosya arar. En sık kullanılan kriter -name filename’dir; dosyayı adına göre aramanızı sağlar. Dosya adı aramasında "*" gibi joker karakterler de kullanabilirsiniz.
Kod:
$ find /etc -name hosts
/etc/hosts
/etc/avahi/hosts
$ find /etc -name "hosts*"
/etc/hosts
/etc/hosts.allow
/etc/hosts.deny
/etc/avahi/hosts
grep expression files komutu, belirtilen files dosyalarının içeriğini tarar ve regular expression (düzenli ifade) ile eşleşen satırları listeler. -r seçeneği eklendiğinde, dizindeki tüm dosyalarda özyinelemeli (recursive) arama yapar. Böylece dosyanın yalnızca içeriğinin bir kısmını biliyorsanız bile o dosyayı bulabilirsiniz.
Süreç Yönetimi
ps aux komutu o an çalışan süreçleri listeler ve PID göstererek onları tanımlamanıza yardımcı olur. Bir sürecin PID’sini bildikten sonra, kill -signal pid komutuyla (sürecin sahibi sizseniz) ona bir sinyal gönderebilirsiniz. Birkaç sinyal vardır; en çok kullanılanlar TERM (sürecin düzgün şekilde sonlanmasını isteme) ve KILL (zorla sonlandırma) dir.
Komut yorumlayıcı, komutun sonuna & konursa programları arka planda da çalıştırabilir. & kullanarak, komut hâlâ çalışıyor olsa bile (arka plan süreci olarak görünmez) kabuğun denetimini hemen geri alırsınız. jobs komutu arka planda çalışan süreçleri listeler; fg %job-number (foreground için) bir işi ön plana getirir. Bir komut ön planda çalışıyorken (normal başlatılmış olsun ya da fg ile ön plana alınmış olsun), Control+Z tuş bileşimi süreci duraklatır ve komut satırının denetimini size geri verir. Ardından süreç bg %job-number (background için) ile arka planda yeniden başlatılabilir.
Kod:
# Süreç listeleme (ps aux)
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 16832 2108 ? Ss 09:15 0:01 /sbin/init
root 412 0.0 0.5 45672 5124 ? Ss 09:15 0:00 /usr/sbin/sshd
kali 1247 0.1 2.1 245680 21520 pts/0 S+ 09:22 0:00 nano dosya.txt
kali 1258 0.0 0.8 38244 8124 pts/0 R+ 09:23 0:00 ps aux
# Süreci sinyal ile sonlandırma (kill -TERM / kill -KILL)
$ kill -TERM 1247
$ kill -KILL 1247
# Arka planda çalıştırma (&) ve jobs ile listeleme
$ sleep 300 &
[1] 1265
$ jobs
[1]+ Running sleep 300 &
# Ön plana alma (fg), duraklatma (Control+Z), arka plana atma (bg)
$ fg %1
sleep 300
^Z
[1]+ Stopped sleep 300
$ bg %1
[1]+ sleep 300 &
$ jobs
[1]+ Running sleep 300 &
Yetki Yönetimi
Linux çok kullanıcılı bir sistem olduğu için, dosya ve dizinler üzerinde (Unix’te tüm sistem kaynakları ve cihazlar da bir dosya veya dizinle temsil edilir) yapılabilecek işlemleri sınırlayan bir yetki (izin) sistemi gerekir. Bu mantık tüm Unix benzeri sistemlerde ortaktır.Her dosya veya dizin için üç kullanıcı grubu için ayrı yetkiler tanımlanır:
- Sahibi (u – User): Dosyanın sahibi.
- Sahip grubu (g – Group): Grubun tüm üyeleri.
- Diğerleri (o – Other): Ne sahip ne de grupta olan kullanıcılar.
- Okuma (r – Read).
- Yazma (w – Write): İçeriği değiştirme.
- Çalıştırma (x – eXecute).
Kod:
# Dosya/dizin izinlerini görüntüleme (ls -l)
$ ls -l script.sh rapor.txt
-rwxr-xr-x 1 kali kali 256 Feb 8 10:15 script.sh
-rw-r--r-- 1 kali kali 128 Feb 8 10:12 rapor.txt
# İzinleri değiştirme: sahibe yazma ekleme (chmod u+w)
$ chmod u+w rapor.txt
$ ls -l rapor.txt
-rw-rw-r-- 1 kali kali 128 Feb 8 10:12 rapor.txt
# Gruba ve diğerlerine çalıştırma kaldırma (chmod g-x,o-x)
$ chmod g-x,o-x script.sh
$ ls -l script.sh
-rwxr-xr-- 1 kali kali 256 Feb 8 10:15 script.sh
# Sayısal mod: 755 = rwxr-xr-x (u=7, g=5, o=5)
$ chmod 755 script.sh
$ ls -l script.sh
-rwxr-xr-x 1 kali kali 256 Feb 8 10:15 script.sh
# Dizin için: diğerlerine giriş yok (chmod o-rx)
$ mkdir private
$ chmod o-rx private
$ ls -ld private
drwxr-x--- 2 kali kali 4096 Feb 8 10:20 private
setuid ve setgid’li Çalıştırılabilirler
Çalıştırılabilir dosyalarla ilgili iki özel yetki vardır: setuid ve setgid (s harfiyle gösterilir). Bu değerler 0 veya 1 ile ifade edildiği için genelde “bit” olarak anılır. Bu iki yetki, herhangi bir kullanıcının programı sırasıyla sahibin veya grubun yetkileriyle çalıştırmasını sağlar. Böylece normalde sahip olmadığınız yetkiler gerektiren işlemlere erişim verilir.
setuid root bir program sürekli süper kullanıcı (root) kimliğiyle çalıştığı için güvenli ve güvenilir olması çok önemlidir. setuid root bir programı kendi seçtiği bir komutu çalıştıracak şekilde ele geçiren bir kullanıcı, root kullanıcısı gibi davranıp sistemde tüm yetkilere sahip olabilir. Penetrasyon testçileri sisteme erişim elde ettiklerinde yetki yükseltmek için bu tür dosyaları sıklıkla ararlar.
Dizinler dosyadan farklı ele alınır. Okuma (r) izni, içeriğin (dosya ve dizinlerin) listesini görmeye izin verir; yazma (w) izni dosya oluşturma ve silmeye; çalıştırma (x) izni ise dizine “girip” içeriğine erişmeye izin verir (örneğin cd ile). Bir dizini okuyamadan geçebilmek (x var, r yok), kullanıcının tam adını bildiği öğelere erişmesine izin verir; adını bilmeden içeriği listeleyerek bulmasına izin vermez.
Kod:
# setuid/setgid'li çalıştırılabilirleri bulma (find -perm)
$ find /usr/bin -perm -4000 2>/dev/null | head -5
/usr/bin/passwd
/usr/bin/sudo
/usr/bin/sudoedit
/usr/bin/pkexec
/usr/bin/ssh-agent
$ find /usr/bin -perm -2000 2>/dev/null | head -3
/usr/bin/wall
/usr/bin/write
/usr/bin/ssh-keysign
# ls -l ile setuid (s) ve setgid (s) görünümü
$ ls -l /usr/bin/passwd /usr/bin/wall
-rwsr-xr-x 1 root root 63960 Jan 11 10:23 /usr/bin/passwd
-rwxr-sr-x 1 root tty 23376 Jan 11 09:15 /usr/bin/wall
# Dizin: r = liste, x = geçiş (cd). r olmadan x = adı bilinen öğeye erişim
$ mkdir -p testdir/alt
$ touch testdir/alt/gizli.txt
$ chmod 300 testdir
$ ls testdir
ls: cannot open directory 'testdir': Permission denied
$ cat testdir/alt/gizli.txt
içerik
$ chmod 100 testdir
$ ls testdir
ls: cannot open directory 'testdir': Permission denied
$ cd testdir/alt
$ pwd
/home/kali/testdir/alt
GÜVENLİK — setgid Dizini ve sticky bit
setgid biti dizinlerde de kullanılır. Bu tür bir dizinde oluşturulan her yeni öğe, normalde olduğu gibi oluşturan kullanıcının ana grubunu değil, üst dizinin sahip grubunu otomatik alır. Bu sayede aynı grubun birkaç kullanıcısı arasında paylaşılan bir dosya ağacında çalışırken ana grubunuzu (newgrp ile) değiştirmeniz gerekmez.
Sticky bit (“t” harfiyle gösterilir) yalnızca dizinlerde anlamlı bir izindir. Özellikle herkesin yazabildiği geçici dizinlerde (örneğin /tmp/) kullanılır: dosya silmeyi kısıtlar; yalnızca dosyanın sahibi veya üst dizinin sahibi silebilir. Bu olmasaydı, /tmp/ içinde herkes başka kullanıcıların dosyalarını silebilirdi.
Dosyayla ilişkili izinleri üç komut yönetir:
- chown user file - dosyanın sahibini değiştirir.
- chgrp group file - dosyanın sahip grubunu değiştirir.
- chmod rights file - dosyanın izinlerini (okuma/yazma/çalıştırma) değiştirir.
Çoğu zaman dosyanın sahibini değiştirirken grubunu da değiştirmek istersiniz. Bunun için chown komutunun özel bir sözdizimi vardır: chown user:group file
İzinler iki şekilde ifade edilir. Sembolik gösterim muhtemelen en kolay anlaşılan ve hatırlanandır. Yukarıda geçen harf sembollerini (u/g/o) kullanır; her kullanıcı kategorisi için izinleri açıkça atayabilir (=), ekleyebilir (+) veya kaldırabilir (-). Örneğin u=rwx,g+rw,o-r sahibe okuma, yazma ve çalıştırma verir; gruba okuma ve yazma ekler; diğerlerinden okumayı kaldırır. Böyle bir komutta ekleme/çıkarma ile değiştirilmeyen izinler olduğu gibi kalır. a (all) harfi üç kategorinin hepsini kapsar; a=rx üçüne de aynı izni (okuma ve çalıştırma, yazma hariç) verir.
(Sekizli) sayısal gösterimde her izin bir değere karşılık gelir: okuma 4, yazma 2, çalıştırma 1. Her izin birleşimi bu üç sayının toplamıyla ifade edilir; her kullanıcı kategorisine (sahip, grup, diğerleri) sırayla bir değer atanır.
Örneğin chmod 754 file şu izinleri verir: sahip için okuma, yazma ve çalıştırma (7 = 4+2+1); grup için okuma ve çalıştırma (5 = 4+1); diğerleri için yalnızca okuma. 0 hiç izin olmadığı anlamına gelir; chmod 600 file sahibe okuma ve yazma verir, diğerlerine hiçbir izin vermez. En sık kullanılan değerler: çalıştırılabilir dosyalar ve dizinler için 755, veri dosyaları için 644.
Özel izinleri (setuid, setgid, sticky) eklemek için aynı mantıkla başa dördüncü bir rakam eklenir: setuid 4, setgid 2, sticky 1. chmod 4754 komutu, az önce anlatılan izinlere ek olarak setuid bitini de ekler.
Sekizli gösterimde tüm izinler tek seferde atanır; sadece “gruba okuma ekle” gibi tek bir ekleme yapılamaz, mevcut izinleri düşünüp yeni sayıyı kendiniz hesaplamanız gerekir.
Sekizli gösterim umask komutunda da kullanılır; bu komut yeni oluşturulan dosyaların izinlerini kısıtlar. Bir uygulama dosya oluşturduğunda örnek bir izin atar, sistem ise umask ile tanımlanan izinleri otomatik olarak kaldırır. Kabukta umask yazdığınızda 0022 gibi bir maske görürsünüz. Bu, sistemin her zaman kaldırdığı izinlerin sekizli gösterimidir (bu örnekte grup ve diğerleri için yazma).
umask komutuna yeni bir sekizli değer verirseniz maske değişir. Kabuk başlangıç dosyasında (örneğin ~/.bash_profile) kullanılırsa, oturumlarınız için varsayılan maskeyi kalıcı olarak değiştirir.
Kod:
# Sahip ve grubu birlikte değiştirme (chown user:group)
$ touch dosya.txt
$ ls -l dosya.txt
-rw-r--r-- 1 kali kali 0 Feb 8 11:00 dosya.txt
$ chown root:root dosya.txt
# (root gerekir; örnek olarak)
$ ls -l dosya.txt
-rw-r--r-- 1 root root 0 Feb 8 11:00 dosya.txt
# Sembolik chmod: u=rwx,g+rw,o-r
$ chmod u=rwx,g+rw,o-r script.sh
$ ls -l script.sh
-rwxrw-r-- 1 kali kali 256 Feb 8 11:02 script.sh
# Sembolik: a=rx (üç kategoriye aynı izin)
$ chmod a=rx script.sh
$ ls -l script.sh
-r-xr-xr-x 1 kali kali 256 Feb 8 11:02 script.sh
# Sekizli chmod: 754, 600, 755, 644
$ chmod 754 script.sh
$ ls -l script.sh
-rwxr-xr-- 1 kali kali 256 Feb 8 11:02 script.sh
$ chmod 600 gizli.conf
$ ls -l gizli.conf
-rw------- 1 kali kali 128 Feb 8 11:03 gizli.conf
$ chmod 755 script.sh
$ chmod 644 rapor.txt
# Dördüncü rakam: setuid (4), setgid (2), sticky (1)
$ chmod 4754 script.sh
$ ls -l script.sh
-rwsr-xr-- 1 kali kali 256 Feb 8 11:02 script.sh
$ chmod 1777 /tmp/paylasim
$ ls -ld /tmp/paylasim
drwxrwxrwt 2 kali kali 4096 Feb 8 11:05 /tmp/paylasim
# umask: mevcut maske ve yeni dosya izinleri
$ umask
0022
$ touch yeni.txt
$ mkdir yeni_dir
$ ls -l yeni.txt
-rw-r--r-- 1 kali kali 0 Feb 8 11:10 yeni.txt
$ ls -ld yeni_dir
drwxr-xr-x 2 kali kali 4096 Feb 8 11:10 yeni_dir
$ umask 0077
$ touch gizli.txt
$ ls -l gizli.txt
-rw------- 1 kali kali 0 Feb 8 11:11 gizli.txt
TIP Özyinelemeli (recursive) İşlem
Bazen tüm bir dosya ağacındaki izinleri değiştirmek gerekir. Yukarıdaki komutların hepsinde alt dizinlerde özyinelemeli işlem yapan -R seçeneği vardır.
Dizin ile dosya ayrımı, özyinelemeli işlemlerde bazen sorun çıkarır. Bu yüzden izinlerin sembolik gösteriminde büyük X harfi kullanılır. X, yalnızca dizinlere uygulanan (bu izni olmayan dosyalara uygulanmayan) bir “çalıştırma” iznidir. Böylece chmod -R a+X directory komutu, en az bir kullanıcı kategorisinde (yalnızca sahip olsa bile) zaten çalıştırma izni olan tüm alt dizin ve dosyalar için, tüm kategorilere (a) çalıştırma iznini ekler; diğer dosyaların izinleri değişmez.
Sistem Bilgisi ve Loglar
free komutu bellek (RAM) kullanımı hakkında bilgi verir; df (disk free) ise dosya sistemine bağlı her diskte kalan alanı gösterir. -h (human readable) seçeneği boyutları daha okunabilir birimlere (genelde mebibyte veya gibibyte) çevirir. Benzer şekilde free komutu -m ve -g seçeneklerini destekler ve veriyi sırasıyla mebibyte veya gibibyte cinsinden gösterir.
Kod:
$ free
total used free shared buff/cache available
Mem: 2052944 661232 621208 10520 770504 1359916
Swap: 0 0 0
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
udev 1014584 0 1014584 0% /dev
tmpfs 205296 8940 196356 5% /run
/dev/vda1 30830588 11168116 18073328 39% /
tmpfs 1026472 456 1026016 1% /dev/shm
tmpfs 5120 0 5120 0% /run/lock
tmpfs 1026472 0 1026472 0% /sys/fs/cgroup
tmpfs 205296 36 205260 1% /run/user/132
tmpfs 205296 24 205272 1% /run/user/0
id komutu, oturumu çalıştıran kullanıcının kimliğini ve üyesi olduğu grupların listesini gösterir. Bazı dosya veya cihazlara erişim yalnızca grup üyelerine açık olabileceği için, hangi gruplara üye olduğunuzu kontrol etmek işinize yarayabilir.
Kod:
$ id
uid=1000(kali) gid=1000(kali) groups=1000(kali),27(sudo)
uname -a komutu tek satırda çekirdek adını (Linux), makine adını (hostname), çekirdek sürümünü (release), çekirdek versiyonunu, makine türünü (x86_64 gibi bir mimari dizgisi) ve işletim sisteminin adını (GNU/Linux) verir. Bu komutun çıktısı, kullanılan çekirdeği ve donanım platformunu net biçimde tanımladığı için genelde hata raporlarına eklenmelidir.
Kod:
$ uname -a
Linux kali 5.8.0-kali3-amd64 #1 SMP Debian 5.8.14-1kali1 (2020-10-13) x86_64 GNU/Linux
Bu komutlar anlık bilgi verir; bilgisayarda ne olduğunu anlamak için çoğu zaman loglara bakmak gerekir. Çekirdek, önemli bir olay olduğunda (yeni USB cihaz takılması, başarısız disk işlemi, açılışta donanım tespiti vb.) mesajlarını bir ring buffer’da tutar. Bu çekirdek loglarına dmesg komutuyla erişilir.
systemd’in journal’ı da birden fazla logu (servislerin stdout/stderr çıktıları, syslog mesajları, çekirdek logları) saklar ve journalctl ile sorgulamayı kolaylaştırır. Argümansız kullanıldığında tüm mevcut logları kronolojik sırada listeler. -r seçeneği sırayı tersine çevirir; en yeni mesajlar önce görünür. -f seçeneği veritabanına eklenen yeni kayıtları sürekli yazdırır. -u seçeneği mesajları belirli bir systemd birimiyle sınırlar (ör: journalctl -u ssh.service).
Donanımı Keşfi
Çekirdek, algılanan donanıma ilişkin birçok bilgiyi /proc/ ve /sys/ sanal dosya sistemleri üzerinden dışa aktarır. Bu bilgileri özetleyen çeşitli araçlar vardır. Bunlardan lspci (pciutils paketinde) PCI aygıtlarını, lsusb (usbutils paketinde) USB aygıtlarını, lspcmcia (pcmciautils paketinde) PCMCIA kartlarını listeler. Bu araçlar, aygıtın tam modelini tespit etmek için çok kullanışlıdır. Bu tespit, internette daha hedefli arama yapmanızı ve böylece daha uygun dokümanlara ulaşmanızı sağlar. pciutils ve usbutils paketleri Kali’nin temel kurulumunda zaten vardır; pcmciautils için ise apt update ardından apt install pcmciautils ile kurulum gerekir. Paket kurulumu ve yönetimi “Temel Paket Etkileşimi” bölümünde ele alınacaktır.
Kod:
# PCI aygıtlarını listeleme (lspci)
$ lspci
[...]
00:02.1 Display controller: Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller (rev 03)
00:1c.0 PCI bridge: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 1 (rev 03)
00:1d.0 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 (rev 03)
[...]
01:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5751 Gigabit Ethernet PCI Express (rev 01)
02:03.0 Network controller: Intel Corporation PRO/Wireless 2200BG Network Connection (rev 05)
# USB aygıtlarını listeleme (lsusb)
$ lsusb
Bus 005 Device 004: ID 413c:a005 Dell Computer Corp.
Bus 005 Device 008: ID 413c:9001 Dell Computer Corp.
Bus 005 Device 007: ID 045e:00dd Microsoft Corp.
Bus 005 Device 006: ID 046d:c03d Logitech, Inc.
[...]
Bus 002 Device 004: ID 413c:8103 Dell Computer Corp. Wireless 350 Bluetooth
Bu programlar -v seçeneğiyle çok daha ayrıntılı (genelde gereksiz) bilgi listeler. Son olarak lsdev komutu (procinfo paketinde) cihazların kullandığı iletişim kaynaklarını listeler.
lshw programı yukarıdakilerin bir birleşimidir; tespit edilen donanımı hiyerarşik biçimde uzun bir açıklamayla gösterir. Donanım desteğiyle ilgili bir sorun bildirirken tam çıktısını rapora eklemeniz önerilir.
Okuduğunuz için teşekkürler.
