🚀 Linux Öğreniyorum Serisi 3: Dosya İzinleri ve Özel İzinler 🚀

Linux sistemlerinde dosya izinlerinin güvenliği nasıl sağladığını hiç merak ettiniz mi? 👀 Bu seride, dosya izinleri ve özellikle setuid, setgid ve sticky bit gibi özel izinlerle, iş birliğini nasıl güçlendirebileceğinizi ve güvenliği nasıl artırabileceğinizi keşfedeceğiz.

🔍 Özellikle ortak çalışma alanlarında bu özel izinlerin doğru uygulanması, dosya güvenliğini korurken ekip çalışmasını kolaylaştırıyor. 👥 Dosya sahipliği, grup erişimi ve diğer kullanıcı izinleri üzerine detaylı bilgiler ve pratik örnekler bu yazıda sizleri bekliyor!

📖 Yeni makaleyi okumayı unutmayın ve Linux dünyasında kendinizi geliştirin!

#Linux #SistemYönetimi #Dosyaİzinleri #Güvenlik #İşBirliği #setuid #setgid #stickybit #LinuxÖğreniyorum #Teknoloji #BilgiPaylaştıkçaÇoğalır 🔐💻

Merhabalar,

“Linux Öğreniyorum” serimize devam ediyoruz. Önceki yazımızda Linux işletim sisteminde izinlerden bahsettim.

Önceki yazıların linklerini aşağıda paylaşıyorum.

Linux Öğreniyorum: Dizin Hiyerarşisi ve Başlangıç Dosyaları

Linux Öğreniyorum: İzinler (Permissions)

 

Linux sistemlerindeki dosya izinleri, kullanıcılar arası güvenliği sağlama ve iş birliğini kolaylaştırma açısından büyük önem taşır. Bu yazıda, dosya ve dizin izinlerinin yanı sıra, setuid, setgid, ve sticky bit gibi özel izinlerin nasıl kullanıldığını ve bunların sağladığı avantajları ele alıyoruz. Sahip, grup ve diğer kullanıcıların erişim düzeylerini düzenleyerek, Linux ortamında verimli ve güvenli bir çalışma alanı yaratmanın ipuçlarına değineceğiz.

 

Linux sistemimizde kullanıcı bilgilerini hatırlayalım.

 

[rocky@instance-20241019-1038 ~]$ su – asiye

Password:

Last login: Mon Oct 28 19:36:16 UTC 2024 on pts/0

[asiye@instance-20241019-1038 ~]$

[asiye@instance-20241019-1038 ~]$

[asiye@instance-20241019-1038 ~]$ pwd

/home/asiye

[asiye@instance-20241019-1038 ~]$ ls -ld

drwx-wx—. 8 asiye asiye 4096 Oct 28 19:38 .

[asiye@instance-20241019-1038 ~]$ tail -3 /etc/passwd

asiye:x:1001:1001::/home/asiye:/bin/bash

sarav:x:1002:1002::/home/sarav:/bin/bash

yigit:x:1003:1003::/home/yigit:/bin/bash

[asiye@instance-20241019-1038 ~]$ tail -3 /etc/group

asiye:x:1001:sarav

sarav:x:1002:

yigit:x:1003:

[asiye@instance-20241019-1038 ~]$ pwd

/home/asiye

[asiye@instance-20241019-1038 ~]$ ls -ld /home/asiye

drwx-wx—. 8 asiye asiye 4096 Oct 28 19:38 /home/asiye

[asiye@instance-20241019-1038 ~]$

 

Önceki makalede “sahip: owner” ve “grup: group” tanımlamalarından bahsettim. Ne sahip ne de grup içinde olmayan kullanıcılar, “other” yani diğer olarak ifade edilir. Dikkat ederseniz, /home/asiye dizininde “diğer” için hiç bir izin verilmemiş.

[rocky@instance-20241019-1038 ~]$ su – yigit

Password:

