Cuma, Aralık 20, 2013

Linux Sistem Yönetimi - Kullanıcı ve Gruplar

Sistemi Yönetmek

Linux sistem yönetiminde günlük işler içerisinde kullanıcı ve grupları oluşturmak, silmek, bulundukları ortamları ayarlamak bulunur. Küçük sistemlerde bu işlem çok sık olmasa da büyük sistemlerde sıkça gerçekleşir ve her halükarda bunların bilinmesi önemlidir. Diğer bir günlük iş ise log dosyalarını yönetmek ve incelemektir. Her şeyin olması gerektiği gibi çalıştığını kontrol etmek için log dosyalarını düzenli olarak kontrol etmelisiniz.
Çoğu Linux görevi zamanla ilgilidir. Linux zamanı diğer işletim sistemlerinden farklı kullanır ve ve Linux'un zamanı nasıl kullandığını bilmek önemlidir.

Kullanıcıları ve Grupları Ayarlamak

Linux "hesap" mantığına dayanan çok kullanıcılı bir sistemdir - veri yapıları ve prosedürler sistemde bulunan kullanıcıları belirlemek için kullanılır. Bu hesapları yönetmek çok temel aynı zamanda çok önemli bir iştir.

Linux Kullanıcı Adlarını Anlamak

Linux kullanıcı adları konusunda oldukça esnektir. Büyük/küçük harfler, rakamlar, bazı işaretler ve boşluklar kullanılabilir. Ama boşluk bazen sorun yaratabilir. Ayrıca kullanıcı adları bir harfle başlamak zorundadır.

45u - yanlış
u45 - doğru

Kullanıcı adlarında harflerin büyük ve küçük olmasına duyarlılık vardır. Yani tugce ve Tugce isimli iki ayrı kullanıcı bir sistemde barınabilir.  (Karışıklık yaratabileceği için böyle bir şey yapılmaması daha iyidir)

Kullanıcıları bir araya getirerek Gruplar yardımıyla Verimliliği Sağlamak

Linux grupları kullanıcıları organize etmek için kullanır. Çoğu yönden gruplar kullanıcılara benzer. Benzer yapılandırma dosyaları ile tanımlanırlar, benzer isimler taşırlar ve hesaplar gibi kendilerine ait numaraları olur.

Ama gruplar hesap değildir. Gruplar (genelde güvenlik nedeniyle) hesapların bir araya toplanmasıdır. Örneğin bir gruba bir dosyayla ilgili özel izinler verilebilir, böylece o gruba ait kişiler o dosyaya erişebilirken o gruba ait olmayan kişiler erişemez. Linux çoğu donanıma da dosyalarla eriştiği için aynı işlemi donanıma erişim konusunda da gerçekleştirebilirsiniz.

Her grup sıfır ile bilgisayardaki tüm hesapların sayısı kadar üye barındırabilir. Grup üyeliği /etc/group dosyası aracılığıyla kontrol edilir. Bu dosya grupların bir listesi ile gruplara bağlı olan kullanıcıları içerir.

Her hesabın birincil grubu bulunur. Bu /etc/group yerine /etc/passwd içinde bulunur. Bir hesap oluşturulduğunda bu hesaba birincil grup atanır. Kullanıcı dosya oluşturduğunda ya da programları çalıştırdırdığında bunu bulunduğu birincil grubun haklarıyla yapar. Ayrıca kullanıcı diğer gruplara ait olduğu sürece ve o grupların erişim izni olduğu sürece diğer dosyalara da erişebilir. Kullanıcı bir programı başka bir grubun haklarıyla çalıştırmak isterse bu gruba geçiş yapmalıdır.

$newgrp grup2

Bu komutla grup2 grubuna geçiş yapılabilinir.Buna alternatif olarak kullanıcı dosyaları başka bir grup haklarıyla oluşturmak istiyorsa chgrp ya da chown ile bunu gerçekleştirebilir.

$chgrp grup2 dosyaadi
$chown kullanici2 dosyaadi

UID ve GID'leri Kullanıcılar ve Gruplarla İlişkilendirmek

