Linux İşletim Sistemlerinde Kullanıcı ve Grup Yönetimi Yapılandırması

LinuxAll

Bu makalemizde “Linux İşletim Sistemlerinde Kullanıcı ve Grup Yönetimi Yapılandırması” konusunu inceleyeceğiz. Linux işletim sistemleri çok kullanıcılı (multiuser) işletim sistemi olarak tasarlanmıştır. Bunun yanı sıra Linux işletim sistemleri üzerinde çalışan uygulamaların bir çoğuda, sistemle etkileşime geçmek ve işlemleri yürütmek için kullanıcılar oluştururlar. Örneğin Oracle veritabanı sunucusunun “oracle” adında bir kullanıcısı mevcuttur. Bununla birlikte sistemde oluşturulan her bir kullanıcı adıyla birlikte birde, bu kulanıcı adına uygun bir de grup oluşturulur. Varsayılan ayar olarak kullanıcılar kendi isimlerine uygun gruplara üye yapılırlar. Çeşitli görevleri yerine getirmek için kullanıcılardan bağımsız gruplar da oluşturulabilir. Daha sonra bu gruplara belirli kullanıcılar üye olabilirler. Kullanıcılar ve gruplar, dosyaların ve dizinlerin sahipliğini alabilirler. Dosya ve dizinlerin sahipleri bu belirli dizinlere erişim için tam yetkili olurlar. Dosya ve dizin erişimlerini kavrayabilmek için sistem idaresinin en temel işi olan kullanıcı ve grup yönetimini anlamak gerekir.

A-) Grupların Yönetimi

Grupları yönetmek için “groupadd”, “groupmod” ve “groupdel” komutları kullanılır. Bu komutlar “/etc/group” dosyasını işler. Kullanıcı yönetiminde olduğu gibi eğer “shadow” şifreleme kullanılıyorsa parolalar “/etc/gshadow” dosyasında tutulur. Gruplar içlerinde bir çok kullanıcıyı barındırabilirler. Yeni bir grup oluşturmak için groupadd komutunu kullanırız.

1. Grup yaratma işlemleri için aşağıdaki komutları kullanabiliriz.

-- Grup oluşturmak için "groupadd" komutu kullanılmalıdır.

# groupadd dba

-- Oluşturulan bir grubu sorgulamak ve bilgilerini öğrenmek için aşağıdaki komutu
kullanabiliriz.

# cat /etc/group | grep dba
dba:x:500:

-- Grup oluştururken GID ataması yapmak istiyorsak aşağıdaki komutla ID atayarak
grup yaratabiliriz.

# groupadd -g 1000 dba

2. Mevcut bir grup üzerinde değişiklik yapmak için aşağıdaki komutları kullanabiliriz.

-- Mevcut bir grup üzerinde değişiklik yapmak için aşağıdaki komutu kullanabiliriz.

-- Mevcut bir grubun id'sini değiştirmek için

# groupmod -g 2000 dba

-- Mevcut bir grubun ismini değiştirmek için

# groupmod -n yeni_dba dba

3. Bir gruba kullanıcı eklemek veya çıkartmak için aşağıdaki komutları kullanabiliriz. Ayrıca bir gruba parola atayabiliriz. Bu parola ile kullanıcılar gruba eklenmeye çalışıldığında sistem atanmış parolayı soracaktır. Bu parola girilmeden bir kullanıcı o gruba üye olamayacaktır.

-- Kullanıcıyı gruba üye yapmak için

# gpasswd -a koraykey dba

-- Kullanıcıyı gruptan çıkartmak için

# gpasswd -d koraykey dba

-- Bir gruba parola atamak için

# gpasswd dba
Changing the password for group oinstall
New Password: **********
Re-enter new password: **********

-- Bu işlemden sonra örneğin "oracle" kullanıcısı ile sisteme bağlıyken
"root" kullanıcısına geçmeden bir gruba üye olabilmek için