Last login: Sun Nov 10 08:26:31 UTC 2024 on pts/0

[yigit@instance-20241019-1038 ~]$ cd /home/asiye

-bash: cd: /home/asiye: Permission denied

[yigit@instance-20241019-1038 ~]$ exit

logout

[rocky@instance-20241019-1038 ~]$ su – asiye

Password:

Last login: Sun Nov 10 08:27:11 UTC 2024 on pts/0

[asiye@instance-20241019-1038 ~]$ ls -ld /home/asiye

drwx-wx—. 8 asiye asiye 4096 Oct 28 19:38 /home/asiye

[asiye@instance-20241019-1038 ~]$ chmod o+rx /home/asiye

[asiye@instance-20241019-1038 ~]$ ls -ld /home/asiye

drwx-wxr-x. 8 asiye asiye 4096 Oct 28 19:38 /home/asiye

[asiye@instance-20241019-1038 ~]$ exit

logout

[rocky@instance-20241019-1038 ~]$ su – yigit

Password:

Last login: Sun Nov 10 08:27:38 UTC 2024 on pts/0

[yigit@instance-20241019-1038 ~]$ cd /home/asiye

[yigit@instance-20241019-1038 asiye]$ ls -la

total 24

drwx-wxr-x. 8 asiye asiye 4096 Oct 28 19:38 .

drwxr-xr-x. 6 root  root    58 Oct 28 15:20 ..

-rw——-. 1 asiye asiye 2645 Nov 10 08:29 .bash_history

-rw-r–r–. 1 asiye asiye   64 Oct 19 09:00 .bash_logout

-rw-r–r–. 1 asiye asiye  187 Oct 19 09:09 .bash_profile

-rw-r–r–. 1 asiye asiye  510 Oct 19 09:21 .bashrc

drwxr-xr-x. 4 asiye asiye   37 Oct 19 08:13 belgeler

drwxr-xr-x. 2 asiye asiye    6 Oct 28 15:22 dizin1

drwx——. 2 asiye asiye    6 Oct 28 16:49 dizin2

-rw-r–r–. 1 asiye asiye    0 Oct 28 15:22 file1.txt

-rw——-. 1 asiye asiye    0 Oct 28 16:49 file2.txt

-rw-r–r–. 1 asiye asiye  342 Nov 10 08:29 logout.txt

drwxr-xr-x. 3 asiye asiye   20 Oct 19 08:14 projeler

drwxr-xr-x. 2 asiye asiye   23 Oct 19 08:16 resimler

-rw-r–r–. 1 sarav sarav    0 Oct 28 19:38 saravtestfile2.txt

drwxr-xr-x. 2 asiye asiye   24 Oct 19 08:50 test_dizin

[yigit@instance-20241019-1038 asiye]$

 

Yukardaki komutlarla neler yaptık?

Öncelikle yigit kullanıcısı olarak asiye dizinine erişim denemesi yaptık fakat “Permission denied” hatası aldık. Bu, other kullanıcıların (asiye grubuna dahil olmayanların) dizine erişim yetkisi olmadığını gösteriyordu.

Daha sonra asiye kullanıcısına geçiş yaparak, dizinin izinlerini chmod o+rx /home/asiye komutuyla güncelledik ve “other” kullanıcılar için okuma (r) ve çalıştırma (x) izni ekledik. İzinleri tekrar kontrol ettiğimizde drwx-wxr-x olarak güncellenmiş olduğunu gördük. Bu işlem, other kategorisindeki kullanıcıların dizine erişmesini sağladı.

Son olarak yigit kullanıcısına geri dönerek cd /home/asiye komutunu çalıştırdık ve dizine başarıyla erişim sağladık. ls -la komutuyla dizin içindeki dosya ve alt dizinlerin izinlerini listeleyerek erişim haklarını inceledik.

Dosyalarımızdaki değişiklikleri aşağıdaki gibi geri alalım.

 

[rocky@instance-20241019-1038 ~]$ su – asiye

Password:

