Kullanıcıları ve Grupları, Dosya İzinlerini ve Niteliklerini Yönetme ve Hesaplarda Sudo Erişimini Etkinleştirme - Bölüm 8


Geçtiğimiz Ağustos ayında, Linux Vakfı, amacı bireylerin her yerde ve her yerde sınava girmelerine olanak sağlamak amacıyla yepyeni bir program olan LFCS sertifikasyonunu (Linux Foundation Certified Sysadmin) başlattı. Çalışan sistemlerin ve hizmetlerin desteklenmesinin yanı sıra genel izleme ve analizin yanı sıra sorunları daha üst düzeydeki destek ekiplerine iletmenin ne zaman gerekli olduğuna karar verebilmek için akıllı karar almayı da içeren Linux sistemleri için temel ila orta düzey operasyonel destek konusunda sertifika alın.

Lütfen Linux Temel Sertifikasyon Programına girişi açıklayan aşağıdaki videoya hızlıca göz atın.

Bu makale, 10 öğretici uzun serinin 8. Bölümüdür, bu bölümde, LFCS sertifika sınavı için gerekli olan Linux sistemindeki kullanıcı ve grup izinlerini nasıl yöneteceğiniz konusunda size rehberlik edeceğiz.

Linux çok kullanıcılı bir işletim sistemi olduğundan (farklı bilgisayarlarda veya terminallerde birden fazla kullanıcının tek bir sisteme erişmesine izin verir), etkili kullanıcı yönetimini nasıl gerçekleştireceğinizi bilmeniz gerekir: nasıl eklenir, düzenlenir, askıya alınır veya silinir kullanıcı hesapları ve onlara atanan görevleri yerine getirmeleri için gerekli izinlerin verilmesi.

Kullanıcı Hesapları Ekleme

Yeni bir kullanıcı hesabı eklemek için aşağıdaki iki komuttan birini root olarak çalıştırabilirsiniz.

adduser [new_account]
useradd [new_account]

Sisteme yeni bir kullanıcı hesabı eklendiğinde aşağıdaki işlemler gerçekleştirilir.

1. Onun ana dizini oluşturulur (varsayılan olarak /home/kullanıcı adı).

2. Aşağıdaki gizli dosyalar kullanıcının ana dizinine kopyalanır ve kullanıcının kullanıcı oturumu için ortam değişkenleri sağlamak üzere kullanılır.

.bash_logout
.bash_profile
.bashrc

3. /var/spool/mail/kullanıcı adı adresinde kullanıcı için bir posta biriktiricisi oluşturulur.

4. Bir grup oluşturulur ve yeni kullanıcı hesabıyla aynı adı alır.

/etc/passwd'yi anlama

Hesap bilgilerinin tamamı /etc/passwd dosyasında saklanır. Bu dosya, sistem kullanıcı hesabı başına bir kayıt içerir ve aşağıdaki formata sahiptir (alanlar iki nokta üst üste ile sınırlandırılmıştır).

[username]:[x]:[UID]:[GID]:[Comment]:[Home directory]:[Default shell]
  1. [kullanıcı adı] ve [Yorum] alanları açıklayıcı niteliktedir.
  2. İkinci alandaki x, hesabın [kullanıcıadı] olarak oturum açmak için gerekli olan gölgeli bir parolayla (/etc/shadow içinde) korunduğunu belirtir. .
  3. [UID] ve [GID] alanları, sırasıyla Kullanıcı Kimliğini ve [kullanıcı adı]'nın ait olduğu birincil Grup Kimliğini temsil eden tam sayılardır .
  4. [Ana dizin], [kullanıcı adı]'nın ana dizinine giden mutlak yolu belirtir ve
  5. [Varsayılan kabuk], sisteme giriş yaptığında bu kullanıcıya sunulacak olan kabuktur.
/etc/group'u anlama

Grup bilgileri /etc/group dosyasında saklanır. Her kayıt aşağıdaki formata sahiptir.