Linux kullanıcıları ve grupları numaralarla tanımlar, bunlar kullanıcı ID (user ID - UID) ve grup ID (group ID - GID) olarak bilinir. Linux kendi içinde kullanıcı ve grupları isimlerine göre değil numaralarına göre takip eder.

kullanıcı adı:tugce
UID: 512
grup adı: grup1
GID: 503

Biz kullanıcı ve grupları isimleriyle ayrıştırırken Linux /etc/passwd ya da /etc/group tan isimle bağlantılı numarayı alarak bunu kullanır. Bazen Linux'un bu numaraları neye göre verdiğini bilmeniz gerekebilir.
Linux dağıtımları 0-99 arasındaki numaraları sistem kullanımı için olan kullanıcı ve gruplar için ayırırlar. Bunların en önemlisi 0'dır ve root kullanıcısı ve root grubuna karşılık gelir. 0-99 arasındaki tüm numaralar kullanılmaz.
100'den sonraki numaralar sıradan kullanıcı ve grupların kullanımı içindir. Ama çoğu Linux dağıtımı 500 ya da 1000'e kadar numarayı özel amaçlar için ayırabilir. Yeni hesaplar ürettiğinizde sistem sıradaki en yüksek numarayı bu hesaba atar. Eğer dağıtımınız 500'e kadar özel amaçlar için ayırmışsa oluşturacağınız kullanıcının UDI'si 500 olacaktır. Kullanıcı silindiğinde bu hesabın numarası tekrar kullanılabilir ama numaralar otomatik atandığı için arada atlamalar oluşacaktır. Eğer sisteminizde çok fazla kullanıcı yoksa ve UID gerekmiyorsa bu atlamalar sizin için çok önemli olmayacaktır. (2.2.x kernellerinde sınır 65.536, 2.4.x kernelleri ve sonrasında sınır 4.2 milyardan fazladır. Ama bu limit yapılandırma dosyasında kısıtlanabilir.) Eski kullanıcının UID'sini kullanmak eğer o kullanıcıya ait tüm dosyalar silinmediyse bir karışıklığa yol açabilir, yeni kullanıcı eski kullanıcının silinmeyen dosyalarına erişebilir.

*Genel olarak GID 100 bazı dağıtımlarda varsayılan kullanıcılar grubudur.

Aynı UID'ye sahip birden fazla kullanıcı adı oluşturmak ya da aynı GID'ye sahip birden fazla grup adı oluşturmak mümkündür. Bazı açılardan bunlar farklı kullanıcı ve gruplardır ve /etc/passwd ya da /etc/group altında farklı satırlarda yer alırlar böylece kendilerine ait home dizinleri, parolaları olabilir. Ama kullanıcı ve gruplarda aynı ID kullanıldığında dosya izinleri konusunda sistem bunlara aynıymış gibi davranır.

NOT: 0 UID'sine sahip her kullanıcı root ve bir süper kullanıcıdır.

Kullanıcı Hesaplarını Yapılandırmak

Sistemde ne kadar sıklıkla kullanıcı işlemleri yapacağınız bulunduğunuz sisteme göre değişse de bu işlemleri (ekleme, değiştirme, silme ) yapabilmek önemlidir.

Kullanıcı Eklemek

Kullanıcı eklemek useradd komutuyla gerçekleştirilir.

useradd [-c comment] [-d home-dir] [-e expire-date] [-f inactive-days]➦
[-g default-group] [-G group[,...]] [-m [-k skeleton-dir] | -M]➦
[-p password] [-s shell] [-u UID [-o]] [-r] [-n] username

-c Yorum için. Kullanıcının gerçek ismi, email adresi, telefonu vb. gibi bilgiler girilebilir.
-e YYYY-AA-GG şeklinde yazılır.

Kullanıcı Hesaplarını Değiştirmek