Last login: Sun Nov 10 08:40:44 UTC 2024 on pts/0

[asiye@instance-20241019-1038 ~]$ whoami

asiye

[asiye@instance-20241019-1038 ~]$ ls -ld /home/asiye

drwxr-x—. 8 asiye asiye 4096 Nov 10 08:42 /home/asiye

[asiye@instance-20241019-1038 ~]$ tail -3 /etc/group

asiye:x:1001:

sarav:x:1002:

yigit:x:1003:

[asiye@instance-20241019-1038 ~]$

 

Setuid izninin ne olduğunu anlamaya çalışalım.

setuid (Set User ID) Örneği

setuid, dosyanın sahibi olmayan bir kullanıcının dosyayı çalıştırırken dosya sahibinin yetkilerini geçici olarak kazanmasını sağlar.

Örnek: setuid ile /usr/bin/passwd Komutu

passwd komutu, kullanıcıların kendi şifrelerini değiştirmelerini sağlar. Bu işlem root yetkisi gerektirir; ancak setuid sayesinde kullanıcılar bu komutu geçici olarak root yetkisiyle çalıştırabilir.

[asiye@instance-20241019-1038 ~]$ ls -l /usr/bin/passwd

-rwsr-xr-x. 1 root root 32656 May 14  2022 /usr/bin/passwd

[asiye@instance-20241019-1038 ~]$

 

passwd komutunun izinlerindeki s, setuid iznini gösterir. asiye, sarav veya yigit bu komutu çalıştırarak root yetkisine sahip olabilir ve kendi şifrelerini değiştirebilirler. Aksi halde bu kullanıcılar “passwd” komutunu çalıştıramaz. Çünkü bu komut, işlemlerini gerçekleştirmek için  root yetkilerine ihtiyaç duyar.

passwd komutu:

  • Kullanıcıların kendi şifrelerini değiştirmelerine olanak tanır.
  • Ancak şifre değiştirme işlemi, passwd komutunun /etc/shadow dosyasına yazmasını gerektirir ve bu dosya yalnızca root tarafından yazılabilir.

Eğer setuid etkin olmasaydı:

  • Kullanıcılar passwd komutunu çalıştıramaz veya kendi şifrelerini değiştiremezdi, çünkü normal kullanıcılar root izinlerine sahip olmadan /etc/shadow dosyasına erişemezlerdi.

setuid sayesinde kullanıcılar, belirli komutları dosya sahibinin (örneğin, root’un) yetkileriyle geçici olarak çalıştırabilir ve bu komutlar gerekli işlevlerini yerine getirebilir.

setuid potansiyel olarak güvenlik açığı yaratabilir. Yanlış veya dikkatsiz kullanıldığında, setuid bayrağı kötü niyetli kullanıcıların sistemde yüksek yetkilere erişmesine neden olabilir. Ancak, doğru ayarlandığında ve kontrollü kullanıldığında, setuid güvenli bir şekilde kullanılabilir. Bu nedenle setuid tanımlarken dikkatli olmalısınız.

setuid’nin oktal değeri, 4xxx şeklinde ifade edilir. Örneğin, 4755 gibi.

Setgid ise bir dizine uygulandığında dizinde oluşturulan dosyaların otomatik olarak dizinin grubuna atanmasını sağlar.

Aşağıdaki örnekleri yapmak için, asiye kullanıcısına sudo yetkisi verelim.

[rocky@instance-20241019-1038 ~]$

[rocky@instance-20241019-1038 ~]$ whoami

rocky

[rocky@instance-20241019-1038 ~]$ sudo tail -3 /etc/sudoers

## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)

#includedir /etc/sudoers.d

rocky   ALL=(ALL)       NOPASSWD: ALL

[rocky@instance-20241019-1038 ~]$ sudo vi /etc/sudoers

[rocky@instance-20241019-1038 ~]$ sudo tail -3 /etc/sudoers

#includedir /etc/sudoers.d

