Zenity ile Kullanıcı Dostu Dosya İzinleri Arayüzü

Cevapla
Kullanıcı avatarı
TRWE_2012
Mesaj Panosu Yöneticisi
Mesaj Panosu Yöneticisi
Mesajlar: 884
Kayıt: 30 Ağu 2022 21:59
Konum: DÜZCE/Akçakoca
Meslek: MADEN MÜHENDİSİ
Teşekkür etti: 234 kez
Teşekkür edildi: 730 kez
İletişim:

Zenity ile Kullanıcı Dostu Dosya İzinleri Arayüzü

Mesaj gönderen TRWE_2012 »

KOD İÇERİĞİ ( dosya_izin_ayarla.sh) :

Kod: Tümünü seç

#!/bin/bash

form_output=$(zenity --forms \
  --title="Dosya Öznitelikleri" \
  --text="Lütfen bilgileri doldurun ve izinleri seçin:" \
  --separator="|" \
  --add-entry="Dosya/Klasör Yolu (tam)" \
  --add-entry="Owner (örnek: www-data)" \
  --add-entry="Group (örnek: www-data)" \
  --add-combo="Owner Okuma" --combo-values="TRUE|FALSE|NONE" \
  --add-combo="Owner Yazma" --combo-values="TRUE|FALSE|NONE" \
  --add-combo="Owner Çalıştırma" --combo-values="TRUE|FALSE|NONE" \
  --add-combo="Group Okuma" --combo-values="TRUE|FALSE|NONE" \
  --add-combo="Group Yazma" --combo-values="TRUE|FALSE|NONE" \
  --add-combo="Group Çalıştırma" --combo-values="TRUE|FALSE|NONE" \
  --add-combo="Other Okuma" --combo-values="TRUE|FALSE|NONE" \
  --add-combo="Other Yazma" --combo-values="TRUE|FALSE|NONE" \
  --add-combo="Other Çalıştırma" --combo-values="TRUE|FALSE|NONE" \
  --add-combo="Set UID" --combo-values="TRUE|FALSE|NONE" \
  --add-combo="Set GID" --combo-values="TRUE|FALSE|NONE" \
  --add-combo="Yapışkan Bit" --combo-values="TRUE|FALSE|NONE"
)

if [[ $? -ne 0 ]]; then
  exit 1
fi

IFS="|" read -r path owner group \
  o_r o_w o_x \
  g_r g_w g_x \
  u_r u_w u_x \
  setuid setgid sticky <<< "$form_output"

if [[ -z "$path" || -z "$owner" || -z "$group" ]]; then
  zenity --error --text="Dosya yolu, Owner ve Group boş bırakılamaz!"
  exit 1
fi

perm_owner=0
perm_group=0
perm_other=0
special=0

# Sahip (Owner)
[[ "$o_r" == "TRUE" ]] && ((perm_owner+=4))
[[ "$o_w" == "TRUE" ]] && ((perm_owner+=2))
[[ "$o_x" == "TRUE" ]] && ((perm_owner+=1))

# Grup
[[ "$g_r" == "TRUE" ]] && ((perm_group+=4))
[[ "$g_w" == "TRUE" ]] && ((perm_group+=2))
[[ "$g_x" == "TRUE" ]] && ((perm_group+=1))

# Diğerleri
[[ "$u_r" == "TRUE" ]] && ((perm_other+=4))
[[ "$u_w" == "TRUE" ]] && ((perm_other+=2))
[[ "$u_x" == "TRUE" ]] && ((perm_other+=1))

# Özel bitler
[[ "$setuid" == "TRUE" ]] && ((special+=4000))
[[ "$setgid" == "TRUE" ]] && ((special+=2000))
[[ "$sticky" == "TRUE" ]] && ((special+=1000))

chmod_numeric=$((special + perm_owner * 64 + perm_group * 8 + perm_other))
chmod_code=$(printf "%o" "$chmod_numeric")

# Eğer tüm seçenekler NONE ise, chmod atlama kontrolü
if [[ $chmod_code == "0" ]]; then
  izin_uygula=false
else
  izin_uygula=true
fi