Kullanıcı hesapları birçok yönden değiştirilebilir: /etc/passwd gibi kritik dosyaları düzenleyebilir, hesabın home dizininde bulunan kullanıcı-spesifik dosyaları değiştirebilir ya da hesapları oluşturmak için kullanılan sistem araçlarını kullanabilirsiniz. Genelde hesaplar kullanıcının isteğine ya da yeni bir kuralı uygulamak ya da home dizinlerini yeni bir hard diske taşımak gibi sistem değişiklikleri için değiştirilir. Bazen hesaplar oluşturulduktan hemen sonra değiştirilmesi gerekebilir ve bu değişiklikler kullanıcı oluşturmada kullanılan araçlarla kolayca yapılmaz çünkü değişmeye gerek duyulmasının sebebi useradd komutunda kullanmayı unuttuğunuz bir parametre olabilir.

Parola Atamak

useradd parola atamak için -p parametresini sağlasa da bunu kullanıcıyı eklerken direkt kullanmak çok kullanışlı değildir çünkü önceden şifrelenmiş bir parolaya ihtiyaç duyar. Bu sebeple -p kullanmayarak devre dışı bırakılmış bir hesap oluşturup parolayı hesabı oluşturduktan sonra atmak daha kolaydır. Bunu passwd komutu ile gerçekleştirebilirsiniz.

passwd [-k] [-l] [-u [-f]] [-d] [-S] [username] (Detaylı kullanımı için man sayfasını incelemeniz iyi olacaktır.)

Sıradan kullanıcılar passwd komutu ile parolalarını değiştirebilirler ama çoğu passwd parametresi sadece root ken kullanılır. Özellikle -l, -u, -f, -d sıradan kullanıcıların erişemeyeceği parametrelerdir. Ayrıca sadece root passwd kullanırken bir kullanıcı adını kullanabilir. Sıradan kullanıcılar komutu çalıştırırken kullanıcı isimlerini yazmamaları gerekir, passwd komutu çalıştıran kullanıcı adının parolasını değiştirecektir. Güvenlik önlemi olarak sıradan kullanıcılar passwd komutunu çalıştırdığında passwd parolayı değiştirmeden kullanıcının eski parolasını da sorar. Bu önlem root için geçerli değildir böylece root kullanıcının eski parolasını bilmeden kullanıcıların parolasını değiştirebilir. Bu gereklidir çünkü sistem yöneticisi genelde kullanıcının parolasını bilmez. Ayrıca bu sistem yöneticisinin kullanıcı parolasını unutmuş kullanıcılara yardım etmesini sağlar.
Linux parolaları harfleri, rakamları ve noktalama işaretlerini içerebilir. Linux parolalarda küçük/büyük harf ayrımı yapar böylece güvenliği arttırmak için büyük/küçük harfli, rakamlı ve noktalama işaretli parolaları kullanabilirsiniz.

usermod'u Kullanmak

usermod özellikleri ve parametreleri ile useradd'e benzerlik gösterir. Ama bu araç yeni bir hesap oluşturmak yerine varolan hesabı değiştirmek için kullanılır. useradd ile usermod arasındaki büyük farklar şöyledir:

*usermod -d ile kullanıldığında -m parametresinin kullanılmasına da izin verir. -d parametresi dosyaları taşımadan kullanıcının home dizinini değiştirir. Bu parametreye -m eklemek usermod'un kullanıcının dosyalarının da yeni konuma taşınmasını sağlar.
*usermod -l parametresini de destekler, bu parametre kullanıcının login ismini belirtilen değerle değiştirir. Örneğin usermod tugce -l tugcesirin kullanıcının kullanıcı adını tugce'den tugcesirin'e değiştirir.
*-L ve -U seçenekleriyle kullanıcının parolasını kilitleyip açabilirsiniz. Bu seçenekler passwd tarafından sağlanan seçeneklerin aynısıdır. usermod /etc/passwd ya da /etc/shadow un içeriğini değiştirir kullanılan seçeneğe bağlı olarak. -m de kullanılırsa usermod daha önce de belirtildiği gibi kullanıcının dosyalarını taşır.