rocky   ALL=(ALL)       NOPASSWD: ALL

asiye   ALL=(ALL)       NOPASSWD: ALL

[rocky@instance-20241019-1038 ~]$

 

[rocky@instance-20241019-1038 ~]$ su – asiye

Password:

Last login: Sun Nov 10 08:43:14 UTC 2024 on pts/0

[asiye@instance-20241019-1038 ~]$

[asiye@instance-20241019-1038 ~]$ sudo tail -3 /etc/shadow

asiye:$6$ylocRDNKM/QGnxbj$EtwYX20uR8mva2e77TT8dLDsvKRQ488lTIiQffO0pdcN2BgR1XaXpqqgVIS6yUcZ9ly2j9UFwemML9s/l4tc3.:20015:0:99999:7:::

sarav:$6$AYHIfO9YVkUOo3xe$VnE5.2QDQXmsyR/.6QHXmArDDXQ8UeicMtHcQFI.ovSRut4MfADi3uUiDuYx7pLdgfGicHfiOJOMCjqYogGy4.:20024:0:99999:7:::

yigit:$6$AwnNgtWwanIvsTGb$AeSeK7.bM5tfc24J1euLeh.BHJkYUfFTUw0wdqD8mW3FrRAi2Q0Gw5tI17A9xHm..6Cs0RrFCkgw0xKdnXSYq/:20024:0:99999:7:::

[asiye@instance-20241019-1038 ~]$

 

[asiye@instance-20241019-1038 ~]$ whoami

asiye

[asiye@instance-20241019-1038 ~]$ ls -ld /home/asiye

drwxr-x—. 8 asiye asiye 4096 Nov 10 08:42 /home/asiye

[asiye@instance-20241019-1038 ~]$ chmod o+x /home/asiye

[asiye@instance-20241019-1038 ~]$ ls -ld /home/asiye

drwxr-x–x. 9 asiye asiye 4096 Nov 10 09:11 /home/asiye

[asiye@instance-20241019-1038 ~]$

[asiye@instance-20241019-1038 ~]$ sudo groupadd proje_grubu

[asiye@instance-20241019-1038 ~]$ sudo usermod -aG proje_grubu sarav

[asiye@instance-20241019-1038 ~]$ sudo usermod -aG proje_grubu yigit

[asiye@instance-20241019-1038 ~]$ mkdir proje_dizini

[asiye@instance-20241019-1038 ~]$ ls -ld proje_dizini

drwxr-xr-x. 2 asiye asiye 6 Nov 10 09:11 proje_dizini

[asiye@instance-20241019-1038 ~]$ sudo chown :proje_grubu proje_dizini

[asiye@instance-20241019-1038 ~]$ chmod 2770 proje_dizini

[asiye@instance-20241019-1038 ~]$ ls -ld /home/asiye/proje_dizini/

drwxrws—. 2 asiye proje_grubu 6 Nov 10 09:11 /home/asiye/proje_dizini/

[asiye@instance-20241019-1038 ~]$

 

chmod 2770 komutunu kullanarak setgid iznini ekledik ve izinleri rwxrws— olarak ayarladık.

s harfi, grup izinlerinde göründü, bu setgid izninin etkin olduğunu gösteriyor.

Artık proje_dizini içinde oluşturulacak dosyaların grubu otomatik olarak proje_grubu olacak.

 

[asiye@instance-20241019-1038 ~]$ whoami

asiye

[asiye@instance-20241019-1038 ~]$ exit

logout

[rocky@instance-20241019-1038 ~]$ su – sarav

Password:

Last login: Sun Nov 10 14:29:10 UTC 2024 on pts/0

[sarav@instance-20241019-1038 ~]$

[sarav@instance-20241019-1038 ~]$ cd /home/asiye/proje_dizini

[sarav@instance-20241019-1038 proje_dizini]$ touch sarav_dosyasi.txt

[sarav@instance-20241019-1038 proje_dizini]$ ls -l sarav_dosyasi.txt

