13 Mart 2019 Çarşamba

/etc/passwd dosyası

Giriş
Linux'ta kullanıcı ile ilgili bir çok bilgi /etc/passwd dosyasında bulunuyor. Bu dosyada 7 tane alan var.

Örnek
Bir satır şuna benzer.
username:x:1000:1000:your real name,,,:/home/username:/bin/bash
Örnek
Şuna benzer.
tom:x:1000:1000:Work:/home/tom:/bin/bash
Bu Dosyayı Elle Değiştirmek
Dosyayı hiç bir zaman elle değiştirmemek gerekir. Her bir alan için bir komut kullanılmalı.Komutlar usermod, passwd, chsh olabilir.

Bu Dosyayı Bir Çok Uygulama Okur
Açıklaması şöyle.
The password file is used every time a user logs in to a UNIX system and every time someone executes an ls -l command.
Açıklaması şöyle.
The file-system directly associates the numerical UID (User ID) and GID (Group ID) values with the file, not the user name and group name (which are strings). So the ls -l command (and any other command that displays the user and group owner of a file) need to get the user and group names from somewhere. The /etc/passwd file is one such source (probably the original and most common source).
İlginç Satırlar
Bazen dosyanında sonunda şöyle satırlar olabilir. Username +, diğer sütunlar ise boştur
+::::::
Bu satır NIS kullanıcılarının login olması içindir. Açıklaması şöyle. NIS (Network Information Service) LDAP'ten önce kullanılırdı.
It really seems to be NIS specific, because since I removed the line I cannot login (via NIS)
Sütun Açıklamaları
1. Hesap Adı - Login Name
usermode -l seçeneği ile değiştirilir. Kullanıcı adı değişince home dizini otomatik olarak değişmez.

Kullanıcı yaratmak için useradd komutuna bakınız. Aynı isimli iki kullanıcı olmasa iyi olur, ancak eğer varsa bile Linux User ID ile sahipliği takip ettiği için sorun olmaz.

2. Şifre
Şifre değiştirmek için passwd komutuna bakınız. Şifreler /etc/shadow dosyasında tutuluyor

Eğer şifre * ise kullanıcı login'i kullanarak sisteme giriş yapamaz.
auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh
rlogin ile giriş yapabilir.
If the encrypted password is set to an asterisk (*), the user will be unable to login using login(1), but may still login using rlogin(1), run existing processes and initiate new ones through rsh(1), cron(8), at(1), or mail filters, etc. Trying to lock an account by simply changing the shell field yields the same result and additionally allows the use of su(1).
3. User ID
User ID root için 0'dır. Yani aslında kullanıcı isminin root olmasının bir önemi yok.  id komutu yazısına taşıdım.

4. Primary Group ID
Her kullanıcının ana bir grubu vardır. Bu alan ana grup numarasını belirtir. Kullanıcının üyesi olduğu diğer grup bilgileri /etc/group dosyasında saklanır. Kullanıcının üyesi olduğu tüm grupları şöyle görebiliriz.
$ groups myuser
5. Kullanıcı Adı
Ekranda gösterilen isimdir. Genellikle kullanıcının tam adıdır. Gerçek bir satır şöyledir.
charlie:x:1003:1003:Charlie Haddock:/home/charlie:/bin/bash

6. Kullanıcı Home Dizini
usermod -d seçeneği ile değiştirilir.

7. Shell
Çoğu kullanıcı için kabuk bash'tir. bash için yol şöyledir.
/bin/bash
bash'in yolu şöyle değildir.
/usr/bin/bash
1. Kullanıcının kabuğunu öğrenmek için şöyle yaparız.
echo $SHELL 
/bin/bash
2. Shell değiştirme
Örnek
chsh komutu yazısına taşıdım

Eğer kullanıcı bir daha login olmasın istersek şöyle yaparız.
sudo chsh -s /bin/false Bob
Bu tür kullanıcılar sistem servisleri için kullanılabilir. Açıklaması şöyle
Actually, false is not a shell, but a command that does nothing and then also ends with a status code that signals an error. The result is simple. The user logs in and immediately sees the login prompt again.
Bir başka yöntem şöyle. Yani shell olarak /sbin/nologin kullanılıyor.
... it's a good idea to disable root login, e.g. by setting the root user's shell to /sbin/nologin instead of /bin/bash, and to use a non-root user with sudo rights.
Örnek
Eğer root için shell atanmasaydı yani şöyle olsaydı sudo komutu işe yaramazdı
root:x:0:0:root:/root:/usr/sbin/nologin


Hiç yorum yok:

Yorum Gönder