Eğer hesabın UID'sini değiştirirseniz bu hareket kullanıcının dosyalarındaki UID'leri değiştirmez. Bunun yüzünden kullanıcı bu dosyalara olan erişimini kaybedebilir. Dosyalardaki UID'leri elle güncelleyebilirsiniz chown komutunu kullanarak. Aşağıdaki komut tugce hesabınının UID'sini değiştirdikten sonra tugce kullanıcısının home dizininin sahiplik haklarını düzenler.
# chown -R tugce /home/tugce
Bu komut tugce'nin home dizininde olmayan ama sahipliği tugce'de olan dosyaları etkilemez. Eğer böyle dosyaların olduğunu düşünüyorsanız o dosyaları find komutu ile bulabilirsiniz. Ayrıca bu komut tugce hesabının home dizinindeki tüm dosyaların sahiplik hakkını değiştirir. Normalde bunun olmasında bir sakınca yoktur ama kişinin home dizininde başkasına ait dosyalarda bulunabilir.
Kullanıcıyı yeni gruplara eklerken -G komutu kullanıldığında yazılmayan herhangi bir gruptan kullanıcının çıkarılacağını unutmayın. gpasswd komutu kullanıcıyı bir ya da birden fazla gruba var olan grup üyeliklerini etkilemeden eklemek için bir yol sunar bu yüzden bu amaç için tercih edilmesi daha uygundur. (genelde)

chage'i Kullanmak

chage komutu hesabın geçerlilik süresinin ayarlanması ile ilgili ayarları içerir. Linux hesaplarını birkaç şarta bağlayarak bir geçerlilik süresi koymak mümkündür:
*Parola belirlenen sıklıkta değiştirilmediğinde
*Sistem zamanı önceden belirlenmiş bir tarihi geçtiğinde
Bu ayarlar chage aracı ile kontrol edilir.

chage [-l] [-m mindays] [-M maxdays] [-d lastday]
[-E expiredate] [-W warndays] username
[-I inactivedays]➦

Bilgileri görüntüle: -l parametresi belirtilen kullanıcı hesabının bitiş tarihini ve parolanın ne zamandır kullanıldığını gösterir.

Parola değişikliği arasında geçecek minimum zaman dilimini ayarlamak: -m parametresi parolanın değiştirilebileceği en kısa zaman aralığını belirler. 0 kullanıcının parolayı bir gün içerisinde birden fazla defa değiştirebileceğini, 1 kullanıcının parolasını günde bir değiştirebileceğini söyler. Bu rakam istenilen bir değere atanabilir.

chage -m 7 tugce

Bu komut tugce kullanıcısının parolasını en fazla 7 günde bir defa değiştirebileceğini söyler. Bu komutu kendi hesabınız için kullanmak isteseniz bile root olmanız gerekecektir yoksa chage: Permission denied. hatası ile karşılaşabilirsiniz.

Parola değişikliği arasında geçecek maksimum zamanı ayarlamak: -M parametresi parola değişikliği arasında geçen maksimum değişiklikliği ayarlar. Örneğin 30 atanırsa kullanıcı ayda bir parolasını değiştirmelidir.

Not: Kullanıcı belirlenenden önce parolasını değiştirirse bir sonraki parola değiştirme tarihi o andan itibaren hesaplanır. (Örneğin Ayda 1 değiştirilmesi gerektiğinde 17.günde değiştirilirken o günden itibaren 30 gün içinde parola tekrar değiştirilmelidir.)

Parolanın son değiştirilme tarihini atamak Bu normalde Linux tarafından otomatik olarak halledilen bir iştir ama -d parametresi ile parolanın son değiştirilme tarihini YYYY/MM/GG şeklinde değiştirebilirsiniz.

sudo chage -d 2013/12/29 tugce
chage -l tugce
Last password change                    : Dec 29, 2013


Maksimum aktif olunmayan gün sayısını atamak -I parametresi parolanın geçerliliğini kaybettiği günle hesabın devre dışı bırakılacağı günü atamak için kullanılır. Geçerliliğini kaybetmiş (expired) bir hesap kullanılamayabilir ya da kullanıcı login olarak parola değiştirmeye zorlanabilir. Devre dışı kalmış bir hesap tümüyle devre dışı kalmıştır. (disabled)

Geçerliliğin son tarihini atamak -E parametresi ile bir hesaba kesin bir geçerlilik süresi atayabilirsiniz. -E 2013/12/29 kullanıldığında hesap 29 Aralık 2013'te geçerliliğini kaybeder. -1 değeri hesabın geçerliliğini yitirmeyeceğini belirtir.