$ newgrp oinstall
Password: **********

4. Grupları silmek için aşağıdaki komutları kullanabiliriz.

-- Bir grubu silmek için

# groupdel yeni_dba

5. Kullandığımız komutların işimize yarayacak parametrelerini inceleyebiliriz.

-- groupadd komutunun parametrelerini incelemek için

# groupadd --help

Usage: groupadd [options] GROUP

Options:
  -f, --force                   exit successfully if the group already exists,
                                and cancel -g if the GID is already used
  -g, --gid GID                 use GID for the new group
  -h, --help                    display this help message and exit
  -K, --key KEY=VALUE           override /etc/login.defs defaults
  -o, --non-unique              allow to create groups with duplicate
                                (non-unique) GID
  -p, --password PASSWORD       use this encrypted password for the new group
  -r, --system                  create a system account

-- groupmod komutunun parametrelerini incelemek için

# groupmod --help
Usage: groupmod [options] GROUP

Options:
  -g, --gid GID                 change the group ID to GID
  -h, --help                    display this help message and exit
  -n, --new-name NEW_GROUP      change the name to NEW_GROUP
  -o, --non-unique              allow to use a duplicate (non-unique) GID
  -p, --password PASSWORD       change the password to this (encrypted)
                                PASSWORD

-- gpasswd komutunun parametrelerini incelemek için

# gpasswd
Usage: gpasswd [option] GROUP

Options:
  -a, --add USER                add USER to GROUP
  -d, --delete USER             remove USER from GROUP
  -r, --remove-password         remove the GROUP's password
  -R, --restrict                restrict access to GROUP to its members
  -M, --members USER,...        set the list of members of GROUP
  -A, --administrators ADMIN,...
                                set the list of administrators for GROUP
Except for the -A and -M options, the options cannot be combined.

-- groupdel komutunun parametresi bulunmamaktadır. Kullanımı aşağıdaki gibidir.

# groupdel
Usage: groupdel group

B-) Kullanıcıların Yönetimi

Kullanıcı yönetimi için kullanılan komutlar “useradd” , “usermod” ve “userdel” dir. Bu komutlar “/etc/passwd” dosyasında girdiler oluşturur ve bu girdileri düzenler. “passwd” ve “shadow” dosyaları hakkında ayrıntılı açıklamayı yazımızın devamında bulabileceksiniz.

1. Kullanıcı yaratmak için aşağıdaki komutları kullanabiliriz.

-- Yeni kullanıcı yaratmak için

# useradd koraykey

-- Yeni kullanıcı yaratırken uid ve üye olacağı grubu belirleyerek yaratmak için

# useradd koraykey -u 600 -g dba

Bu işlemle "koraykey" isimli bir kullanıcı oluşturduk, "uid 600" olarak atadık ve
bu kullanıcıyı "dba" grubuna üye yaptık.

2. Yarattığımız kullanıcıya veya varolan bir kullanıcıya parola atamak için aşağıdaki komutu kullanabiliriz.

-- Yeni yarattığımız veya varolan bir kullanıcının parolasını belirlemek için

# passwd oracle

Changing password for user oracle.
New password: **********
Retype new password: **********
passwd: all authentication tokens updated successfully.

3. Kullanıcı hesapları üzerinde değişiklik yapmak için aşağıdaki komutları kullanabiliriz.

-- Mevcut bir kullanıcının uid'si ve grubunu değiştirmek için

# usermod -u 601 -g users koraykey

-- usermod komutunda sık kullanılabilecek parametrelerimiz aşağıdaki gibidir.

-p parola 	Bir parola ayarlar..
-s kabuk 	Bir kabuk Varsayılan durumda BASH dir.
-g grup_adı 	Bir grup ayarlar
-c yorum 	Hesap ile ilgili yorum ekler.
-u kul_id 	Kullanıcının id numarasını ayarlar.
-e aa/gg/yy 	Hesap için bir dolum süresi ayarlar . Varsayılan durumda
		kullanılmaz.