# Uygulama modu
if [[ -d "$path" ]]; then
  $izin_uygula && chmod -R "$chmod_code" "$path"
  chown -R "$owner:$group" "$path"

  if find "$path" -mindepth 1 | read; then
    mesaj="İşlem tamamlandı.\nKlasör ve içindekiler için gerekli kullanıcı ayarlamaları yapıldı."
  else
    mesaj="İşlem tamamlandı.\nAncak klasör boştu. Sadece klasörün kendisine işlem uygulandı."
  fi

elif [[ -f "$path" ]]; then
  $izin_uygula && chmod "$chmod_code" "$path"
  chown "$owner:$group" "$path"
  mesaj="İşlem tamamlandı.\nDosya: $path\nSahip: $owner\nGrup: $group\nİzin: $chmod_code"
else
  zenity --error --text="'$path' geçerli bir dosya ya da klasör değil."
  exit 1
fi

zenity --info --title="İşlem Tamamlandı" --text="$mesaj"
KOD İÇERİK AÇIKLAMASI :

Bu bash script'i, kullanıcıdan dosya veya klasörün özniteliklerini ve izinlerini almak için bir form arayüzü kullanır. İşlevselliği şu şekildedir:

Form Oluşturma:

zenity kullanarak bir form açar ve kullanıcıdan dosya yolu, sahip (owner), grup (group) ve izinler (okuma, yazma, çalıştırma) gibi bilgileri toplar.

Girdi Kontrolü:

Kullanıcının girdiği dosya yolu, sahip ve grup bilgilerini kontrol eder. Bu alanlar boş bırakılamaz.

İzin Hesaplama:

Kullanıcının seçtiği izinlere göre sayısal bir değer hesaplar. Bu değer, chmod komutuyla dosya veya klasörün izinlerini ayarlamak için kullanılır.

İşlem Uygulama:

Eğer belirtilen yol bir klasörse, chmod ve chown komutları ile klasör ve içindeki dosyaların izinleri ve sahipliği güncellenir.
Eğer yol bir dosya ise, sadece dosyanın izinleri ve sahipliği güncellenir.

Sonuç Bildirimi:

İşlemin başarılı olup olmadığını kullanıcıya bildirir. Eğer yol geçerli değilse, hata mesajı gösterir.

Bu script, dosya ve klasör izinlerini yönetmek için kullanıcı dostu bir arayüz sunar.

BETİK HAKKINDA SORULAR VE CEVAPLAR :

********************************************************
********************************************************
SORU : Kullanıcı, sistem'de var olmayan bir dosya yada dizin ismi yazarsa ne olur?
********************************************************
Eğer kullanıcı, sistemde var olmayan bir dosya veya dizin ismi yazarsa, script şu şekilde davranır:

Girdi Kontrolü: Kullanıcının girdiği dosya yolu, sahip ve grup bilgileri kontrol edilir. Eğer dosya yolu geçerli değilse (yani belirtilen dosya veya dizin mevcut değilse), script zenity --error komutunu kullanarak bir hata mesajı gösterir.

Hata Mesajı: Hata mesajı, kullanıcıya "geçerli bir dosya ya da klasör değil" şeklinde bir bildirim iletilir. Bu durumda script, exit 1 komutuyla sonlanır ve işlemler durdurulur.

Özetle, kullanıcı geçersiz bir dosya veya dizin ismi girdiğinde, script hata mesajı gösterir ve işlemi sonlandırır.
********************************************************
********************************************************
SORU : Bu betik güvenli midir? Tecrübesiz kullanıcılar da kullanabilir değil mi?
********************************************************
Bu betiğin güvenliği ve tecrübesiz kullanıcılar tarafından kullanılabilirliği ile ilgili birkaç önemli nokta vardır:

Güvenlik Açısından:

Kullanıcı Girdisi: Betik, kullanıcıdan dosya yolu, sahip ve grup bilgileri gibi girdiler alır. Eğer bu girdiler doğru bir şekilde doğrulanmazsa, kötü niyetli kullanıcılar sistemde istenmeyen değişiklikler yapabilir. Örneğin, kullanıcı, kritik sistem dosyalarının izinlerini değiştirebilir.