-rw-r–r–. 1 sarav proje_grubu 0 Nov 10 14:38 sarav_dosyasi.txt

[sarav@instance-20241019-1038 proje_dizini]$ exit

logout

[rocky@instance-20241019-1038 ~]$ su – yigit

Password:

Last login: Sun Nov 10 08:29:15 UTC 2024 on pts/0

[yigit@instance-20241019-1038 ~]$ cd /home/asiye/proje_dizini

[yigit@instance-20241019-1038 proje_dizini]$ touch yigit_dosyasi.txt

[yigit@instance-20241019-1038 proje_dizini]$ ls -ld yigit_dosyasi.txt

-rw-r–r–. 1 yigit proje_grubu 0 Nov 10 14:39 yigit_dosyasi.txt

[yigit@instance-20241019-1038 proje_dizini]$

 

Yukardaki adımlar sayesinde, proje_dizini dizini proje_grubu için ortak çalışma alanı haline getirildi. İlk olarak, diğer kullanıcıların dizine erişebilmesi için /home/asiye dizinine çalıştırma izni verdik. Ardından, sarav ve yigit kullanıcılarını proje_grubuna ekledik ve proje_dizininin grubunu proje_grubu olarak ayarlayıp setgid iznini etkinleştirdik.

Bu işlemler sonucunda:

proje_dizini içinde oluşturulan tüm dosyalar otomatik olarak proje_grubuna ait hale geldi.

sarav ve yigit kullanıcıları dizine erişip dosya oluşturabildi.

 

Eğer setgid iznini eklemeseydik, proje_dizini içinde oluşturulan dosyalar, dosyayı oluşturan kullanıcının birincil grubuna ait olurdu. Yani, sarav kullanıcısının oluşturduğu dosya sarav grubuna, yigit kullanıcısının oluşturduğu dosya ise yigit grubuna atanırdı. Bu durumda:

Her dosya farklı bir gruba ait olurdu ve proje_grubu üyeleri dosyalara erişim sağlamak için ek izin ayarlarına ihtiyaç duyardı. Grup üyeleri arasında iş birliği zorlaşırdı, çünkü her dosyanın grubu tek tek değiştirilmek zorunda kalırdı.

Neden setgid Kullandık? setgid izni sayesinde, proje_dizini içinde oluşturulan tüm dosyalar otomatik olarak dizinin grubuna (proje_grubu) atanır.

Bu ayar, tüm dosyaların aynı grup altında toplanmasını sağlar ve grup üyelerinin aynı dizinde birbirlerinin dosyalarına kolayca erişimini mümkün kılar.

Kısaca, setgid ile grup çalışması için daha düzenli ve erişimi kolay bir ortam oluşturduk.

Aşağıda yigit ve sarav kullanıcılarının birbir dosyalarına nasıl müdahele edebildiğini görüyoruz.

 

[rocky@instance-20241019-1038 ~]$ su – sarav

Password:

Last login: Sun Nov 10 14:37:52 UTC 2024 on pts/0

[sarav@instance-20241019-1038 ~]$ cd /home/asiye/proje_dizini

[sarav@instance-20241019-1038 proje_dizini]$ ls -l

total 0

-rw-r–r–. 1 sarav proje_grubu 0 Nov 10 14:38 sarav_dosyasi.txt

-rw-r–r–. 1 yigit proje_grubu 0 Nov 10 14:39 yigit_dosyasi.txt

[sarav@instance-20241019-1038 proje_dizini]$ echo “Bu sarav kullanıcısının dosyasıdır.” > sarav_dosyasi.txt

[sarav@instance-20241019-1038 proje_dizini]$ cat sarav_dosyasi.txt

Bu sarav kullanıcısının dosyasıdır.

[sarav@instance-20241019-1038 proje_dizini]$ chmod 660 sarav_dosyasi.txt

[sarav@instance-20241019-1038 proje_dizini]$ ls -l sarav_dosyasi.txt