[Group name]:[Group password]:[GID]:[Group members]
  1. [Grup adı] grubun adıdır.
  2. [Grup şifresi] içindeki x, grup şifrelerinin kullanılmadığını gösterir.
  3. [GID]: /etc/passwd'dekiyle aynı.
  4. [Grup üyeleri]: [Grup adı] üyesi olan kullanıcıların virgülle ayrılmış listesi.

Bir hesap ekledikten sonra, usermod'un temel sözdizimi aşağıdaki gibi olan usermod komutunu kullanarak aşağıdaki bilgileri (birkaç alanı adlandırmak için) düzenleyebilirsiniz.

usermod [options] [username]
Bir hesabın son kullanma tarihini ayarlama

–expiredate işaretini ve ardından YYYY-AA-GG biçiminde bir tarih kullanın.

usermod --expiredate 2014-10-30 tecmint
Kullanıcıyı ek gruplara ekleme

Birleştirilmiş -aG veya –append –groups seçeneklerini ve ardından virgülle ayrılmış grup listesini kullanın.

usermod --append --groups root,users tecmint
Kullanıcının ana dizininin varsayılan konumunu değiştirme

-d veya –home seçeneklerini ve ardından yeni ana dizine giden mutlak yolu kullanın.

usermod --home /tmp tecmint
Kullanıcının varsayılan olarak kullanacağı kabuğu değiştirme

–shell'i ve ardından yeni kabuğa giden yolu kullanın.

usermod --shell /bin/sh tecmint
Kullanıcının üyesi olduğu grupları görüntüleme
groups tecmint
id tecmint

Şimdi yukarıdaki komutların tümünü tek seferde çalıştıralım.

usermod --expiredate 2014-10-30 --append --groups root,users --home /tmp --shell /bin/sh tecmint

Yukarıdaki örnekte tecmint kullanıcı hesabının son kullanma tarihini 30 Ekim 2014 olarak ayarlayacağız. Hesabı ayrıca kök ve kullanıcılar grubuna da ekleyeceğiz. Son olarak sh'yi varsayılan kabuk olarak ayarlayacağız ve ana dizinin konumunu /tmp olarak değiştireceğiz:

Ayrıca Okuyun:

  1. 15 useradd Linux'ta Komut Örnekleri
  2. Linux'ta 15 usermod Komut Örneği

Mevcut hesaplar için aşağıdakileri de yapabiliriz.

Şifreyi kilitleyerek hesabı devre dışı bırakma

Kullanıcının şifresini kilitlemek için -L (büyük L harfi) veya –lock seçeneğini kullanın.

usermod --lock tecmint
Kullanıcı şifresinin kilidini açma

Daha önce engellenen bir kullanıcının şifresinin kilidini açmak için –u veya –unlock seçeneğini kullanın.

usermod --unlock tecmint

Birden fazla kullanıcının erişmesi gereken dosyalara okuma ve yazma erişimi için yeni bir grup oluşturma

Hedefe ulaşmak için aşağıdaki komut dizisini çalıştırın.

groupadd common_group # Add a new group
chown :common_group common.txt # Change the group owner of common.txt to common_group
usermod -aG common_group user1 # Add user1 to common_group
usermod -aG common_group user2 # Add user2 to common_group
usermod -aG common_group user3 # Add user3 to common_group
Grubu silme

Aşağıdaki komutla bir grubu silebilirsiniz.

groupdel [group_name]

group_name'e ait dosyalar varsa, bunlar silinmeyecek ancak grup sahibi, silinen grubun GID'sine ayarlanacak.

Linux Dosya İzinleri

Bu serinin Arşivleme Araçları ve Dosya Niteliklerini Ayarlama – Bölüm 3'te tartıştığımız temel okuma, yazma ve yürütme izinlerinin yanı sıra, bazen "özel" olarak adlandırılan, daha az kullanılan (ancak daha az önemli olmayan) başka izin ayarları da vardır. izinler ”.

Daha önce tartışılan temel izinler gibi, bunlar da sekizli bir dosya kullanılarak veya izin türünü belirten bir harf (sembolik gösterim) aracılığıyla ayarlanır.