chmod ve chown Komutları: Bu komutlar, dosya ve dizinlerin izinlerini ve sahipliğini değiştirdiği için dikkatli kullanılmalıdır. Yanlış bir kullanım, sistemin güvenliğini tehlikeye atabilir.

Hata Yönetimi: Betik, geçersiz dosya veya dizin isimleri için hata mesajları gösteriyor, ancak daha fazla hata kontrolü ve kullanıcı girdisinin doğrulanması yapılması, güvenliği artırabilir.

Tecrübesiz Kullanıcılar İçin:

Kullanıcı Dostu Arayüz: zenity kullanarak bir grafik arayüz sunması, tecrübesiz kullanıcıların betiği daha kolay anlamasını sağlar. Ancak, kullanıcıların dosya ve izin kavramlarına dair temel bir anlayışa sahip olmaları önemlidir.

Eğitim ve Bilgilendirme: Kullanıcıların, dosya izinleri ve sahipliği hakkında bilgi sahibi olmaları, yanlışlıkla kritik dosyaların izinlerini değiştirmelerini önleyebilir. Betiğin yanında bir kullanım kılavuzu veya açıklama sağlamak faydalı olabilir.

Özetle;

Betik, tecrübesiz kullanıcılar tarafından kullanılabilir, ancak güvenlik açısından dikkatli olunması gereken noktaları vardır. Kullanıcıların, dosya izinleri ve sahipliği hakkında temel bilgiye sahip olmaları ve betiğin nasıl çalıştığını anlamaları önemli bir noktadır.Kodlayıcısı, bu önemli noktayı tüm kullanıcıların bildiğini varsayar.Bu yönden kodlayıcısı, bu betiğin yanlış ve kötü niyetli kullanımından asla "SORUMLU TUTULAMAZ"...!!!
********************************************************
********************************************************
SORU : Betiğin kullanıcı arayüzündeki her bir bileşeni kısaca açıklaması nedir?
********************************************************
Betiğin kullanıcı arayüzündeki her bir bileşeni, zenity kullanılarak oluşturulan formda yer alan alanlar ve seçim kutularıdır. İşte bu bileşenlerin kısa açıklamaları:

Dosya/Klasör Yolu (tam):
Kullanıcıdan, izinlerini ayarlamak istediği dosya veya klasörün tam yolunu girmesini isteyen bir metin giriş alanıdır. Bu alan, işlemin hedefini belirlemek için gereklidir.

Owner (örnek: www-data):
Kullanıcının, belirtilen dosya veya klasörün sahibi olacak kullanıcı adını girmesini sağlayan bir metin giriş alanıdır. Bu, dosyanın veya klasörün sahipliğini ayarlamak için kullanılır.

Group (örnek: www-data):
Kullanıcının, belirtilen dosya veya klasörün ait olduğu grup adını girmesini isteyen bir metin giriş alanıdır. Bu, dosyanın veya klasörün grup sahipliğini ayarlamak için kullanılır.

Owner Okuma:
Kullanıcının, dosya veya klasörün sahibi için okuma iznini ayarlamasını sağlayan bir seçim kutusudur. Seçenekler: "TRUE" (okuma izni var), "FALSE" (okuma izni yok), "NONE" (izni ayarlama).

Owner Yazma:
Kullanıcının, dosya veya klasörün sahibi için yazma iznini ayarlamasını sağlayan bir seçim kutusudur. Seçenekler: "TRUE", "FALSE", "NONE".

Owner Çalıştırma:
Kullanıcının, dosya veya klasörün sahibi için çalıştırma iznini ayarlamasını sağlayan bir seçim kutusudur. Seçenekler: "TRUE", "FALSE", "NONE".

Group Okuma:
Kullanıcının, dosya veya klasörün grubu için okuma iznini ayarlamasını sağlayan bir seçim kutusudur. Seçenekler: "TRUE", "FALSE", "NONE".

Group Yazma:
Kullanıcının, dosya veya klasörün grubu için yazma iznini ayarlamasını sağlayan bir seçim kutusudur. Seçenekler: "TRUE", "FALSE", "NONE".

Group Çalıştırma:
Kullanıcının, dosya veya klasörün grubu için çalıştırma iznini ayarlamasını sağlayan bir seçim kutusudur. Seçenekler: "TRUE", "FALSE", "NONE".