Uyarı gün sayısının atanması -W hesabın geçerliliğini kaybedeceği günden belirli bir süre önce kullanıcıyı uyarmak için kullanılır. Bunun metin modunda olan kullanıcılar için geçerli olduğunu ve GUI kullanan kullanıcıların genelde bu uyarıyı görmeyeceğini unutmayın.

chage komutu normalde sadece root tarafından kullanılabilir. Tek bir istisna -l parametresiyle kullanılmış halidir. Bu özellik sıradan kullanıcılara hesaplarının geçerlilik tarihi ile ilgili bilgi verir.

Hesap Yapılandırma Dosyalarını Direkt Değiştirmek

Kullanıcı yapılandırma dosyaları elle değiştirilebilir. /etc/passwd ve /etc/shadow bir hesabın çoğu temel özelliklerini kontrol eder. İki dosya da satır dizilerinden oluşur ve her satır bir hesaba karşılık gelir. Her satır kullanıcı adıyla başlar ve : ile ayrılmış bir dizi alanla devam eder.

tugce:x:1000:1000:Tugce,,,:/home/tugce:/bin/bash

Her alan özel bir anlama sahiptir. /etc/passwd için bu alanların anlamları şu şekildedir:

İlk alan kullanıcı adıdır.
İkinci alan genel olarak parola için ayrılmıştır. Çoğu Linux sistemi gölgelenmiş parolayı /etc/shadow altında tutar. /etc/passwd dosyasında parola x olarak gösterilir. Gölgelenmiş parola kullanmayan sistemlerde şifrelenmiş bir parola bulunur.
Üçüncü alan UID'yi içerir. (1000)
Dördüncü alan birincil grubu gösterir. (1000)
Beşinci alan yorum alanıdır. Bu alan farklı sistemlerde farklı şekillerde gösterilir. Bazı sistemler virgül ile ayırarak ek bilgileri gösterebilir.
Altıncı alan home dizininin konumudur. Son yer alan ise kullanıcının varsayılan kabuğudur. (shell) Genelde /bin/bash, /bin/tcsh ya da diğer yaygın kabuklar bulunabilir. Ama burada alışılmışın dışında da bir şey bulunabilir. Örneğin çoğu sistem bir shutdown hesabına sahiptir ve bu hesabın kabuğu /bin/shutdown dur. Kabuğu /bin/false olan kullanıcı hesapları oluşturabilirsiniz, böylece kullanıcının sıradan bir kullanıcı gibi sisteme login olmasını engelleyip diğer araçları kullanabilmesini sağlarsınız. Örneğin bu tür kullanıcılar POP ya da IMAP gibi mail protokolleri ile mail alabilirler. Bunun bir diğer çeşidi /bin/passwd kabuğudur, böylece kullanıcılar uzaktan parolalarını değiştirebilir ama bir komut kabuğu kullanarak login olamazlar.

Bu alanların hepsini elle değiştirebilirsiniz ama gölgelenmiş parolayı değiştirmemeniz iyi olacaktır; parola ile ilgili değişiklikleri passwd aracına bırakmanız daha iyi olacaktır böylece parola düzgün bir şekilde şifrelenip /etc/shadow altında depolanabilir. usermod ile ilgili değişikliklerde eğer değiştirilecek hesabın kullanıcısı sisteme login olmamışse /etc/passwd yi direkt değiştirmek en iyi seçim olacaktır.

/etc/passwd gibi /etc/shadow da elle değiştirilebilir.

Not: /etc/passwd normal kullanıcılar tarafından okunabilirken /etc/shadow root tarafından okunabilir.

tugce:gölgelenmiş parola:16068:0:99999:7:::

Buradaki satırların çoğu chage aracı ile ilgili alanlardır. Alanların anlamları şu şekildedir:

Her satır kullanıcı adıyla başlar. /etc/shadow da kullanıcının UID si bulunmaz. İkinci alan parolanın gölgelenmiş halidir. * ya da ! parolası olmayan bir hesabı işaret eder, bu hesabın kilitli olduğu ve login kabul etmediği anlamına gelir. Bu sistemin kendi hesapları için yaygındır. Sonraki alan parolanın son değiştirldiği tarihi gösterir. Bu 1 Ocak 1970'ten itibaren parolanın değiştirildiği gün sayısıdır. Sonraki alan parolanın en az kaç günde bir değiştirilebileceğini gösterir. Bizim durumumuzda bu 0 yani bir günde birden fazla defa parola değiştirilebilir. Sonraki alan parola değiştirmenin zorunlu olduğu gün sayısını gösterir.(99999 gün içinde parolamı değiştirmem gerekiyormuş mesela.) Parolanın geçersiz kalacağı günden önce uyarı verileceği gün sayısı sonraki alandadır. Buradaki örnekte görüldüğü gibi parolamın geçersiz olacağı günden 7 gün önce sistem beni uyaracak. Sonraki alanlar sırasıyla geçersiz kalma ile hesabın devre dışı bırakılacağı gün arasındaki gün sayısını, geçersiz kalacağı günü ve özel bir bayrak (flag) içerir.

Bir değerin -1 ya da 99999 olması o özelliğin devre dışı bırakıldığı anlamına gelir. /etc/shadow daki alanların usermod ya da chage ile değiştirlmesi daha uygundur çünkü bu alanları değiştirmek biraz kafa karıştırıcı olabilir. Örneğin 1 Ocak 1970'ten itibaren gün sayısını hesaplarken artık yılları unutmak gibi. Ayrıca şifrelenmiş yapısı yüzünden parola kısmını elle değiştirmek iyi olmayabilir.

Hesapları Silmek

Görünüşte hesapları silmek oldukça kolaydır. userdel komutuyla kullanıcı ile ilgili satırı /etc/passwd ve eğer sistem gölgelenmiş parola kullanıyorsa /etc/shadow un altından silebilirsiniz. userdel komutu sadece 3 parametre alır.

Kullanıcı dosyalarını sil -r ya da --remove sistemin kullanıcının mail spool u ile home dizinini silmesini sağlar.

Zorla silmek -f ya da --force parametresi -r ile birlikte kullanılarak kullanıcı sisteme login olmuş haldeyse bile hesap silinebilir. Ayrıca bu seçenek kullanıcının mail havuzu? (spool) ve home sizini başka kullanıcı tarafından da kullanılıyor olsa bile bunları silmeyi sağlar.

Yardım almak -h ya da --help parametresi userdel için kullanılabilir olan seçenekleri görüntüler.

userdel -h
Usage: userdel [options] LOGIN

Options:
  -f, --force                   force removal of files,
                                even if not owned by user
  -h, --help                    display this help message and exit
  -r, --remove                  remove home directory and mail spool


Böylece bir kullanıcıyı silmek userdel -r kullanıcı adı komutu ile oldukça basit bir şekilde yapılabilir. Eğer kullanıcının dosyalarını tutmak istiyorsanız -r parametresini kullanmayabilirsiniz. Kullanıcı silerken olası bir sorun kullanıcının kendi home dizini dışında da dosyaları olmasıdır. Bu özellikle geçici dosyaların durduğu /tmp dizininde görülür. Buradaki dosyalar belli aralıklarla silinse de kullanıcının başka dizinlerde de dosyaları bulunabilir. Bu dosyaları bulmak için find komutunu -uid parametresiyle kullanarak dosyaların konumlarını saptayabilirsiniz. (eğer hesabı henüz silmemişseniz -user parametresi de kullanılabilir.) Örneğin 1000 UIDsine sahip tugce kullanıcısına ait dosyaları bulmak için find / -uid 1000 komutu kullanılır. (/ kök dizinine işaret eder.) Sonra çıkan dosyalara bakarak hangilerini silip hangisini tutacağınıza (sahiplik izinlerini değiştirmek ya da yedeklerini almak gibi) karar verebilirsiniz. Bu dosyalarla bir şeyler yapılması mantıklıdır çünkü silinen kullanının UIDsine sahip bir kullanıcı oluşturulursa yeni kullanıcı bu dosyaların sahiplik hakkını alır, bu yeni kullanıcının dosya kotasının dolmasına ya da erişmemesi gereken dosyalara erişmesine neden olabilir.
Bazı sunucular -en bilineni Samba- kendi kullanıcı listelerini tutarlar. Eğer böyle bir sunucu çalıştırıyorsanız yapılacak en iyi şey kullanıcının ana hesabını silerken aynı zamanda sunucunun kullanıcı listesinden de çıkarmaktır. Samba için bunu yapacaksanız bunu smbpasswd dosyasını elle düzenleyerek (genelde /etc, /etc/samba ya da /etc/samba.d dizinlerinin altında bulunur) ve kullanıcının olduğu satırı silerek yapabilir ya da smbpasswd nin -x parametresini kullanarak smbpasswd -x kullanıcı adı komutuyla bunu gerçekleştirebilirsiniz.