Kullanıcı hesaplarının silinmesi

userdel komutunu –remove ile birlikte kullanarak bir hesabı (kullanıcıya aitse ana dizini ve içinde bulunan tüm dosyaları ve ayrıca posta biriktiricisiyle birlikte) silebilirsiniz. seçeneğini seçin.

userdel --remove [username]

Grup yönetimi

Sisteme her yeni kullanıcı hesabı eklendiğinde, tek üyesi kullanıcı adı olan aynı isimde bir grup oluşturulur. Gruba daha sonra başka kullanıcılar da eklenebilir. Grupların amaçlarından biri, dosyalara ve diğer sistem kaynaklarına, bu kaynaklar üzerinde doğru izinleri ayarlayarak basit bir erişim kontrolü uygulamaktır.

Örneğin aşağıdaki kullanıcılara sahip olduğunuzu varsayalım.

  1. kullanıcı1 (birincil grup: kullanıcı1)
  2. kullanıcı2 (birincil grup: kullanıcı2)
  3. kullanıcı3 (birincil grup: kullanıcı3)

Hepsinin, yerel sisteminizde bir yerde bulunan common.txt adlı bir dosyaya veya belki de bir ağ paylaşımında bulunan bir dosyaya okuma ve yazma erişimine ihtiyacı vardır. kullanıcı1 oluşturdu. Şunun gibi bir şey yapmaya cazip gelebilirsiniz:

chmod 660 common.txt
OR
chmod u=rw,g=rw,o= common.txt [notice the space between the last equal sign and the file name]

Ancak bu, yalnızca dosyanın sahibine ve dosyanın sahibi grubunun üyesi olan kullanıcılara (kullanıcı1<) okuma ve yazma erişimi sağlayacaktır. bu durumda). Yine, kullanıcı2 ve kullanıcı3kullanıcı1 grubuna eklemek isteyebilirsiniz, ancak bu aynı zamanda onlara sahip olunan geri kalan dosyalara da erişim sağlayacaktır. kullanıcı1 kullanıcısına ve kullanıcı1 grubuna göre.

Grupların işe yaradığı yer burasıdır ve böyle bir durumda yapmanız gerekenler aşağıda açıklanmıştır.

Setuid'i Anlamak

Yürütülebilir bir dosyaya setuid izni uygulandığında, programı çalıştıran kullanıcı, program sahibinin etkin ayrıcalıklarını devralır. Bu yaklaşım makul ölçüde güvenlik endişelerini artırabileceğinden, setuid iznine sahip dosyaların sayısı minimumda tutulmalıdır. Bir sistem kullanıcısının root'a ait bir dosyaya erişmesi gerektiğinde muhtemelen bu izin setine sahip programlar bulacaksınız.

Özetle, bu sadece kullanıcının ikili dosyayı çalıştırabilmesi değil, aynı zamanda bunu root ayrıcalıklarıyla da yapabilmesidir. Örneğin, /bin/passwd izinlerini kontrol edelim. Bu ikili, bir hesabın şifresini değiştirmek için kullanılır ve /etc/shadow dosyasını değiştirir. Süper kullanıcı herhangi birinin şifresini değiştirebilir, ancak diğer tüm kullanıcılar yalnızca kendi şifrelerini değiştirebilmelidir.

Bu nedenle, herhangi bir kullanıcının /bin/passwd'yi çalıştırma izni olması gerekir, ancak yalnızca root bir hesap belirtebilir. Diğer kullanıcılar yalnızca kendilerine ait şifreleri değiştirebilirler.

Setgid'i Anlamak

setgid biti ayarlandığında, gerçek kullanıcının etkin GID'si grup sahibininki olur. Böylece herhangi bir kullanıcı, o dosyanın grup sahibine verilen ayrıcalıklar kapsamında bir dosyaya erişebilir. Ayrıca, bir dizinde setgid biti ayarlandığında, yeni oluşturulan dosyalar dizinle aynı grubu miras alır ve yeni oluşturulan alt dizinler de üst dizinin setgid bitini devralır. Dosya sahibinin birincil grubundan bağımsız olarak, belirli bir grubun üyelerinin bir dizindeki tüm dosyalara erişmesi gerektiğinde büyük olasılıkla bu yaklaşımı kullanacaksınız.