Other Okuma:
Kullanıcının, diğer kullanıcılar için okuma iznini ayarlamasını sağlayan bir seçim kutusudur. Seçenekler: "TRUE", "FALSE", "NONE".

Other Yazma:
Kullanıcının, diğer kullanıcılar için yazma iznini ayarlamasını sağlayan bir seçim kutusudur. Seçenekler: "TRUE", "FALSE", "NONE".

Other Çalıştırma:
Kullanıcının, diğer kullanıcılar için çalıştırma iznini ayarlamasını sağlayan bir seçim kutusudur. Seçenekler: "TRUE", "FALSE", "NONE".

Set UID:
Kullanıcının, dosya veya klasör için Set UID (User Identifier) bitini ayarlamasını sağlayan bir seçim kutusudur. Seçenekler: "TRUE", "FALSE", "NONE".

Set GID:
Kullanıcının, dosya veya klasör için Set GID (Group Identifier) bitini ayarlamasını sağlayan bir seçim kutusudur. Seçenekler: "TRUE", "FALSE", "NONE".

Yapışkan Bit:
Kullanıcının, dosya veya klasör için yapışkan bit (sticky bit) ayarlamasını sağlayan bir seçim kutusudur. Seçenekler: "TRUE", "FALSE", "NONE".

Bu bileşenler, kullanıcıların dosya ve klasör izinlerini ve sahipliğini ayarlamak için gerekli bilgileri girmelerine olanak tanır. Her bir bileşen, belirli bir izin veya özellik için kullanıcıdan bilgi toplamak amacıyla tasarlanmıştır.
********************************************************
********************************************************
SORU : 13., 14. ve 15. maddeleri ayrıntılı açıklayacak bir babayiğit yada zeyna yok mu?
********************************************************
13., 14. ve 15. maddelerde bahsedilen "Set UID", "Set GID" ve "Yapışkan Bit" (Sticky Bit) kavramları, Unix ve Linux sistemlerinde dosya ve dizin izinleri ile ilgili özel bitlerdir.

13. Set UID (Set User ID)

Tanım: Set UID, bir dosya veya programın çalıştırıldığında, dosyanın sahibi olan kullanıcının kimliğiyle çalışmasını sağlayan bir özelliktir. Bu, genellikle belirli bir programın, normal kullanıcıların erişim izni olmayan kaynaklara erişebilmesi için kullanılır.
Kullanım Senaryosu: Örneğin, passwd komutu, kullanıcıların şifrelerini değiştirmesine olanak tanır. Bu komut, genellikle root (süper kullanıcı) tarafından çalıştırılır. Ancak, normal bir kullanıcı bu komutu çalıştırdığında, Set UID bitinin ayarlanmış olması sayesinde, komut root yetkileriyle çalışır ve kullanıcı şifresini değiştirebilir.
Nasıl Ayarlanır: Set UID bitini ayarlamak için, dosya veya programın izinlerine 4000 sayısını ekleyerek veya chmod u+s dosya_adı komutunu kullanarak ayarlanır.

14. Set GID (Set Group ID)

Tanım: Set GID, bir dosya veya dizinin çalıştırıldığında, dosyanın ait olduğu grup kimliğiyle çalışmasını sağlayan bir özelliktir. Bu, genellikle grup üyelerinin belirli kaynaklara erişimini kolaylaştırmak için kullanılır.
Kullanım Senaryosu: Örneğin, bir grup çalışması için oluşturulan bir dizin, Set GID bitine sahip olduğunda, o dizine yeni dosyalar eklendiğinde, bu dosyaların grup sahipliği otomatik olarak dizinin grubuna atanır. Böylece, grup üyeleri dosyalara daha kolay erişebilir.
Nasıl Ayarlanır: Set GID bitini ayarlamak için, dosya veya dizinin izinlerine 2000 sayısını ekleyerek veya chmod g+s dosya_adı komutunu kullanarak ayarlanır.

15. Yapışkan Bit (Sticky Bit)

