Tüm barındırma hizmetlerinde 15% tasarruf edin

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın: Skills Başlayın
Bölüm
İşletim sistemleri Linux

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 öğesinden root öğ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 -i

Bu, 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 username

Bu, -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 whoami
sudo -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_here

Bu, 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 nginx

Bu, 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-data

Hizmet 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.service

Bu, bir editör açar ve şunu eklersiniz:

[Service]
User=myuser
Group=mygroup

Dosyayı kaydedin, ardından değişiklikleri uygulayın:

sudo systemctl daemon-reload
sudo systemctl restart myservice.service

Hizmetin Doğru Kullanıcı Olarak Çalıştığını Doğrulayın

systemctl status myservice.service
ps -eo user,pid,cmd | grep myservice

Çalışan Herhangi Bir İşlemin Kullanıcısını İnceleyin

ps -eo user,pid,cmd | grep nginx
ps -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.txt

Sahibi 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' | head

Bu, 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

whoami

Tam 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

who
w

sudo 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 oldname

Bu, 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 newname

Kullanı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 oldname

Kullanı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 username

RHEL / 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 username

Hı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örevKomut
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ırsudo -u username command
postgres olarak komut çalıştırsudo -u postgres psql
Geçerli kullanıcıyı kontrol etwhoami
Tam kimlik ve grupları kontrol etid
Orijinal sudo çağıranını kontrol etecho $SUDO_USER
Dosya sahibini değiştirsudo chown username file
Dosya sahibi ve grubunu değiştirsudo chown username:group file
Özyinelemeli sahiplik değişikliğisudo chown -R username:group /path
Dizin sahipliğini önizlefind /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üklesudo systemctl daemon-reload
İşlem kullanıcısını doğrula`ps -eo user,pid,cmdgrep service`
Kullanıcıyı yeniden adlandırsudo usermod -l newname oldname
Ana dizini taşısudo usermod -d /home/newname -m newname
UID’yi değiştirsudo usermod -u 2001 username
UID değişikliğinden sonra sahipliği düzeltsudo find / -user oldUID -exec chown -h username {} ;
Kullanıcıyı sudo grubuna eklesudo usermod -aG sudo username
Grup üyeliğini doğrulaid 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 username kullanın (modern sistemlerde su yerine tercih edilir)
  • Farklı bir kimlikle bireysel komutlar çalıştırmak için sudo -u username command kullanın
  • systemd hizmetinin hangi kullanıcı olarak çalıştığını güvenli bir şekilde değiştirmek için systemctl edit kullanın
  • Dağıtımlar, geçişler veya izin sorunlarından sonra dosya sahipliğini düzeltmek için chown kullanın
  • Kalıcı hesap değişiklikleri için — yeniden adlandırma, UID değişiklikleri ve grup yönetimi — usermod kullanı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.