-f gün		Hesap süresi dolduktan sonra bir hesabın daha kaç gün aktif
		kalacağını belirler.

4. Varolan bir kullanıcıyı sistemden silmek için aşağıdaki komutları kullanabiliriz.

-- Kullanıcıyı sistemden silmek için

# userdel koraykey

-- Kullanıcıyı ve home dizinini sistemden silmek için

# userdel -r koraykey

5. Sistemdeki bir kullanıcıyı kilitlemek veya açmak için aşağıdaki komutları kullanabiliriz.

-- Kullanıcı hesabını kilitlemek için

# usermod -L koraykey

-- Kullanıcı hesabını açmak için

# usermod -U koraykey

6. Kullanıcı ilkelerini (parola süresi vb.) belirlemek için aşağıdaki komutları kullanabiliriz.

-- Sistemdeki bir kullanıcının ilkelerini sorgulamak için

# chage -l koraykey
Last password change                                    : Jun 05, 2013
Password expires                                        : never
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 0
Maximum number of days between password change          : 99999
Number of days of warning before password expires       : 7

-- Sistemdeki bir kullanıcının parola süresinin belli bir tarihte dolması için
(YYYY/AA/GG)

# chage –E 2013/10/22 koraykey

-- Sistemdeki bir kullanıcının 30 günde bir değiştirilmesi ve 30 günün dolmasına
5 gün kala uyarı vermesi için

# chage -M 30 -W 5 koraykey

-- Bir kullanıcının parolasının hemen değiştirilmeye zorlanması için

# chage -d 0 koraykey

7. Kullanıcılar arası geçiş işlemini (switch user) aşağıdaki komutlarla yapabiliriz.

-- Root kullanıcısından başka bir kullanıcıya geçme için

[root@koraykey-lnx ~]# su - oracle

[oracle@koraykey-lnx ~]$

-- Oracle vb. kullanıcıdan "root" kullanıcısına geçmek için

[oracle@koraykey-lnx ~]$ su -
Password: **********
[root@koraykey-lnx ~]# 

-- Bir yönetici hesabından diğer bir kullanıcıya geçerken bizden parola
sormayacaktır. Ancak bir kullanıcıdan bir yönetici hesabına geçmek için 
yönetici hesabının parolasını bilmemiz gerekmektedir.

C-) Kullanıcı ve Grup Yönetiminde Sistemin Kullandığı Yapılandırma Dosyaları

1. Kullanıcı işlemlerinde kullandığımız dosyalardan biri “passwd” dosyasıdır. Bu dosya kullanıcıların ve kullanıcılara ait birçok özelliğin daha tutulduğu bir dosyasıdır. Kullanıcı ve bu özellikler tek satırlık kayıtlar halinde tutulur ve bu satırlardaki herbir özellik “:” işareti ile ayrılır.

-- Dosyamızı düzenlemek veya içeriğine bakmak için editör yardımıyla açabiliriz.

# vim /etc/passwd

-- Dosyamızda belli bir kullanıcının bilgilerini görmek için

# cat /etc/passwd | grep koraykey

koraykey:x:98765:98765::/home/koraykey:/bin/bash

2. Kullanıcı işlemlerinde kullandığımız dosyalardan biri “shadow” dosyasıdır. Passwd dosyası bir metin dosyasıdır ve fazla güvenilir değildir. Bu dosyaya ulaşan bir kişi bu dosyadaki şifreleri değiştirebilir yada çözebilir. Linux dağıtımlarının bir çoğu “shadow” güvenliği ile birlikte gelir. Shadow güvenliği parolaları “/etc/shadow” adlı bir dosyada saklar. Parolaları bu dosyaya yazmadan önce, üst düzey algoritmalar kullanarak bu parolaları şifreler. Bu fonksiyon MD5-tabanlı olarak maksimum 34 karakterlik bir şifre üretir. Üretilen karakter katarı $1$ ile başlar ve bundan sonra gelebilecek maksimum 8 karakterlik kısımda da salt değeri yer alır. Salt değeri $ ile son bularak daha sonra gelen 22 karakter ile katar tamamlanır.