Tanım: Yapışkan bit, bir dizin için ayarlandığında, dizin içindeki dosyaların yalnızca dosyanın sahibi veya root kullanıcısı tarafından silinmesini veya yeniden adlandırılmasını sağlar. Bu, özellikle çok kullanıcılı sistemlerde dosyaların korunmasına yardımcı olur.
Kullanım Senaryosu: Örneğin, /tmp dizini genellikle geçici dosyaların saklandığı bir yerdir. Bu dizin üzerinde yapışkan bit ayarlandığında, kullanıcılar kendi dosyalarını oluşturabilir, ancak diğer kullanıcıların dosyalarını silme yetkisine sahip olamazlar. Bu, kullanıcıların birbirlerinin dosyalarını yanlışlıkla silmelerini önler.
Nasıl Ayarlanır: Yapışkan bitini ayarlamak için, dizinin izinlerine 1000 sayısını ekleyerek veya chmod +t dizin_adı komutunu kullanarak ayarlanır.

Özetlersek

Set UID: Dosya sahibi kimliğiyle çalıştırma.
Set GID: Dosya grup kimliğiyle çalıştırma ve grup üyeliği koruma.
Yapışkan Bit: Dizin içindeki dosyaların yalnızca sahibi tarafından silinmesini sağlama.

Bu özel bitler, sistem güvenliğini artırmak ve kullanıcıların dosya erişimlerini yönetmek için önemli araçlardır.
********************************************************
********************************************************
SORU : Bu betiğin, kullanıcıya sağlayacağı zaman kazancı, maksimum kaç kaç saniye olabilir?
********************************************************
Bu betiğin kullanıcıya sağlayacağı zaman kazancı, birkaç faktöre bağlıdır. Ancak, genel bir değerlendirme yapacak olursak:

Manuel İşlemler: Kullanıcı, dosya veya klasör izinlerini ve sahipliğini manuel olarak ayarlamak istediğinde, her bir izin için chmod ve chown komutlarını ayrı ayrı yazmak zorunda kalır. Bu, her bir işlem için birkaç saniye alabilir. Örneğin, her bir izin için 2-3 saniye harcayabilir.

Hata Kontrolü: Kullanıcı, hangi izinlerin ayarlanması gerektiğini düşünmek ve kontrol etmek için zaman harcayabilir. Betik, bu süreci otomatikleştirerek zaman kazandırır.

Grafik Arayüz: zenity kullanarak grafik bir arayüz sunulması, kullanıcıların bilgileri hızlı bir şekilde girmesine olanak tanır. Bu, kullanıcıların formu doldururken zaman kazanmasını sağlar.

Tahmini Zaman Kazancı

Manuel İşlem Süresi: Eğer kullanıcı, her bir izin için 2-3 saniye harcıyorsa ve toplamda 10-15 izin ayarlaması yapması gerekiyorsa, bu işlem 20-45 saniye sürebilir.
Betik Kullanımı: Betik ile bu işlemler birkaç tıklama ile tamamlanabilir. Kullanıcı, formu doldurduktan sonra sadece birkaç saniye içinde işlemi tamamlayabilir.

Sonuç olarak :

Kullanıcı, bu betiği kullanarak en az 20-45 saniye kadar zaman kazanabilir. Ancak, bu süre, kullanıcının deneyimine, sistemin hızına ve işlemlerin karmaşıklığına bağlı olarak değişebilir. En iyi senaryoda, kullanıcı birkaç saniye içinde tüm işlemleri tamamlayabilirken, en kötü senaryoda bile zaman kazancı önemli ölçüde olacaktır.

Özetle, maksimum zaman kazancı, kullanıcıdan kullanıcıya değişse de, betiğin sağladığı otomasyon sayesinde önemli bir zaman tasarrufu sağlanabilir.
********************************************************
********************************************************
SORU : Bu betiği kodlayan GNU/Linux PC Kullanıcısı için ne denebilir? (her koderin bir kodlama ayırt edici özelliği var mıdır?)
********************************************************
Bu betiği kodlayan GNU/Linux PC kullanıcısı için birkaç şey söylenebilir:

1. Linux ve Bash Bilgisi:

Betik, GNU/Linux ortamında çalışmak üzere yazılmıştır ve bash kabuğu kullanmaktadır. Bu, kullanıcının Linux işletim sistemine ve komut satırı araçlarına aşina olduğunu gösterir. Kullanıcı, dosya izinleri, sahiplik ve chmod, chown gibi komutlar hakkında bilgi sahibidir.