-rw-rw—-. 1 sarav proje_grubu 42 Nov 10 14:49 sarav_dosyasi.txt

[sarav@instance-20241019-1038 proje_dizini]$ exit

logout

[rocky@instance-20241019-1038 ~]$ su – yigit

Password:

Last login: Sun Nov 10 14:39:30 UTC 2024 on pts/0

[yigit@instance-20241019-1038 ~]$ cd /home/asiye/proje_dizini

[yigit@instance-20241019-1038 proje_dizini]$ ls -l

total 4

-rw-rw—-. 1 sarav proje_grubu 42 Nov 10 14:49 sarav_dosyasi.txt

-rw-r–r–. 1 yigit proje_grubu  0 Nov 10 14:39 yigit_dosyasi.txt

[yigit@instance-20241019-1038 proje_dizini]$ cat sarav_dosyasi.txt

Bu sarav kullanıcısının dosyasıdır.

[yigit@instance-20241019-1038 proje_dizini]$ echo “yigit kullanıcısı olarak dosyaya satır ekledim.” >> sarav_dosyasi.txt

[yigit@instance-20241019-1038 proje_dizini]$ cat sarav_dosyasi.txt

Bu sarav kullanıcısının dosyasıdır.

yigit kullanıcısı olarak dosyaya satır ekledim.

[yigit@instance-20241019-1038 proje_dizini]$ chmod 660 yigit_dosyasi.txt

[yigit@instance-20241019-1038 proje_dizini]$ ls -l

total 4

-rw-rw—-. 1 sarav proje_grubu 94 Nov 10 14:52 sarav_dosyasi.txt

-rw-rw—-. 1 yigit proje_grubu  0 Nov 10 14:39 yigit_dosyasi.txt

[yigit@instance-20241019-1038 proje_dizini]$ echo “Bu yigit kullanıcısının dosyasıdır.” > yigit_dosyasi.txt

[yigit@instance-20241019-1038 proje_dizini]$ cat yigit_dosyasi.txt

Bu yigit kullanıcısının dosyasıdır.

[yigit@instance-20241019-1038 proje_dizini]$ exit

logout

[rocky@instance-20241019-1038 ~]$ su – sarav

Password:

Last login: Sun Nov 10 14:47:53 UTC 2024 on pts/0

[sarav@instance-20241019-1038 ~]$ cd /home/asiye/proje_dizini

[sarav@instance-20241019-1038 proje_dizini]$ echo “sarav kullanıcısı olarak dosyaya satır ekledim.” >> yigit_dosyasi.txt

[sarav@instance-20241019-1038 proje_dizini]$ cat yigit_dosyasi.txt

Bu yigit kullanıcısının dosyasıdır.

sarav kullanıcısı olarak dosyaya satır ekledim.

[sarav@instance-20241019-1038 proje_dizini]$

 

Bu komut silsilesi, setgid izninin proje_dizini dizininde nasıl bir iş birliği sağladığını net bir şekilde gösteriyor. Bu örnek, proje_grubu üyelerinin (burada sarav ve yigit kullanıcıları), aynı gruba atanmış dosyalara hem okuma hem de yazma erişimine sahip olduğunu gösteriyor.

Bu Örnekte Yapılanlar ve Sağlanan Avantajlar:

  1. Dosyaların Grup Üzerinden Paylaşılması:
    • sarav ve yigit kullanıcıları kendi dosyalarını proje_dizini içinde oluşturdu. Dosyalar otomatik olarak proje_grubu grubuna ait oldu ve setgid izni sayesinde grup üyeleri arasında erişim sağlandı.
  2. Yazma İzni ile İş Birliği:
    • sarav kullanıcısı, sarav_dosyasi.txt dosyasının grup izinlerini 660 yaparak sadece proje_grubu üyelerine okuma ve yazma izni verdi.
    • yigit kullanıcısı dosyaya bir satır ekleyebildi ve dosyayı düzenleyebildi. Bu da proje_grubu üyelerinin aynı dosya üzerinde birlikte çalışabildiğini gösteriyor.
    • Aynı şekilde, yigit kullanıcısı da yigit_dosyasi.txt dosyasını düzenledi ve sarav kullanıcısı da bu dosyaya erişip içerik ekleyebildi.