Grupları Yapılandırmak

Linux kullanıcı hesapları için sunduğu araçların benzerlerini gruplar için de sunar. Bununla birlikte gruplar hesaplar gibi değildir bu yüzden araçların çoğu özelliği farklılık gösterir. Grupların yapılandırma dosyalarını da elle düzenleyebilirsiniz, bunlar kullanıcı hesaplarının yapılandırma dosyalarına benzer ama detaylarda değişiklik gösterirler.

Grupları Eklemek

Grup eklemek için groupadd komutu bulunur. Bu araç useradd e benzer ama daha az özelliğe sahiptir.

groupadd {-g GID [-o]] [-r] [-f] grup_adı

-g ile GID'yi belirleyebilirsiniz. -r ile 500'den düşük GID'ye sahip bir grup oluşturabilirsiniz. Bunun sebebi bazı dağıtımlarda (Red Hat gibi) 500 ve üstündeki GID'ler kullanıcıya özel gruplar için ayrılmıştır. Bütün dağıtımlar -r parametresini desteklemez. Normalde varolan bir grup ismiyle bir grup oluşturmaya çalıştığınızda  groupadd bir hata döner. -f parametresi bu hata mesajını bastırır. Bütün groupadd versiyonları bu parametreyi desteklemez.

Çoğu durumda grupları parametre belirtmeden oluşturursunuz. Böylece belirttiğiniz grup adında sistemin uygun bulduğu bir GID'ye sahip (var olan en yüksek GID'den 1 eksik) bir grup oluşturursunuz. Bunu yaptıktan sonra gruba kullanıcıları ekleyebilirsiniz.

Grup Bilgisini Değiştirme



Grup bilgileri kullanıcı bilgileri gibi bazı araçlarla ya da yapılandırma dosyasının (/etc/group) elle düzeltilmesi ile değiştirilebilir. Hesapların değiştirilmesine oranla grupların değiştirilmesinde daha az seçenek bulunur ve araçlar ile yapılandırma dosyaları hesaplara benzer. usermod grupları düzenlemek için kullanılan araçlardan biridir.

groupmod ve usermod'u Kullanmak

groupmod komutu varolan grubun ayarlarının değiştirilmesinde kullanılır.

groupmod [-g GID [-o]] [-n yeni_grup_adı] eski_grup_adı

Grubun ismi değiştirilmek istendiğinde -n parametresi kullanılır. Gruplardaki değişiklikler için yapılacak çoğu iş groupmod ile yapılmaz onun yerine usermod ile yapılır. usermod -G parametresiyle gruba kullanıcı eklenmesini sağlar.

usermod -G grup1,grup2,grup3 tugce

Bu komut tugce kullanıcısını grup1,grup2 ve grup3 gruplarının üyesi yapar. Bu işlemi yaparken kullanıcının önceki gruplarınında bu komutta yer aldığına emin olun. Kullanıcının var olan gruplarını yazmazsanız kullanıcının o grup üyelikleri silinir. Bir kullanıcının hangi gruplara üye olduğunu görmek için groups kullanıcı_adı komutunu kullanabilirsiniz. Kullanıcıyı yanlışlıkla bir gruptan çıkarmamak için sistem yöneticileri genelde bu işlemi /etc/group dosyasını bir metin editöründe düzenleyerek ya da gpasswd kullanarak yapmayı tercih eder. İki seçenekte kullanıcının üye olduğu grupları listelemeden yeni gruplara üye yapmayı sağlar.

gpasswd'yi Kullanmak