-- Katarın yapısı şu şekildedir

$1$<maksimum_sekiz_karakterlik_salt_değeri>$<yirmi_iki_karakterlik_kullanıcı_parolası>

3. Kullanıcı işlemlerinde sistemin kullandığı “/etc/skel” dizini bir kullanıcı eklediğimizde bu kullanıcı için oturum açma, kapatma ve başlangıç dosyalarının bir kopyasını temin etmemiz gerekir. Bu dosyalar “.bash_profile”, “bashrc” ve “.bash_logout” dosyalarıdır. Sisteme bir kullanıcı eklediğimizde useradd komutu bu dosyaları “/etc/skel” dizininden kullanıcının ana dizinine kopyalar. Sistem yöneticisi olarak , bu dosyaları dilediğimiz şekilde değiştirebiliriz. Kullanıcıların home dizinlerinde oluşturulmasını istediğimiz dosyaları ve dizinleri “/etc/skel” klasörü altında oluşturmamız yeterli olacaktır.

-- "/etc/skel" dizinini sorgulamak için

# ls -al /etc/skel

-- Örneğin bir kullanıcı yarattığımızda atayacağımız sistem değişkenlerinin yeni
kullanıcıya kopyalanması için

# vim /etc/skel/.bash_profile

dosyasını açarak içerisine atayacağımız değişkenleri yazabiliriz.

-- Örneğin sistemimizde Oracle Veritabanı kurulu ve bu değişkenlerin kullanıcıya
atanmasını istiyorsak aşağıdaki gibi değişkenlerimizi bu dosyaya yazabiliriz.
Bu şekilde yeni kullanıcı oluşturduğumuzda profil dosyasına bu değişkenler otomatik
gelecektir.

# Oracle Environment

ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0.3/db; export ORACLE_HOME
ORACLE_SID=orcl; export ORACLE_SID
PATH=$ORACLE_HOME/bin:$PATH; export PATH

4. Kullanıcı ve grup yaratırken kullandığımız “/etc/login.defs” dosyasında “useradd” ve “groupadd” komutlarının kullandığı değerler bu dosyada saklanır. Genel olarak kullanıcı parola politikaları , en küçük ve en büyük kullanıcı ve grup tanımlayıcısı değerleri, “qmail” dizinleri ve kullanıcılar kaldırılırken çalıştırılacak komutlar bu dosyada yer alır.

-- Kullanıcı veya grup yarattığımızda bu ilkeler aşağıdaki dosyada bulunan
parametreler kullanılarak oluşturulur. Eğer varsayılan olarak bir kullanıcı
veya grup yaratıldığında parametrelerin isteğimize göre atanmasını istiyorsak
bu dosyada değiştireceğimiz ilkeleri belirlememiz gerekir. Burada değişiklik
yapıldıktan sonra bir kullanıcı veya grup yaratıldığında ayarladığımız değişkenler
etkin olur.

# vim /etc/login.defs

-- Dosyasını açıp aşağıdaki değişkenleri ayarlayabiliriz.

# Please note that the parameters in this configuration file control the
# behavior of the tools from the shadow-utils component. None of these
# tools uses the PAM mechanism, and the utilities that use PAM (such as the
# passwd command) should therefore be configured elsewhere. Refer to
# /etc/pam.d/system-auth for more information.
#

# *REQUIRED*
#   Directory where mailboxes reside, _or_ name of file, relative to the
#   home directory.  If you _do_ define both, MAIL_DIR takes precedence.
#   QMAIL_DIR is for Qmail
#
#QMAIL_DIR      Maildir
MAIL_DIR        /var/spool/mail
#MAIL_FILE      .mail