chmod g+s [filename]

setgid değerini sekizlik biçimde ayarlamak için, geçerli (veya istenen) temel izinlerin başına 2 sayısını ekleyin.

chmod 2755 [directory]
SETGID'yi bir dizinde ayarlama

Yapışkan Bit'i Anlamak

Dosyalarda "yapışkan bit" ayarlandığında, Linux bunu yok sayar; oysa dizinler için bu, dizinin sahibi olmadığı sürece kullanıcıların içerdiği dosyaları silmelerini ve hatta yeniden adlandırmalarını engelleme etkisine sahiptir. dosya veya köktür.

chmod o+t [directory]

Yapışkan biti sekizlik biçimde ayarlamak için, geçerli (veya istenilen) temel izinlerin başına 1 sayısını ekleyin.

chmod 1755 [directory]

Yapışkan bit olmadan, dizine yazabilen herkes dosyaları silebilir veya yeniden adlandırabilir. Bu nedenle, yapışkan bit genellikle /tmp gibi herkes tarafından yazılabilen dizinlerde bulunur.

Özel Linux Dosya Nitelikleri

Dosyalarda izin verilen işlemlere daha fazla sınırlama getiren başka özellikler de vardır. Örneğin dosyanın yeniden adlandırılmasını, taşınmasını, silinmesini ve hatta değiştirilmesini önleyin. Chattr komutuyla ayarlanırlar ve aşağıdaki gibi lsattr aracı kullanılarak görüntülenebilirler.

chattr +i file1
chattr +a file2

Bu iki komutu çalıştırdıktan sonra, dosya1 değiştirilemez olacaktır (bu, taşınamayacağı, yeniden adlandırılamayacağı, değiştirilemeyeceği veya silinemeyeceği anlamına gelir), oysa dosya2 yalnızca ekleme moduna girecektir (yalnızca yazmak için ekleme modunda açın).

Kök Hesaba Erişme ve Sudo Kullanma

Kullanıcıların kök hesaba erişmesinin yollarından biri yazmaktır.

su

ve ardından root'un şifresini giriyoruz.

Kimlik doğrulama başarılı olursa, daha önce yaptığınız gibi, geçerli çalışma dizini ile root olarak oturum açacaksınız. Bunun yerine kökün ana dizinine yerleştirilmek istiyorsanız çalıştırın.

su -

ve ardından root'un şifresini girin.

Yukarıdaki prosedür, normal bir kullanıcının root şifresini bilmesini gerektirir ve bu da ciddi bir güvenlik riski oluşturur. Bu nedenle, sistem yöneticisi sudo komutunu, sıradan bir kullanıcının farklı bir kullanıcı (genellikle süper kullanıcı) olarak komutları çok kontrollü ve sınırlı bir şekilde yürütmesine izin verecek şekilde yapılandırabilir. Böylece, bir kullanıcıya, bir veya daha fazla özel ayrıcalıklı komutu çalıştırmasını ve başkalarını çalıştırmamasını sağlayacak şekilde kısıtlamalar ayarlanabilir.

Ayrıca Oku: su ve sudo Kullanıcısı Arasındaki Fark

Sudo kullanarak kimlik doğrulaması yapmak için kullanıcı kendi şifresini kullanır. Komutu girdikten sonra bizden parolamız (süper kullanıcının değil) istenecek ve kimlik doğrulama başarılı olursa (ve kullanıcıya komutu çalıştırma ayrıcalıkları verilmişse), belirtilen komut gerçekleştirilir.

Sudo'ya erişim izni vermek için sistem yöneticisinin /etc/sudoers dosyasını düzenlemesi gerekir. Bu dosyanın doğrudan bir metin düzenleyiciyle açılması yerine visudo komutu kullanılarak düzenlenmesi önerilir.

visudo