Bu komutlar, setgid bayrağının grup üyelerinin aynı dizinde ve aynı dosyalarda etkin bir şekilde iş birliği yapabilmelerini sağladığını gösteriyor. Grup üyeleri, proje_dizini içinde oluşturulan tüm dosyaları ortak bir grup (proje_grubu) altında tutarak birbirlerinin dosyalarına kolayca erişim sağlayabiliyor ve düzenleyebiliyor. Eğer setgid bayrağını kullanmasaydık, proje_dizini içinde oluşturulan dosyalar her kullanıcının kendi birincil grubuna atanırdı. Bu durumda, dosya sahipliği ve grup erişim izinleri nedeniyle grup üyeleri arasında iş birliği zorlaşırdı.

Sticky bit, bir dizine uygulandığında, o dizin içinde oluşturulan dosyaların yalnızca dosyanın sahibi veya root kullanıcısı tarafından silinmesini sağlayan bir güvenlik özelliğidir. Bu özellik, özellikle herkesin dosya oluşturabildiği, okuma ve yazma erişimine sahip olduğu ortak dizinlerde güvenliği artırmak için kullanılır.

Sticky bit etkin değilse, dizin içindeki dosyaları dizin izinlerine erişimi olan herkes silebilir. Bu durum, ortak çalışma alanlarında güvenlik sorunlarına yol açabilir. Herkesin dosyaları görmesine veya düzenlemesine gerek yoksa, sadece kendi dosyasını silme yetkisi verilmesi, istenmeyen kazaları veya kötü niyetli dosya silme işlemlerini önler.

Sticky bit etkin olduğunda:

Kullanıcılar dizin içinde dosya oluşturabilir ve kendi dosyalarını silebilir.

Ancak, bir dosyayı yalnızca o dosyanın sahibi veya root kullanıcı silebilir.

Bu özellik, Linux/Unix tabanlı sistemlerde genellikle /tmp gibi ortak kullanılan dizinlerde uygulanır. /tmp dizini gibi tüm kullanıcıların dosya oluşturup geçici olarak depoladığı yerlerde, sticky bit sayesinde kullanıcılar yalnızca kendi dosyaları üzerinde işlem yapabilir. Sticky bit, izinlerde dizin için t harfi ile gösterilir. Aşağıda /tmp dizini için gördüğünüz gibi.

 

[rocky@instance-20241019-1038 ~]$ ls -ld /tmp

drwxrwxrwt. 5 root root 4096 Nov 10 14:54 /tmp

[rocky@instance-20241019-1038 ~]$

 

[rocky@instance-20241019-1038 ~]$ whoami

rocky

[rocky@instance-20241019-1038 ~]$ su – asiye

Password:

Last login: Sun Nov 10 14:33:10 UTC 2024 on pts/0

[asiye@instance-20241019-1038 ~]$ mkdir paylasim_dizini

[asiye@instance-20241019-1038 ~]$ chmod 1777 paylasim_dizini

[asiye@instance-20241019-1038 ~]$ ls -ld paylasim_dizini/

drwxrwxrwt. 2 asiye asiye 6 Nov 10 15:12 paylasim_dizini/

[asiye@instance-20241019-1038 ~]$ su – sarav

Password:

Last login: Sun Nov 10 14:53:54 UTC 2024 on pts/0

[sarav@instance-20241019-1038 ~]$ cd /home/asiye/paylasim_dizini

[sarav@instance-20241019-1038 paylasim_dizini]$ touch sarav_dosyasi.txt

[sarav@instance-20241019-1038 paylasim_dizini]$ ls -l sarav_dosyasi.txt