# Password aging controls:
#
#       PASS_MAX_DAYS   Maximum number of days a password may be used.
#       PASS_MIN_DAYS   Minimum number of days allowed between password changes.
#       PASS_MIN_LEN    Minimum acceptable password length.
#       PASS_WARN_AGE   Number of days warning given before a password expires.
#
PASS_MAX_DAYS   99999
PASS_MIN_DAYS   0
PASS_MIN_LEN    5
PASS_WARN_AGE   7

#
# Min/max values for automatic uid selection in useradd
#
UID_MIN                   500
UID_MAX                 60000

#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN                   500
GID_MAX                 60000

#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD    /usr/sbin/userdel_local

#
# If useradd should create home directories for users by default
# On RH systems, we do. This option is overridden with the -m flag on
# useradd command line.
#
CREATE_HOME     yes

# The permission mask is initialized to this value. If not specified, 
# the permission mask will be initialized to 022.
UMASK           077

# This enables userdel to remove user groups if no members exist.
#
USERGROUPS_ENAB yes

# Use SHA512 to encrypt password.
ENCRYPT_METHOD SHA512 

5. Grup işlemlerinde kullandığımız dosyalardan biri “group” dosyasıdır. “/etc/group” dosyasına girdiler “groupadd”, “groupmod”, ve “groupdel” komutları ile işlenir. Kullanıcıların tutulduğu /etc/passwd dosya yapısına çok benzemektedir. Herbir grup ve özellikleri bir satırda tanımlanır. Özellikler “:” işareti ile birbirinden ayrılmaktadır. Özelliklerden ilk alan grup adını tanımlar. İkinci alanda ise parolalar tutulur. Eğer shadow şifreleme etkinleştirilmişse parolalar bu dosya yerine “/etc/gshadow” dosyasında tutulur. Üçüncü alan ise grup tanımlayıcılarının tutulduğu alandır. Son alan ise grup üyelerinden oluşur.

-- Dosyamızı düzenlemek veya içeriğine bakmak için editör yardımıyla açabiliriz.

# vim /etc/group

-- Dosyamızda belli bir grup bilgilerini görmek için

# cat /etc/group | grep dba
dba:x:54322:oracle

D-) Dosya ve Dizin Erişimlerinin Atamaları

Kullanıcılar ve gruplar kullanılarak dosyaların ve dizinlerin erişimlerini sınırlandırılabilir. Her kullanıcı kendi sahibi olduğu dosyalarda bu işlemleri gerçekleştirebilir. Root kullanıcısı ise tüm dosya ve dizinlerin sahipliklerini ve izinlerini değiştirebilir. Linux dosya yapısına göre her dosyanın veya dizinin bir sahibi birde grubu bulunur. Bir dosyanın sahibi(owner) o dosya veya dizin üzerinde her türlü değişiklik yetkisine sahip olur. Dosyayı veya dizini yeniden adlandırabilir, izinlerini değiştirebilir ve silebilir. Bir dosya veya dizinin sahipliği “chown” komutu ile değiştirilir.

1. Bir dizinin sahipliğini bir kullanıcıya atamak için aşağıdaki komutları kullanabiliriz.

-- Bir dizinin sahipliğini değiştirmek için

# chown root /oracle

-- Bir dizinin ve içerisindeki dosyaların sahipliğini değiştirmek için

# chown -R root /oracle

2. Bir dizinin sahipliğini bir gruba atamak için aşağıdaki komutları kullanabiliriz.

-- Bir dizinin sahipliğini değiştirmek için

# chgrp oinstall /oracle

-- Bir dizinin ve içerisindeki dosyaların sahipliğini değiştirmek için

# chgrp -R root /oracle