Bu, /etc/sudoers dosyasını vim kullanarak açar (dosyayı düzenlemek için Vim'i Editör Olarak Kurma ve Kullanma – bu serinin 2. Bölümünde verilen talimatları takip edebilirsiniz).

Bunlar en alakalı satırlardır.

Defaults    secure_path="/usr/sbin:/usr/bin:/sbin"
root        ALL=(ALL) ALL
tecmint     ALL=/bin/yum update
gacanepa    ALL=NOPASSWD:/bin/updatedb
%admin      ALL=(ALL) ALL

Gelin onlara daha yakından bakalım.

Defaults    secure_path="/usr/sbin:/usr/bin:/sbin:/usr/local/bin"

Bu satır, sudo için kullanılacak dizinleri belirtmenizi sağlar ve sisteme zarar verebilecek kullanıcıya özel dizinlerin kullanılmasını önlemek için kullanılır.

Sonraki satırlar izinleri belirtmek için kullanılır.

root        ALL=(ALL) ALL
  1. İlk TÜMÜ anahtar sözcüğü bu kuralın tüm ana bilgisayarlar için geçerli olduğunu belirtir.
  2. İkinci TÜMÜ, ilk sütundaki kullanıcının herhangi bir kullanıcının ayrıcalıklarıyla komut çalıştırabileceğini belirtir.
  3. Üçüncü TÜMÜ, herhangi bir komutun çalıştırılabileceği anlamına gelir.
tecmint     ALL=/bin/yum update

= işaretinden sonra hiçbir kullanıcı belirtilmezse, sudo kök kullanıcıyı varsayar. Bu durumda, tecmint kullanıcısı yum update'i root olarak çalıştırabilecektir.

gacanepa    ALL=NOPASSWD:/bin/updatedb

NOPASSWD yönergesi, gacanepa kullanıcısının şifresini girmesine gerek kalmadan /bin/updatedb komutunu çalıştırmasına olanak tanır.

%admin      ALL=(ALL) ALL

% işareti bu satırın “admin” adlı bir gruba ait olduğunu belirtir. Satırın geri kalanının anlamı normal bir kullanıcının anlamı ile aynıdır. Bu, “admin ” grubunun üyelerinin tüm komutları tüm ana bilgisayarlarda herhangi bir kullanıcı olarak çalıştırabileceği anlamına gelir.

Sudo tarafından size hangi ayrıcalıkların verildiğini görmek için bunları listelemek üzere “-l ” seçeneğini kullanın.

PAM (Takılabilir Kimlik Doğrulama Modülleri)

Takılabilir Kimlik Doğrulama Modülleri (PAM), modülleri kullanarak uygulama başına ve/veya hizmet başına belirli bir kimlik doğrulama şeması ayarlama esnekliği sunar. Tüm modern Linux dağıtımlarında bulunan bu araç, Linux'un ilk günlerinde geliştiricilerin sıklıkla karşılaştığı, kimlik doğrulama gerektiren her programın, gerekli bilgilerin nasıl alınacağını bilmek için özel olarak derlenmesi gerektiği problemin üstesinden geldi.

Örneğin, PAM'de şifrenizin /etc/shadow dosyasında mı yoksa ağınızdaki ayrı bir sunucuda mı saklandığı önemli değildir.

Örneğin, oturum açma programının bir kullanıcının kimliğini doğrulaması gerektiğinde PAM, doğru kimlik doğrulama şemasına yönelik işlevleri içeren kitaplığı dinamik olarak sağlar. Bu nedenle, oturum açma uygulaması (veya PAM kullanan başka bir program) için kimlik doğrulama şemasını değiştirmek kolaydır çünkü bu yalnızca bir yapılandırma dosyasının (büyük olasılıkla /etc/pam.d içinde bulunan, uygulamanın adını taşıyan bir dosya) düzenlenmesini içerir. ve daha az olasılıkla /etc/pam.conf'da).

/etc/pam.d içindeki dosyalar hangi uygulamaların yerel olarak PAM kullandığını gösterir. Ayrıca belirli bir uygulamanın PAM kullanıp kullanmadığını, PAM kitaplığının (libpam) kendisine bağlı olup olmadığını kontrol ederek anlayabiliriz:


ldd $(which login) | grep libpam # login uses PAM
ldd $(which top) | grep libpam # top does not use PAM

Yukarıdaki resimde libpam'in giriş uygulamasına bağlandığını görebiliriz. Bu uygulama sistem kullanıcısı kimlik doğrulama işleminde yer aldığından, top bunu yapmadığından bu mantıklıdır.

Şimdi passwd için PAM yapılandırma dosyasını inceleyelim – evet, kullanıcının şifrelerini değiştirmek için kullanılan iyi bilinen bir yardımcı program. /etc/pam.d/passwd adresinde bulunur:


cat /etc/passwd

İlk sütun, modül yolu (üçüncü sütun) ile kullanılacak kimlik doğrulamanın türünü belirtir. Türün önünde kısa çizgi göründüğünde, modül sistemde bulunamadığı için yüklenemezse PAM sistem günlüğüne kayıt yapmaz.

Aşağıdaki kimlik doğrulama türleri mevcuttur:

  1. hesap: bu modül türü, kullanıcının veya hizmetin kimlik doğrulaması için geçerli kimlik bilgileri sağlayıp sağlamadığını kontrol eder.
  2. auth: bu modül türü kullanıcının iddia ettiği kişi olduğunu doğrular ve gerekli tüm ayrıcalıkları verir.
  3. şifre: bu modül türü kullanıcının veya hizmetin şifresini güncellemesine olanak tanır.
  4. session: bu modül türü, kimlik doğrulama başarılı olmadan önce ve/veya sonra ne yapılması gerektiğini belirtir.

İkinci sütun (kontrol olarak adlandırılır), bu modülle kimlik doğrulama başarısız olursa ne olması gerektiğini gösterir:

  1. requisite: Bu modül aracılığıyla kimlik doğrulama başarısız olursa, genel kimlik doğrulama hemen reddedilir.
  2. gerekli, zorunluya benzer, ancak bu hizmet için listelenen diğer tüm modüller, kimlik doğrulama reddedilmeden önce çağrılacaktır.
  3. yeterli: bu modül aracılığıyla kimlik doğrulama başarısız olursa, PAM, daha önce gerekli olarak işaretlenen bir işlem başarısız olsa bile kimlik doğrulamayı sürdürecektir.
  4. isteğe bağlı: bu modül aracılığıyla kimlik doğrulama başarısız olursa veya başarılı olursa, bu hizmet için tanımlanan türdeki tek modül olmadığı sürece hiçbir şey olmaz.
  5. include, verilen türdeki satırların başka bir dosyadan okunması gerektiği anlamına gelir.
  6. alt yığın, içermeye benzer, ancak kimlik doğrulama hataları veya başarıları, tüm modülün değil, yalnızca alt yığının çıkışına neden olur.

Dördüncü sütun, eğer varsa, modüle aktarılacak argümanları gösterir.

/etc/pam.d/passwd dosyasındaki ilk üç satır (yukarıda gösterilmektedir), kullanıcının geçerli kimlik bilgileri (hesap) sağladığını kontrol etmek için system-auth modülünü yükler. . Eğer öyleyse, passwd (auth) kullanma izni vererek kimlik doğrulama belirtecini (şifre) değiştirmesine olanak tanır.

Örneğin, eklerseniz


remember=2

aşağıdaki satıra


password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok

/etc/pam.d/system-auth'da:


password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=2

her kullanıcının son iki karma şifresi yeniden kullanılamayacak şekilde /etc/security/opasswd dosyasına kaydedilir:

Özet

Etkili kullanıcı ve dosya yönetimi becerileri, herhangi bir sistem yöneticisi için temel araçlardır. Bu makalede temel konuları ele aldık ve bunu, üzerine eklemeler yapmak için iyi bir başlangıç noktası olarak kullanabileceğinizi umuyoruz. Yorumlarınızı veya sorularınızı aşağıya bırakmaktan çekinmeyin; hızlı bir şekilde yanıt vereceğiz.