gpasswd komutu passwd'nin gruplar için olan halidir. Ayrıca gpasswd komutu diğer komut seçeneklerini ayarlamanızı sağlar, gruba yönetici atamak gibi.

Kullanılma şekli: gpasswd seçenekler grup_adı

 -a, --add user
           Belirtilen gruba kullanıcı ekler

       -d, --delete user
           Belirtilen gruptan kullanıcı siler

       -r, --remove-password
           Belirtilen grubun parolasını siler.

       -R, --restrict
           Bu komut belirtilen gruba newgrp komutuyla üyelerin katılmasını engeller.

       -A, --administrators user,...
           Root kullanıcısı bu parametreyle grup yöneticilerini atayabilir. Grup yöneticileri gruba yeni kullanıcılar ekleyip var olan kullanıcıları çıkarabilir ve grup parolasını değiştirebilir. Bu parametreyi kullanmak önceki yöneticilerin listesini siler bu sebeple eğer yöneticileri olan bir gruba yeni bir yönetici daha eklemek istiyorsanız yönetici olmasını istediğiniz bütün kullanıcıların isimlerini yazmanız gerekir.

       -M, --members user,...
           -A gibi çalışır ama yöneticiler yerine belirtilen kullanıcıları gruba ekler.

Eğer grup adı dışında hiç parametre verilmeden kullanılırsa gpasswd grubun parolasını değiştirir. Grup parolaları bir gruptaki newgrp tarafından oluşturulabilinen geçici üyeliklerin kontrol edilmesini sağlar. Grubun üyesi olmayanlar eğer grubun bir parolası varsa newgrp komutu ile geçici üye olabilirler, newgrp bir parola sorar ve doğru girildiğinde kullanıcıya geçici üyelik sağlar.
Ne yazık ki burada bahsedilen bazı özellikler bazı dağıtımlar düzgünce uygulanmamaktadır. Özellikle grup üyesi olmayanlar doğru parolayı girseler bile sistem erişim engellendi hata mesajı verir. Ayrıca -R seçeneği bazen doğru çalışmaz, birincil grupları başka bir grup olan grup üyeleri newgrp ile birincil gruplarını değiştirebilir.

Grup Yapılandırma Dosyalarını Elle Değiştirmek

Grup bilgileri birincil olarak /etc/group un altında tutulur. Hesap yapılandırma dosyaları gibi /etc/group da belirli alanlara ayrılmış satır dizilerinden oluşur, her satır bir grubu işaret eder.

sambashare:x:124:tugce

Her alan : ile ayrılmıştır. İlk alan grup adıdır. İkinci alanda grup parolası bulunur. 3. alan grup ID'si son alanda gruba ait olan kullanıcıların isimleridir. Birden fazla kullanıcı varsa bunlar virgül ile ayrılırlar.

Grupları Silmek

Gruplar groupdel komutu ile silinir, bu komut tek bir parametre alır: grup adı. Ayrıca /etc/group dosyasını değiştirerek bir grubu silebilirsiniz. (eğer varsa /etc/gshadow dan da silmelisiniz) Genelde groupdel'i kullanmak daha iyidir çünkü groupdel silinen grubun herhangi bir kullanıcının birincil grubu olup olmadığını kontrol eder. Eğer grup bir kullanıcının birincil grubuysa groupdel bu grubu silmeyi reddeder, bu durumda bahsi geçen kullanıcının birincil grubunu değiştirmeli ya da kullanıcının hesabının silmeniz gerekir.
Kullanıcılar silindiğinde olduğu gibi grupların silinmesi de bazı dosyaları geride bırakır. Bunları find komutu ile bulabilirsiniz. find / -gid 1000 gibi. Bu dosyaları bulduğunuzda bunlarla ne yapacağınıza karar vermeniz gerekir. Bazı durumlarda bu dosyaları bırakmak ani sorunlara yol açmaz ama GID tekrar kullanılırsa karışıklığa ve güvenlik açıklarına neden olabilir. Bu yüzden bu dosyaları silmek ya da sahipliğini chown ya da chgrp komutuyla değiştirmek gerekir.

Hiç yorum yok:

Yorum Gönder