3. Bir dosya veya dizin üzerinde izinleri ayarlamak için “chmod” komutu kullanılır. Kullanıcılar için “u”, gruplar için “g”, diğerleri için “o”, herkes için “a”, okuma izni için “r”, yazma izni için “w” çalıştırma izni için “x” sembolleri kullanılır. Komutun kullanımı ile ilgili aşağıda bazı örnekler verilmiştir.

-- Aşağıdaki komut ile oracle dizininin grubuna ve diğerlerine okuma ve dizin
arama izni veriliyor.

# chmod go+rx /oracle

4. Örnek olarak sistemimizde Oracle veritabanı kuracağımızı düşünelim. Oracle kullanıcımızı ve üye olacağı grupları , kurulum dizinlerimizi yaratıp “oracle” kullanıcısına bu dizinler üzerinde gerekli hakları verelim.

-- Oracle kullanıcısının üye olacağı grupları yaratıyoruz.

# groupadd oinstall
# groupadd dba

-- Oracle kullanıcısını dba ve oinstall grubuna üye yaparak yaratıyoruz.
Burada oracle kullanıcımızın birincil grubu "oinstall" olacaktır.

# useradd -g oinstall -G dba oracle

-- Sistemimizde "oracle" kullancısı varsa o zaman sadece yarattığımız gruplara
üye yapıyoruz.

# usermod -g oinstall -G dba oracle

-- Oracle kullanıcımız için bir parola atıyoruz.

# passwd oracle

Changing password for user oracle.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.

-- Oracle veritabanı kurulumu için dizinlerimizi yaratıyoruz.

# mkdir -p /u01/app/oracle/product/11.2.0.3/db

-- Yarattığımız dizinlerin sahibini oracle kullanıcısı olarak değiştiriyoruz.

# chown -R oracle:oinstall /u01

-- Yarattığımız dizinlerde oinstall grubu için okuma, yazma, değiştirme,
silme ve çalıştırma izinlerini veriyoruz.

# chmod -R 775 /u01/

-- Oracle 11.2.0.2.0 versiyonundan sonra ayrı bir dizine kurulum
yapılarak upgrade etme imkanı getirdi. Yani mevcut oracle dizinleri
haricinde bir dizine kurulum yapılarak mevcut dizinleri bozmadan
yükseltme imkanımız oluyor bu yüzden dizinler oluşturulurken
"/u01/app/oracle/product/11.2.0.3/db" gibi versiyon isimlerinide koydum
yeni bir versiyon çıktığında yükseltme işlemi yapılırken
"/u01/app/oracle/product/11.2.0.4/db" gibi dizin yaratarak mevcut
dizinlere dokunmadan upgrade işlemini yapabiliriz.

E-) Kullanıcı ve Grupları Grafik Arayüzden (gui) Yönetmek

İşletim sistemimizde kullanıcı ve grupları yönetmek için bir konsol bulunmaktadır. Bu konsola erişmek için “System>Administration>Users and Groups” aracını çalıştırmamız yeterlidir.

UsrandGrp

Bu makalemizde “Linux İşletim Sistemlerinde Kullanıcı ve Grup Yönetimi Yapılandırması”nı ve kullanıcı ile grupların dosya ve dizinlere izin vermek için nasıl atandığını inceledik. Linux işletim sistemlerinde kullanıcılar ve gruplar için “LDAP” kullanılabilir ve bir “Microsoft Windows Active Directory” dizin hizmetinden kimlik doğrulama işlemi yapılmak üzere ayarlanabilir. Bununla ilgili “Linux İşletim Sistemlerinde Kerberos ile Kimlik Doğrulama” makalemizi inceleyebilirsiniz.

Başka bir makalede görüşmek üzere…

Bu yazı Unix / Linux kategorisine gönderilmiş ve , , , , , , , , , , , , , , , , , , , ile etiketlenmiş. Kalıcı bağlantıyı yer imlerinize ekleyin.