Linux’te 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 sunucusunu 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ı tamamen 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 — geçişler, geri yüklemeler veya dağıtımlardan sonra gerekli
- 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, tüm bu senaryoları derinlemesine kapsar, her bir yaklaşımı ne zaman kullanacağınızı, bunu güvenli bir şekilde nasıl yapacağınızı ve hangi hataları önleyeceğinizi açıklayarak — böylece izinleri, hizmetleri veya erişimi bozmadan Linux kullanıcılarını güvenle yönetebilirsiniz.
İçindekiler
- Başka Bir Kullanıcıya Geçiş (Etkileşimli Kabuk)
- Tek Bir Komutu Başka Bir Kullanıcı Olarak Çalıştırma
- Bir Hizmetin Çalıştığı Kullanıcıyı Değiştirme (systemd)
- chown ile Dosya Sahipliğini Değiştirme
- Mevcut Kimliğinizi Doğrulama
- Kullanıcı Hesabı Özniteliklerini Değiştirme
- Hızlı Referans Kopya Sayfası
Başka Bir Kullanıcıya Geçiş (Etkileşimli Kabuk)
Başka bir kullanıcı olarak tam bir etkileşimli terminal oturumuna ihtiyacınız olduğunda — sistem yönetimi, bir uygulamanın davranışını farklı bir hesap altında test etme veya bir hizmet hesabına erişme için — Linux iki temel araç sağlar: su ve sudo.
su Kullanma (Kullanıcıyı Değiştir)
su komutu, mevcut kullanıcı kimliğinizi başka biriyle değiştirir:
su - username- bayrağı (ayrıca -l veya --login olarak yazılabilir) önemlidir: hedef kullanıcının tam oturum açma ortamını yükler; bunlar ev dizini, PATH, kabuk profili ve ortam değişkenlerini içerir. - bayrağı olmadan, mevcut ortamınızın çoğunu devralırsınız; bu, özellikle komut dosyaları veya hizmetler ç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 root’a başarısız olur ve sudo doğru yaklaşımdır.
sudo -i Kullanma (Root/Admin Kabukları için Tercih Edilen)
sudo -iBu size su - eşdeğeri bir root oturum açma kabuğu 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 Oturum Açma Kabuğu ile Başka Bir Kullanıcıya Geçiş
sudo -iu usernameBu, -i (oturum açma kabuğu) ve -u (hedef kullanıcı) öğelerini birleştirerek, belirtilen kullanıcı olarak temiz bir oturum açma ortamı verir — o kullanıcının parolasına ihtiyaç duymadan.
Tek Bir Komutu Başka Bir Kullanıcı Olarak Çalıştırma
Çoğu zaman tam bir etkileşimli oturuma ihtiyacınız yoktur — sadece bir komutu farklı bir kimlikle yürütmeniz 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 son derece yaygındır — postgres sistem kullanıcısına geçerek PostgreSQL’e parola kimlik doğrulaması olmadan erişmek.
Temiz Oturum Açma Ortamı ile Bir Komutu Çalıştırma
sudo -iu username command_hereBu, komutun mevcut oturumunuzun değişkenleri değil, hedef kullanıcının tam ortamı ile çalışmasını sağlar.
Bir Komutu Root Olarak Çalıştırma
sudo systemctl restart nginxBu, yönetim görevleri için standart modeldir: bir root kabuğu açmadan tek bir ayrıcalıklı komutu çalıştırın.
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 adanmış, 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, birden fazla hizmetin aynı anda çalışabileceği Dedicated Servers ve üretim VPS ortamlarında özellikle önemlidir.
Mevcut Hizmet Yapılandırmasını Kontrol Etme
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ılma (Güvenli Yöntem)
Orijinal birim dosyasını düzenlemek yerine (paket yükseltmelerinde üzerine yazılabilir), bir açılır geçersiz kılma oluşturmak için systemctl edit öğesini kullanın:
sudo systemctl edit myservice.serviceBu, aşağıdakileri eklediğiniz bir editör açar:
[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ğrulama
systemctl status myservice.serviceps -eo user,pid,cmd | grep myserviceHerhangi Bir Çalışan İşlemin Kullanıcısını İnceleme
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şler, dağıtımlar, yedeklemeler veya geri yüklemelerden sonra, sahiplik yanlış kullanıcıya atanabilir — izin reddedildi hataları, bozuk web uygulamaları veya erişilemeyen veriler neden olabilir. chown komutu bunu düzeltmek için birincil araçtır.
Bu, Shared 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.txtHem Sahibi Hem de 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 yinelemeli olarak uygular. Bunu dikkatli kullanın — yanlış 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 sembolik bağlantının kendisinin değil, hedef dosyanın sahipliğini değiştirir. Özellikle sembolik bağlantı sahipliğini değiştirmek istediğinizde -h öğesini kullanın.
Değişiklik Yapmadan Önce Sahipliği Önizleme
Büyük dizin ağaçları için, yinelemeli 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 mevcut sahibi ve grubu gösterir; değişikliği taahhüt etmeden önce değişikliğin kapsamını doğrulamanıza olanak tanır.
Mevcut Kimliğinizi Doğrulama
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ıyı Kontrol Etme
whoamiTam Kimlik Bilgilerini Alma (Kullanıcı, Gruplar, UID’ler)
idÖrnek çıktı:
uid=1000(alice) gid=1000(alice) groups=1000(alice),27(sudo),1001(docker)Sisteme Kimin Oturum Açtığını Görme
whowSudo Kullanırken Orijinal Kullanıcıyı Kontrol Etme
sudo ile yükselttiğinizde, 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 komutlarda önemlidir — $SUDO_USER size komutu gerçekten kimin çalıştırdığını söyler.
Kullanıcı Hesabı Özniteliklerini Değiştirme
Bazen “kullanıcıyı değiştirmek” hesabın kendisini değiştirmek anlamına gelir: yeniden adlandırma, UID’sini değiştirme veya grup üyeliklerini ayarlama. Bunlar, oturum açmaları, dosya izinlerini ve hizmet erişimini etkileyebilecek kalıcı, sistem genelinde değişikliklerdir.
> En iyi uygulama: Hesap değişiklikleri yapmadan önce, kullanıcının oturum açmadığından ve o hesap altında hiçbir işlemin çalışmadığından emin olun.
Bir 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ı ile 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 oldnameBir Kullanıcının UID’sini Değiştirme
sudo usermod -u 2001 username> Kritik: UID’yi değiştirdikten sonra, eski UID tarafından önceden sahip olunan tüm dosyalar bilinmeyen bir sayısal kimlik