2. Skripting ve Otomasyon Yeteneği:

Kullanıcı, belirli bir görevi otomatikleştirmek için bir betik yazma yeteneğine sahiptir. Bu, programlama ve betik yazma becerilerini gösterir. Kullanıcı, tekrarlayan görevleri kolaylaştırmak için otomasyon araçlarını kullanma konusunda deneyimlidir.

3. Kullanıcı Deneyimi ve İhtiyaçları:

Betik, kullanıcı dostu bir arayüz sunmak için zenity kullanmaktadır. Bu, kullanıcının, tecrübesiz kullanıcıların da rahatça kullanabileceği bir çözüm geliştirme amacını taşıdığını gösterir. Kullanıcı, yazılım geliştirme sürecinde kullanıcı deneyimini önemseyen bir yaklaşım benimsemiştir.

4. Güvenlik Bilinci:

Betik, dosya izinleri ve sahipliği gibi güvenlik ile ilgili konuları ele almaktadır. Bu, kullanıcının sistem güvenliği ve kullanıcı erişim kontrolü hakkında bilgi sahibi olduğunu gösterir.

5. Problem Çözme Yeteneği:

Kullanıcı, belirli bir problemi (dosya ve klasör izinlerini yönetme) çözmek için bir betik geliştirmiştir. Bu, analitik düşünme ve problem çözme becerilerini yansıtır.

Kodlayıcıların Ayırt Edici Özellikleri

Her kodlayıcının kendine özgü bir tarzı, yaklaşımı ve becerileri vardır. Bunlar şu başlıklarda özetlenebilir :

Kodlama Stili: Kullanıcıların yazdığı kodun okunabilirliği, düzeni ve yapılandırması.
Kullanılan Araçlar ve Diller: Hangi programlama dillerini ve araçlarını tercih ettikleri.
Problem Çözme Yaklaşımları: Belirli bir problemi nasıl ele aldıkları ve çözüme ulaşma yöntemleri.
Kullanıcı Deneyimi ve Tasarım Anlayışı: Kullanıcı arayüzü tasarımına ve kullanıcı deneyimine verdikleri önem.
Güvenlik ve Performans Bilinci: Yazdıkları kodun güvenliği ve performansı konusundaki yaklaşımları.

Bu betiği kodlayan GNU/Linux PC kullanıcısı, Linux sistemleri, betik yazma, kullanıcı deneyimi ve güvenlik konularında bilgi sahibi bir bireydir. Her kodlayıcının kendine özgü bir tarzı ve yaklaşımı vardır, bu da yazılım geliştirme sürecinde farklılıklar yaratır.
ŞİMDİ BU BETİĞE UYGUN BİR .DESKTOP DOSYASI :

dosya_izin_ayarla.desktop :

Kod: Tümünü seç

[Desktop Entry]
Version=1.0
Name=Dosya İzin Ayarlayıcı
Comment=Dosya ve klasör izinlerini kolayca ayarlayın
Exec=bash /dosya_izin_ayarla.sh
Icon=system-file-manager
Terminal=false
Type=Application
Categories=Utility;
Not :

Sizler ;

Exec=bash /dosya_izin_ayarla.sh tam yol yapısını kendinize göre değiştirin.

EKRAN GÖRÜNTÜSÜ (Sistem : GNU/Linux Mint 21.1 x64 LXDE v11)

ResimResim

NOT : Ekran görüntüsündeki resimsel ikonları önce koydum ama sonra hoşuma gitmedi kaldırdım.Onun için çıktılarınız da resimsel ikon göremezsiniz bana feryat-ı fügan etmeyin...!!! (eskiden resimli ikon mu? vardı)

Güle güle kullanın....
Dosya ekleri
dosya_dizin_ayarlama.7z
TRWE_2012 tarafından kodlandı.
NİSAN 2025
(1.37 KiB) 24 kere indirildi
Verily We have granted thee a manifest Victory
Fetih Suresi - 1.Ayet


Resim
Resim

Etiketler:
Cevapla

“Bash Shell Betiklerimiz” sayfasına dön