-rw-r–r–. 1 sarav sarav 0 Nov 10 15:13 sarav_dosyasi.txt

[sarav@instance-20241019-1038 paylasim_dizini]$ su – yigit

Password:

Last login: Sun Nov 10 14:51:45 UTC 2024 on pts/0

[yigit@instance-20241019-1038 ~]$ cd /home/asiye/paylasim_dizini

[yigit@instance-20241019-1038 paylasim_dizini]$ touch yigit_dosyasi.txt

[yigit@instance-20241019-1038 paylasim_dizini]$ ls -l yigit_dosyasi.txt

-rw-r–r–. 1 yigit yigit 0 Nov 10 15:14 yigit_dosyasi.txt

[yigit@instance-20241019-1038 paylasim_dizini]$ rm sarav_dosyasi.txt

rm: remove write-protected regular empty file ‘sarav_dosyasi.txt’? y

rm: cannot remove ‘sarav_dosyasi.txt’: Operation not permitted

[yigit@instance-20241019-1038 paylasim_dizini]$ su – sarav

Password:

Last login: Sun Nov 10 15:13:25 UTC 2024 on pts/0

[sarav@instance-20241019-1038 ~]$ cd /home/asiye/paylasim_dizini

[sarav@instance-20241019-1038 paylasim_dizini]$ rm sarav_dosyasi.txt

[sarav@instance-20241019-1038 paylasim_dizini]$ ls -l

total 0

-rw-r–r–. 1 yigit yigit 0 Nov 10 15:14 yigit_dosyasi.txt

[sarav@instance-20241019-1038 paylasim_dizini]$

 

Yukardaki örnek, paylasim_dizini dizininde sticky bit’in etkin olduğunu ve yalnızca dosyanın sahibi tarafından silinebileceğini kanıtlıyor. Adımların kısa bir özeti:

  1. paylasim_dizini Dizini Oluşturma ve Sticky Bit Etkinleştirme:
    • asiye kullanıcısı olarak paylasim_dizini adlı bir dizin oluşturup chmod 1777 komutu ile sticky bit’i etkin hale getirdik.
    • Bu işlem, dizin izinlerinde t harfi ile gösterilir ve kullanıcıların yalnızca kendi dosyalarını silebilmesini sağlar.
  2. Dosya Oluşturma:
    • sarav kullanıcısı kendi dosyasını (sarav_dosyasi.txt) oluşturdu.
    • yigit kullanıcısı da kendi dosyasını (yigit_dosyasi.txt) oluşturdu.
  3. Dosya Silme Denemesi:
    • yigit, sarav kullanıcısının dosyasını silmeye çalıştı fakat sticky bit etkin olduğu için “Operation not permitted” hatası aldı. yigit, kendi oluşturmadığı bir dosyayı silemedi.
    • Ardından, sarav kullanıcısı kendi dosyasını başarılı bir şekilde sildi.

Bu komut dizisi sticky bit’in etkin olduğu bir dizinde, kullanıcıların yalnızca kendi dosyalarını silebildiğini gösteriyor. Sticky bit bu şekilde, ortak çalışma alanlarında güvenliği artırarak dosya silme işlemlerini dosya sahibine özel kılar.

Bu makalede, Linux dosya izinlerini detaylı olarak inceleyip, setuid, setgid ve sticky bit özellikleriyle iş birliği ve güvenliği nasıl artırabileceğimizi öğrendik. Özellikle ortak çalışma dizinlerinde bu özel izinlerin doğru uygulanması, dosyaların güvenliğini ve kullanıcılar arası erişim kolaylığını sağlar. Bu bilgiler, Linux sistem yönetiminde daha güvenli ve düzenli bir yapı kurmak isteyenler için temel bir rehber niteliğindedir. İleriye dönük çalışmalarınızda bu izinleri doğru kullanarak güvenliği ve verimliliği artırabilirsiniz.

Sarav Asiye Yiğit – 10 Kasım 2024