Linux’ta Kullanıcı Nasıl Değiştirilir: Tam Rehber
Linux tasarım gereği çok kullanıcılı bir işletim sistemidir ve kullanıcı kimliklerini yönetmek, herhangi bir sistem yöneticisinin ustalaşması gereken en temel becerilerden biridir. İster bir VPS Hosting ortamını yönetiyor olun, ister bir web sunucusu yapılandırıyor olun, ister bir dağıtımdan sonra dosya izni sorunlarını gideriyor olun, Linux’ta kullanıcıları nasıl değiştireceğinizi anlamak gereklidir.
Linux’ta “kullanıcıyı değiştir” ifadesi aslında her birinin kendi araçları, riskleri ve en iyi uygulamaları olan birkaç farklı işlemi kapsar:
- Kabukta başka bir hesaba geçiş (örneğin,
johnöğesindenrootöğesine) etkileşimli bir oturum için - Oturumları tam olarak değiştirmeden tek bir komutu farklı bir kullanıcı olarak çalıştırma
- Bir hizmetin veya işlemin hangi kullanıcı olarak çalıştığını değiştirme — güvenlik sertleştirmesi için kritik
- Dosya ve dizin sahipliğini değiştirme — göçler, geri yüklemeler veya dağıtımlardan sonra gereklidir
- Kullanıcı hesabı özniteliklerini değiştirme — kullanıcıları yeniden adlandırma, UID’leri değiştirme veya grup üyeliklerini ayarlama
Bu kılavuz, her bir yaklaşımın ne zaman kullanılacağını, bunu güvenli bir şekilde nasıl yapacağınızı ve hangi hataları önleyeceğinizi açıklayarak tüm bu senaryoları derinlemesine kapsar — böylece izinleri, hizmetleri veya erişimi bozmadan Linux kullanıcılarını güvenle yönetebilirsiniz.
Başka Bir Kullanıcıya Geçiş (İnteraktif Shell)
Sistem yönetimi, farklı bir hesap altında uygulama davranışını test etme veya bir hizmet hesabına erişme gibi nedenlerle başka bir kullanıcı olarak tam bir etkileşimli terminal oturumu açmanız gerektiğinde, Linux iki ana araç sağlar: su ve sudo.
su Kullanımı (Kullanıcı Değiştir)
su komutu mevcut kullanıcı kimliğinizi başka bir kullanıcıyla değiştirir:
su - username- bayrağı (-l veya --login olarak da yazılabilir) önemlidir: hedef kullanıcının ev dizini, PATH, shell profili ve ortam değişkenleri dahil olmak üzere tam login ortamını yükler. - bayrağı olmadan, mevcut ortamınızın çoğunu devralırsınız; bu da özellikle betikleri veya hizmetleri çalıştırırken ince ve kafa karıştırıcı davranışlara neden olabilir.
Doğrudan root’a geçmek için:
su -> Güvenlik notu: Birçok modern Linux dağıtımında, root hesabı parolası varsayılan olarak devre dışıdır (özellikle Ubuntu tabanlı sistemlerde). Bu durumlarda, su ile root’a geçiş başarısız olur ve sudo doğru yaklaşımdır.
sudo -i Kullanımı (Root/Admin Shell’leri için Tercih Edilen)
sudo -iBu, su - ile eşdeğer bir root login shell’i verir, ancak root parolasını gerektirmek yerine kendi sudo ayrıcalıklarınızı kullanarak kimlik doğrulaması yapar. Bu, çoğu modern dağıtımda önerilen yaklaşımdır çünkü:
- Root parolasını paylaşma veya bilme ihtiyacını ortadan kaldırır
- Tüm eylemler sudo denetim izi aracılığıyla günlüğe kaydedilir
- sudoers yapılandırmanıza ve kısıtlamalarınıza saygı gösterir
Sudo Aracılığıyla Login Shell ile Başka Bir Kullanıcıya Geçiş
sudo -iu usernameBu, -i (login shell) ve -u (hedef kullanıcı) öğelerini birleştirerek, o kullanıcının parolasına ihtiyaç duymadan belirtilen kullanıcı olarak temiz bir login ortamı verir.
Başka Bir Kullanıcı Olarak Tek Bir Komut Çalıştırma
Çoğu zaman tam etkileşimli bir oturuma ihtiyacınız yoktur — sadece farklı bir kimlikle bir komut çalıştırmanız gerekir. Bu, ayrıcalık yükseltme için en yaygın ve en güvenli modeldir.
sudo -u Kullanma
sudo -u username whoamisudo -u postgres psqlİkinci örnek veritabanı yönetiminde çok yaygındır — parola kimlik doğrulaması olmadan PostgreSQL’e erişmek için postgres sistem kullanıcısına geçiş yapma.
Temiz Bir Oturum Açma Ortamıyla Komut Çalıştırma
sudo -iu username command_hereBu, komutun geçerli oturumunuzun değişkenleri değil, hedef kullanıcının tam ortamıyla çalışmasını sağlar.
Root Olarak Komut Çalıştırma
sudo systemctl restart nginxBu, yönetim görevleri için standart modeldir: root kabuğu açmadan tek bir ayrıcalıklı komut çalıştırma.
Bir Hizmetin Çalıştığı Kullanıcıyı Değiştirme (systemd)
Neredeyse tüm modern Linux dağıtımlarında, systemd hizmetleri yönetir. Güvenlik için, her hizmet root yerine özel, ayrıcalıksız bir kullanıcı hesabı altında çalışmalıdır. Hizmetleri root olarak çalıştırmak önemli bir güvenlik riskidir — hizmet tehlikeye girerse, saldırgan tüm sisteme root erişimi kazanır.
Bu, Dedicated Servers ve birden fazla hizmetin aynı anda çalışabileceği production VPS ortamlarında özellikle önemlidir.
Mevcut Hizmet Yapılandırmasını Kontrol Edin
systemctl cat myservice.service[Service] bölümünde User= ve Group= yönergelerini arayın:
[Service]
User=www-data
Group=www-dataHizmet Kullanıcısını Geçersiz Kılın (Güvenli Yöntem)
Orijinal unit dosyasını düzenlemek yerine (paket güncellemelerinde üzerine yazılabilir), bir drop-in geçersiz kılması oluşturmak için systemctl edit kullanın:
sudo systemctl edit myservice.serviceBu, bir editör açar ve şunu eklersiniz:
[Service]
User=myuser
Group=mygroupDosyayı kaydedin, ardından değişiklikleri uygulayın:
sudo systemctl daemon-reload
sudo systemctl restart myservice.serviceHizmetin Doğru Kullanıcı Olarak Çalıştığını Doğrulayın
systemctl status myservice.serviceps -eo user,pid,cmd | grep myserviceÇalışan Herhangi Bir İşlemin Kullanıcısını İnceleyin
ps -eo user,pid,cmd | grep nginxps -p <PID> -o user,group,cmd> Önemli: Linux, zaten çalışan bir işlemin kullanıcısını yerinde değiştirmenize izin vermez. Değişikliğin etkili olması için işlemi yeniden başlatmanız (veya hizmet yöneticisini doğru kullanıcı altında başlatacak şekilde yapılandırmanız) gerekir.
chown ile Dosya Sahipliğini Değiştirme
Dosya sahipliği, Linux’un izin modelinin temel bir parçasıdır. Geçişlerden, dağıtımlardan, yedeklemelerden veya geri yüklemelerden sonra, sahiplik yanlış kullanıcıya atanabilir — izin reddedildi hataları, bozuk web uygulamaları veya erişilemeyen veriler nedeniyle. chown komutu bunu düzeltmek için birincil araçtır.
Bu, Paylaşılan Web Hosting ortamlarını ayarlarken veya bir VPS’de web uygulamaları dağıtırken yaygın bir görevdir.
Bir Dosyanın Sahibini Değiştirme
sudo chown username file.txtSahibi ve Grubu Değiştirme
sudo chown username:groupname file.txtÖzyinelemeli Sahiplik Değişikliği (Dikkatli Kullanın)
sudo chown -R username:groupname /var/www/site-R bayrağı değişikliği tüm dosyalar ve alt dizinlere özyinelemeli olarak uygular. Bunu dikkatli kullanın — yanlış bir yola uygulamak (örneğin, / veya /etc) tüm sisteminizi bozabilir.
Sembolik Bağlantıları Koru
sudo chown -h username:groupname symlink-h olmadan, chown sembolik bağlantıları takip eder ve hedef dosyanın sahipliğini değiştirir, sembolik bağlantının kendisini değil. Özellikle sembolik bağlantı sahipliğini değiştirmek istediğinizde -h kullanın.
Değişiklik Yapmadan Önce Sahipliği Önizleyin
Büyük dizin ağaçları için, özyinelemeli bir chown uygulamadan önce her zaman önizleyin:
find /path -maxdepth 2 -printf '%u:%g %pn' | headBu, dizin ağacının ilk iki seviyesi için geçerli sahibi ve grubu gösterir, değişikliği uygulamadan önce değişikliğin kapsamını doğrulamanıza olanak tanır.
Mevcut Kimliğinizi Doğrulayın
Değişiklik yapmadan önce, her zaman kim olduğunuzu ve hangi bağlamda çalıştığınızı doğrulayın. Bu, yanlış hesap altında yapılan yanlışlıkla değişiklikleri önler.
Mevcut Kullanıcınızı Kontrol Edin
whoamiTam Kimlik Bilgisini Alın (Kullanıcı, Gruplar, UID’ler)
idÖrnek çıktı:
uid=1000(alice) gid=1000(alice) groups=1000(alice),27(sudo),1001(docker)Sisteme Kimin Giriş Yaptığını Görün
whowsudo Kullanırken Orijinal Kullanıcıyı Kontrol Edin
sudo ile yetkilendirme yaptığınızda, iki ortam değişkeni ilgilidir:
echo $USER # The current effective user (root)
echo $SUDO_USER # The original user who invoked sudo (e.g., alice)Bu ayrım betiklerde önemlidir — $SUDO_USER size komutu gerçekte kimin çalıştırdığını söyler.
Kullanıcı Hesabı Özniteliklerini Değiştirme
Bazen "kullanıcı değiştirme" hesabın kendisini değiştirmek anlamına gelir: adını değiştirmek, UID’sini değiştirmek veya grup üyeliklerini ayarlamak. Bunlar oturum açışları, dosya izinlerini ve hizmet erişimini etkileyebilen kalıcı, sistem genelinde yapılan değişikliklerdir.
> En iyi uygulama: Hesap değişiklikleri yapmadan önce, kullanıcının oturumu kapatıldığından ve o hesap altında hiçbir işlemin çalışmadığından emin olun.
Kullanıcıyı Yeniden Adlandırma (Kullanıcı Adını Değiştirme)
sudo usermod -l newname oldnameBu, oturum açma adını değiştirir ancak ev dizinini otomatik olarak yeniden adlandırmaz. Ev dizinini de taşımak ve yeniden adlandırmak için:
sudo usermod -d /home/newname -m newnameKullanıcının eski kullanıcı adıyla aynı ada sahip birincil bir grubu varsa (çoğu dağıtımda varsayılan olan), grup adını da güncelleyin:
sudo groupmod -n newname oldnameKullanıcının UID’sini Değiştirme
sudo usermod -u 2001 username> Kritik: UID değiştirdikten sonra, eski UID tarafından sahip olunan tüm dosyalar bilinmeyen bir sayısal ID tarafından sahip olunmuş görünecektir. Bunu hemen düzeltmelisiniz:
sudo find / -user oldUID -exec chown -h username {} ;oldUID yerine önceki sayısal UID’yi yazın. Bu komut, tüm dosya sistemi içinde eski UID’ye sahip dosyaları arar ve bunları yeni kullanıcı adına yeniden atar.
Kullanıcıyı Bir Gruba Ekleme
En yaygın kullanım durumu, bir kullanıcıya sudo erişimi vermektir:
Debian/Ubuntu:
sudo usermod -aG sudo usernameRHEL / AlmaLinux / Rocky Linux:
sudo usermod -aG wheel username-a bayrağı kritiktir — kullanıcıyı gruba ekler ve mevcut gruplardan çıkarmaz. -a bayrağını atlamak, tüm grup üyeliklerini yalnızca belirtilen grupla değiştirecektir.
Grup Üyeliğini Doğrulama
id usernameHızlı Referans Kopya Sayfası
Bu kılavuzda ele alınan tüm kullanıcı değiştirme ve yönetim işlemleri için konsolide bir referans:
| Görev | Komut | |
|---|---|---|
| Başka bir kullanıcıya geç (login shell) | su - username | |
| sudo aracılığıyla başka bir kullanıcıya geç | sudo -iu username | |
| Root shell aç | sudo -i | |
| Başka bir kullanıcı olarak komut çalıştır | sudo -u username command | |
| postgres olarak komut çalıştır | sudo -u postgres psql | |
| Geçerli kullanıcıyı kontrol et | whoami | |
| Tam kimlik ve grupları kontrol et | id | |
| Orijinal sudo çağıranını kontrol et | echo $SUDO_USER | |
| Dosya sahibini değiştir | sudo chown username file | |
| Dosya sahibi ve grubunu değiştir | sudo chown username:group file | |
| Özyinelemeli sahiplik değişikliği | sudo chown -R username:group /path | |
| Dizin sahipliğini önizle | find /path -maxdepth 2 -printf '%u:%g %pn' | |
| Hizmet kullanıcısını değiştir (systemd) | sudo systemctl edit myservice.service | |
| Değişikliklerden sonra systemd’yi yeniden yükle | sudo systemctl daemon-reload | |
| İşlem kullanıcısını doğrula | `ps -eo user,pid,cmd | grep service` |
| Kullanıcıyı yeniden adlandır | sudo usermod -l newname oldname | |
| Ana dizini taşı | sudo usermod -d /home/newname -m newname | |
| UID’yi değiştir | sudo usermod -u 2001 username | |
| UID değişikliğinden sonra sahipliği düzelt | sudo find / -user oldUID -exec chown -h username {} ; | |
| Kullanıcıyı sudo grubuna ekle | sudo usermod -aG sudo username | |
| Grup üyeliğini doğrula | id username |
Özet
Linux’ta kullanıcı yönetimi tek bir işlem değildir — her birinin kendi araçları ve sonuçları olan ilişkili görevlerin bir ailesidir:
- Başka bir kullanıcı olarak etkileşimli oturumlar için
sudo -iu usernamekullanın (modern sistemlerdesuyerine tercih edilir) - Farklı bir kimlikle bireysel komutlar çalıştırmak için
sudo -u username commandkullanın - systemd hizmetinin hangi kullanıcı olarak çalıştığını güvenli bir şekilde değiştirmek için
systemctl editkullanın - Dağıtımlar, geçişler veya izin sorunlarından sonra dosya sahipliğini düzeltmek için
chownkullanın - Kalıcı hesap değişiklikleri için — yeniden adlandırma, UID değişiklikleri ve grup yönetimi —
usermodkullanın
Bu ayrımları anlamak, hizmet izinlerini bozma, dosyalara erişimi kaybetme veya yanlışlıkla aşırı ayrıcalıklar verme gibi yaygın hataları önlemenize yardımcı olur.
Linux tabanlı altyapı çalıştırıyorsanız — ister web sunucusu, ister veritabanı, ister özel bir uygulama yığını olsun — düzgün yapılandırılmış bir barındırma ortamı, kullanıcı yönetimini önemli ölçüde kolaylaştırır. AlexHost, tam kök erişimi sezgisel yönetim arayüzleriyle birlikte sunan esnek VPS Kontrol Panelleri ve cPanel’li VPS seçenekleri sunarak, bu kılavuzdaki her şeyi güvenle uygulayabilmenizi sağlar.
tasarruf edin