{"id":3677,"date":"2025-12-29T18:57:43","date_gmt":"2025-12-29T15:57:43","guid":{"rendered":"https:\/\/www.dchost.com\/blog\/linux-vpste-kullanici-grup-ve-sudo-mimarisi-coklu-proje-ve-ekipler-icin-yetki-tasarimi\/"},"modified":"2025-12-29T18:57:43","modified_gmt":"2025-12-29T15:57:43","slug":"linux-vpste-kullanici-grup-ve-sudo-mimarisi-coklu-proje-ve-ekipler-icin-yetki-tasarimi","status":"publish","type":"post","link":"https:\/\/www.dchost.com\/blog\/linux-vpste-kullanici-grup-ve-sudo-mimarisi-coklu-proje-ve-ekipler-icin-yetki-tasarimi\/","title":{"rendered":"Linux VPS\u2019te Kullan\u0131c\u0131, Grup ve sudo Mimarisi: \u00c7oklu Proje ve Ekipler \u0130\u00e7in Yetki Tasar\u0131m\u0131"},"content":{"rendered":"<div class=\"dchost-blog-content-wrapper\"><div id=\"toc_container\" class=\"toc_transparent no_bullets\"><p class=\"toc_title\">\u0130&ccedil;indekiler<\/p><ul class=\"toc_list\"><li><a href=\"#Linux_VPSte_Yetki_Tasarimini_Dogru_Kurmanin_Gercek_Etkisi\"><span class=\"toc_number toc_depth_1\">1<\/span> Linux VPS\u2019te Yetki Tasar\u0131m\u0131n\u0131 Do\u011fru Kurman\u0131n Ger\u00e7ek Etkisi<\/a><\/li><li><a href=\"#Kavramlar_Kullanici_Grup_ve_sudo_Arasindaki_Iliski\"><span class=\"toc_number toc_depth_1\">2<\/span> Kavramlar: Kullan\u0131c\u0131, Grup ve sudo Aras\u0131ndaki \u0130li\u015fki<\/a><ul><li><a href=\"#POSIX_izin_modeli_hizli_ozet\"><span class=\"toc_number toc_depth_2\">2.1<\/span> POSIX izin modeli h\u0131zl\u0131 \u00f6zet<\/a><\/li><li><a href=\"#Kullanici_turleri_root_sistem_kullanicilari_ve_normal_kullanicilar\"><span class=\"toc_number toc_depth_2\">2.2<\/span> Kullan\u0131c\u0131 t\u00fcrleri: root, sistem kullan\u0131c\u0131lar\u0131 ve normal kullan\u0131c\u0131lar<\/a><\/li><li><a href=\"#sudo_neden_dogrudan_root_yerine_tercih_edilmeli\"><span class=\"toc_number toc_depth_2\">2.3<\/span> sudo neden do\u011frudan root yerine tercih edilmeli?<\/a><\/li><\/ul><\/li><li><a href=\"#Coklu_Proje_ve_Ekipler_Icin_Mantiksal_Model\"><span class=\"toc_number toc_depth_1\">3<\/span> \u00c7oklu Proje ve Ekipler \u0130\u00e7in Mant\u0131ksal Model<\/a><ul><li><a href=\"#Hedef_En_az_ayricalik_ve_izlenebilirlik\"><span class=\"toc_number toc_depth_2\">3.1<\/span> Hedef: En az ayr\u0131cal\u0131k ve izlenebilirlik<\/a><\/li><li><a href=\"#Proje_bazli_gruplar\"><span class=\"toc_number toc_depth_2\">3.2<\/span> Proje bazl\u0131 gruplar<\/a><\/li><li><a href=\"#Rol_bazli_gruplar\"><span class=\"toc_number toc_depth_2\">3.3<\/span> Rol bazl\u0131 gruplar<\/a><\/li><li><a href=\"#Umask_ve_varsayilan_izinler\"><span class=\"toc_number toc_depth_2\">3.4<\/span> Umask ve varsay\u0131lan izinler<\/a><\/li><\/ul><\/li><li><a href=\"#Adim_Adim_Kullanici_ve_Grup_Olusturma_Pratigi\"><span class=\"toc_number toc_depth_1\">4<\/span> Ad\u0131m Ad\u0131m: Kullan\u0131c\u0131 ve Grup Olu\u015fturma Prati\u011fi<\/a><ul><li><a href=\"#Temel_grup_ve_kullanicilarin_olusturulmasi\"><span class=\"toc_number toc_depth_2\">4.1<\/span> Temel grup ve kullan\u0131c\u0131lar\u0131n olu\u015fturulmas\u0131<\/a><\/li><li><a href=\"#Proje_dizini_izinleri\"><span class=\"toc_number toc_depth_2\">4.2<\/span> Proje dizini izinleri<\/a><\/li><li><a href=\"#Home_dizinleri_ve_paylasim_stratejisi\"><span class=\"toc_number toc_depth_2\">4.3<\/span> Home dizinleri ve payla\u015f\u0131m stratejisi<\/a><\/li><\/ul><\/li><li><a href=\"#sudoers_Tasarimi_Komut_Bazli_Yetki_Paylasimi\"><span class=\"toc_number toc_depth_1\">5<\/span> sudoers Tasar\u0131m\u0131: Komut Bazl\u0131 Yetki Payla\u015f\u0131m\u0131<\/a><ul><li><a href=\"#sudoers_dosyasina_bakis\"><span class=\"toc_number toc_depth_2\">5.1<\/span> sudoers dosyas\u0131na bak\u0131\u015f<\/a><\/li><li><a href=\"#etcsudoersd_ile_moduler_yapi\"><span class=\"toc_number toc_depth_2\">5.2<\/span> \/etc\/sudoers.d ile mod\u00fcler yap\u0131<\/a><\/li><li><a href=\"#Alias_kullanarak_okunabilirlik\"><span class=\"toc_number toc_depth_2\">5.3<\/span> Alias kullanarak okunabilirlik<\/a><\/li><li><a href=\"#Sifre_zorunlulugu_vs_NOPASSWD\"><span class=\"toc_number toc_depth_2\">5.4<\/span> \u015eifre zorunlulu\u011fu vs NOPASSWD<\/a><\/li><li><a href=\"#root_erisimini_tamamen_mi_kapatmali\"><span class=\"toc_number toc_depth_2\">5.5<\/span> root eri\u015fimini tamamen mi kapatmal\u0131?<\/a><\/li><\/ul><\/li><li><a href=\"#SSH_Anahtar_Yonetimi_ve_sudo_Modelinin_Birlikte_Calismasi\"><span class=\"toc_number toc_depth_1\">6<\/span> SSH, Anahtar Y\u00f6netimi ve sudo Modelinin Birlikte \u00c7al\u0131\u015fmas\u0131<\/a><ul><li><a href=\"#Parola_yerine_SSH_anahtari\"><span class=\"toc_number toc_depth_2\">6.1<\/span> Parola yerine SSH anahtar\u0131<\/a><\/li><li><a href=\"#Coklu_ortamlar_dev_staging_prod\"><span class=\"toc_number toc_depth_2\">6.2<\/span> \u00c7oklu ortamlar: dev, staging, prod<\/a><\/li><\/ul><\/li><li><a href=\"#Tipik_Senaryolar_Icin_Ornek_Mimariler\"><span class=\"toc_number toc_depth_1\">7<\/span> Tipik Senaryolar \u0130\u00e7in \u00d6rnek Mimariler<\/a><ul><li><a href=\"#Senaryo_1_Ajansin_coklu_musteri_siteleri\"><span class=\"toc_number toc_depth_2\">7.1<\/span> Senaryo 1: Ajans\u0131n \u00e7oklu m\u00fc\u015fteri siteleri<\/a><\/li><li><a href=\"#Senaryo_2_Urun_sirketinde_backend_frontend_ve_DevOps_ayrimi\"><span class=\"toc_number toc_depth_2\">7.2<\/span> Senaryo 2: \u00dcr\u00fcn \u015firketinde backend, frontend ve DevOps ayr\u0131m\u0131<\/a><\/li><li><a href=\"#Senaryo_3_Dis_hizmet_saglayici_veya_freelance_gelistirici\"><span class=\"toc_number toc_depth_2\">7.3<\/span> Senaryo 3: D\u0131\u015f hizmet sa\u011flay\u0131c\u0131 veya freelance geli\u015ftirici<\/a><\/li><\/ul><\/li><li><a href=\"#Guvenlik_Boyutu_Hangi_Hatalardan_Ozellikle_Kacinmalisiniz\"><span class=\"toc_number toc_depth_1\">8<\/span> G\u00fcvenlik Boyutu: Hangi Hatalardan \u00d6zellikle Ka\u00e7\u0131nmal\u0131s\u0131n\u0131z?<\/a><ul><li><a href=\"#Herkes_icin_tek_kullanici_modeli\"><span class=\"toc_number toc_depth_2\">8.1<\/span> \u201cHerkes i\u00e7in tek kullan\u0131c\u0131\u201d modeli<\/a><\/li><li><a href=\"#sudo_ALLALLALL_ALL_dagitmak\"><span class=\"toc_number toc_depth_2\">8.2<\/span> sudo ALL=(ALL:ALL) ALL da\u011f\u0131tmak<\/a><\/li><li><a href=\"#sudo_ile_ortam_degiskeni_manipulasyonu\"><span class=\"toc_number toc_depth_2\">8.3<\/span> sudo ile ortam de\u011fi\u015fkeni manip\u00fclasyonu<\/a><\/li><\/ul><\/li><li><a href=\"#DCHost_VPS_Uzerinde_Bu_Mimariyi_Nasil_Konumlandirabilirsiniz\"><span class=\"toc_number toc_depth_1\">9<\/span> DCHost VPS \u00dczerinde Bu Mimariyi Nas\u0131l Konumland\u0131rabilirsiniz?<\/a><ul><li><a href=\"#Planlama_adimi_Kaynak_degil_yetki_de_tasarlanmali\"><span class=\"toc_number toc_depth_2\">9.1<\/span> Planlama ad\u0131m\u0131: Kaynak de\u011fil, yetki de tasarlanmal\u0131<\/a><\/li><li><a href=\"#Onerilen_ilk_kurulum_akisi\"><span class=\"toc_number toc_depth_2\">9.2<\/span> \u00d6nerilen ilk kurulum ak\u0131\u015f\u0131<\/a><\/li><\/ul><\/li><li><a href=\"#Sonuc_Saglam_Bir_Yetki_Mimarisi_Sizi_Yillarca_Tasiyabilir\"><span class=\"toc_number toc_depth_1\">10<\/span> Sonu\u00e7: Sa\u011flam Bir Yetki Mimarisi, Sizi Y\u0131llarca Ta\u015f\u0131yabilir<\/a><\/li><\/ul><\/div>\n<h2><span id=\"Linux_VPSte_Yetki_Tasarimini_Dogru_Kurmanin_Gercek_Etkisi\">Linux <a href=\"https:\/\/www.dchost.com\/tr\/vps\">VPS<\/a>\u2019te Yetki Tasar\u0131m\u0131n\u0131 Do\u011fru Kurman\u0131n Ger\u00e7ek Etkisi<\/span><\/h2>\n<p>Linux VPS \u00fczerinde birden fazla proje, ajans yap\u0131s\u0131 veya \u00fcr\u00fcn ekibi y\u00f6netiyorsan\u0131z, en kritik mimarilerden biri asl\u0131nda CPU, RAM veya disk de\u011fil; <strong>kullan\u0131c\u0131, grup ve sudo mimariniz<\/strong>. Bir kapasite planlama toplant\u0131s\u0131nda dakikalarca vCPU, NVMe ve bant geni\u015fli\u011fi tart\u0131\u015f\u0131l\u0131rken, \u00e7o\u011fu zaman \u015fu soru atlan\u0131yor: \u201cBu sunucuya kim, neye, hangi yetkiyle eri\u015fecek?\u201d<\/p>\n<p>DCHost ekibi olarak sahada en \u00e7ok g\u00f6rd\u00fc\u011f\u00fcm\u00fcz problemler; yanl\u0131\u015f yap\u0131land\u0131r\u0131lm\u0131\u015f sudo, herkesin her \u015feyi yapabildi\u011fi tek bir kullan\u0131c\u0131 hesab\u0131 ve projeler aras\u0131 kar\u0131\u015fan dosya izinleri. Sonu\u00e7 \u00e7o\u011fu zaman ayn\u0131: kimin hangi dosyay\u0131 bozdu\u011funu bulamama, istemeden silinen loglar, yanl\u0131\u015f sunucuda \u00e7al\u0131\u015fan deploy script\u2019leri ve en k\u00f6t\u00fcs\u00fc, \u00fcretim ortam\u0131na s\u0131zan gereksiz ayr\u0131cal\u0131klar.<\/p>\n<p>Bu yaz\u0131da, Linux VPS\u2019inizde <strong>\u00e7oklu proje ve ekipler i\u00e7in tekrar kullan\u0131labilir bir yetki tasar\u0131m\u0131<\/strong> kurman\u0131za yard\u0131mc\u0131 olaca\u011f\u0131z. Kullan\u0131c\u0131 ve grup yap\u0131s\u0131n\u0131 nas\u0131l modelleyece\u011finizi, sudoers dosyas\u0131n\u0131 komut baz\u0131nda nas\u0131l sade ve g\u00fcvenli tasarlayaca\u011f\u0131n\u0131z\u0131, geli\u015ftirme\u2013staging\u2013canl\u0131 ortam ayr\u0131mlar\u0131n\u0131 yetkilerle nas\u0131l hizalayaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m anlataca\u011f\u0131m. Anlatt\u0131klar\u0131m\u0131z\u0131, DCHost \u00fczerinde bar\u0131nd\u0131rd\u0131\u011f\u0131n\u0131z Linux VPS\u2019lerde do\u011frudan uygulayabilirsiniz.<\/p>\n<p>E\u011fer hen\u00fcz temel g\u00fcvenlik sertle\u015ftirme ad\u0131mlar\u0131n\u0131 atmad\u0131ysan\u0131z, bu yaz\u0131y\u0131 <a href=\"https:\/\/www.dchost.com\/blog\/vps-guvenlik-sertlestirme-kontrol-listesi-sshd_config-fail2ban-ve-root-erisimini-kapatmak\/\">VPS g\u00fcvenlik sertle\u015ftirme kontrol listemiz<\/a> ve <a href=\"https:\/\/www.dchost.com\/blog\/yeni-vpste-ilk-24-saat-guncelleme-guvenlik-duvari-ve-kullanici-hesaplari\/\">yeni VPS\u2019te ilk 24 saatte yap\u0131lmas\u0131 gereken ayarlar<\/a> ile birlikte d\u00fc\u015f\u00fcnmenizi \u00f6zellikle \u00f6neririm.<\/p>\n<h2><span id=\"Kavramlar_Kullanici_Grup_ve_sudo_Arasindaki_Iliski\">Kavramlar: Kullan\u0131c\u0131, Grup ve sudo Aras\u0131ndaki \u0130li\u015fki<\/span><\/h2>\n<h3><span id=\"POSIX_izin_modeli_hizli_ozet\">POSIX izin modeli h\u0131zl\u0131 \u00f6zet<\/span><\/h3>\n<p>Linux\u2019ta dosya ve dizin izinlerinin temelinde POSIX modeli vard\u0131r. Her dosya i\u00e7in \u00fc\u00e7 ana ba\u015fl\u0131k bulunur:<\/p>\n<ul>\n<li><strong>Sahip (user)<\/strong>: Dosyan\u0131n sahibi kullan\u0131c\u0131.<\/li>\n<li><strong>Grup (group)<\/strong>: Dosyaya ait birincil grup.<\/li>\n<li><strong>Di\u011ferleri (others)<\/strong>: Sahip ve grup d\u0131\u015f\u0131ndaki herkes.<\/li>\n<\/ul>\n<p>Her biri i\u00e7in okunabilir (r), yaz\u0131labilir (w) ve \u00e7al\u0131\u015ft\u0131r\u0131labilir (x) bitleri (ve bunlar\u0131n say\u0131sal kar\u015f\u0131l\u0131\u011f\u0131 olan 4, 2, 1) vard\u0131r. Bu konuyu detayl\u0131 anlamak istiyorsan\u0131z, ayr\u0131ca <a href=\"https:\/\/www.dchost.com\/blog\/linux-dosya-izinleri-644-755-777-paylasimli-hosting-ve-vps-icin-guvenli-ayarlar\/\">Linux dosya izinleri ve g\u00fcvenli ayarlar<\/a> yaz\u0131m\u0131za da g\u00f6z atabilirsiniz.<\/p>\n<h3><span id=\"Kullanici_turleri_root_sistem_kullanicilari_ve_normal_kullanicilar\">Kullan\u0131c\u0131 t\u00fcrleri: root, sistem kullan\u0131c\u0131lar\u0131 ve normal kullan\u0131c\u0131lar<\/span><\/h3>\n<p>Yetki tasar\u0131m\u0131 yaparken \u00fc\u00e7 ana kullan\u0131c\u0131 t\u00fcr\u00fcn\u00fc bilmek gerekir:<\/p>\n<ul>\n<li><strong>root<\/strong>: Her \u015feye tam yetkili, s\u00fcper kullan\u0131c\u0131. Hata affetmez.<\/li>\n<li><strong>Sistem kullan\u0131c\u0131lar\u0131<\/strong>: genellikle \/usr\/sbin\/nologin ile giri\u015f yapamayan, sadece servis \u00e7al\u0131\u015ft\u0131rmak i\u00e7in kullan\u0131lan hesaplar (www-data, mysql, postfix vb.).<\/li>\n<li><strong>Normal kullan\u0131c\u0131lar<\/strong>: \u0130nsanlar\u0131n (geli\u015ftirici, sistem y\u00f6neticisi vb.) giri\u015f yapt\u0131\u011f\u0131 hesaplar.<\/li>\n<\/ul>\n<p>Do\u011fru mimaride, insanlara <strong>do\u011frudan root eri\u015fimi<\/strong> vermezsiniz. Bunun yerine, normal kullan\u0131c\u0131 + <code>sudo<\/code> ile gerekti\u011finde kontroll\u00fc ayr\u0131cal\u0131k y\u00fckseltmesine izin verirsiniz.<\/p>\n<h3><span id=\"sudo_neden_dogrudan_root_yerine_tercih_edilmeli\">sudo neden do\u011frudan root yerine tercih edilmeli?<\/span><\/h3>\n<p><code>sudo<\/code>, belirli kullan\u0131c\u0131lara belirli komutlar\u0131, belirli kullan\u0131c\u0131 kimlikleriyle (\u00e7o\u011fu zaman root) \u00e7al\u0131\u015ft\u0131rma izni veren bir mekanizmad\u0131r. Avantajlar\u0131:<\/p>\n<ul>\n<li>Her komut <strong>loglan\u0131r<\/strong> (varsay\u0131lan ayarlarla \/var\/log\/auth.log).<\/li>\n<li>Kullan\u0131c\u0131 bazl\u0131 <strong>ince ayarl\u0131 yetki<\/strong> verebilirsiniz.<\/li>\n<li>Parola isteyerek (veya NOPASSWD ile) ek bir g\u00fcvenlik\/denetim katman\u0131 sa\u011flayabilirsiniz.<\/li>\n<li>Do\u011frudan root parolas\u0131n\u0131 payla\u015fmak zorunda kalmazs\u0131n\u0131z.<\/li>\n<\/ul>\n<p>\u00c7oklu proje ve \u00e7ok ekipli yap\u0131larda, b\u00fct\u00fcn mimariyi \u201cherkes root ile ba\u011flan\u0131yor\u201d \u015feklinde kurmak felaket senaryosuna davetiye \u00e7\u0131karmakt\u0131r. DCHost olarak kendi i\u00e7 altyap\u0131m\u0131zda da ekipleri her zaman <strong>sudo merkezli<\/strong> bir modele g\u00f6re kurguluyoruz.<\/p>\n<h2><span id=\"Coklu_Proje_ve_Ekipler_Icin_Mantiksal_Model\">\u00c7oklu Proje ve Ekipler \u0130\u00e7in Mant\u0131ksal Model<\/span><\/h2>\n<h3><span id=\"Hedef_En_az_ayricalik_ve_izlenebilirlik\">Hedef: En az ayr\u0131cal\u0131k ve izlenebilirlik<\/span><\/h3>\n<p>Ba\u015far\u0131l\u0131 bir yetki tasar\u0131m\u0131n\u0131n \u00fc\u00e7 temel hedefi vard\u0131r:<\/p>\n<ul>\n<li><strong>Least privilege (en az ayr\u0131cal\u0131k)<\/strong>: Her kullan\u0131c\u0131 sadece i\u015fini yapmaya yetecek kadar hakka sahip olsun.<\/li>\n<li><strong>Separation of duties (g\u00f6rev ayr\u0131m\u0131)<\/strong>: Geli\u015ftirici, operasyon, m\u00fc\u015fteri veya i\u00e7erik ekibi ayn\u0131 yetki seviyesinde olmas\u0131n.<\/li>\n<li><strong>Auditability (izlenebilirlik)<\/strong>: Hangi komutu kimin, ne zaman \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131 g\u00f6rebilin.<\/li>\n<\/ul>\n<p>Basit bir \u00f6rnek d\u00fc\u015f\u00fcnelim: Ayn\u0131 VPS\u2019te \u00fc\u00e7 proje bar\u0131n\u0131yor:<\/p>\n<ul>\n<li>Kurumsal web sitesi (marketing ekibi ve ajans eri\u015fiyor).<\/li>\n<li>E-ticaret sitesi (backend &amp; frontend ekipleri, operasyon).<\/li>\n<li>\u0130\u00e7 dashboard (sadece i\u00e7 ekip, kritik veriler).<\/li>\n<\/ul>\n<p>Bu \u00fc\u00e7 projenin hem kod taban\u0131 hem de verileri birbirinden olabildi\u011fince izole olmal\u0131. Ayn\u0131 zamanda, ortak g\u00f6revler (\u00f6rne\u011fin sunucu g\u00fcncelleme, log y\u00f6netimi) i\u00e7in rol bazl\u0131 eri\u015fimlere de ihtiya\u00e7 var.<\/p>\n<h3><span id=\"Proje_bazli_gruplar\">Proje bazl\u0131 gruplar<\/span><\/h3>\n<p>\u0130yi bir ba\u015flang\u0131\u00e7 noktas\u0131 \u015fudur: <strong>Her proje i\u00e7in en az bir grup<\/strong> tan\u0131mlay\u0131n. \u00d6rne\u011fin:<\/p>\n<ul>\n<li><code>proj_corporate<\/code><\/li>\n<li><code>proj_shop<\/code><\/li>\n<li><code>proj_dashboard<\/code><\/li>\n<\/ul>\n<p>Bu gruplar, ilgili projenin kod dizinlerine ve loglar\u0131na eri\u015fme hakk\u0131n\u0131 belirler. \u00d6rnek dizin yap\u0131s\u0131:<\/p>\n<ul>\n<li>\/var\/www\/corporate (grup: proj_corporate)<\/li>\n<li>\/var\/www\/shop (grup: proj_shop)<\/li>\n<li>\/var\/www\/dashboard (grup: proj_dashboard)<\/li>\n<\/ul>\n<p>Bu dizinlerin sahipli\u011fini proje \u00f6zelinde bir sistem kullan\u0131c\u0131s\u0131yla (\u00f6r. <code>corporate-www<\/code>, <code>shop-www<\/code>) veya web sunucu kullan\u0131c\u0131s\u0131yla (www-data vb.) birlikte tasarlayabilirsiniz. Burada \u00f6nemli olan, <strong>grup \u00fczerinden insan kullan\u0131c\u0131lar\u0131n yetki almas\u0131d\u0131r<\/strong>.<\/p>\n<h3><span id=\"Rol_bazli_gruplar\">Rol bazl\u0131 gruplar<\/span><\/h3>\n<p>Sadece proje bazl\u0131 grup yetmez. Bir de rol bazl\u0131 gruplar tan\u0131mlamal\u0131s\u0131n\u0131z:<\/p>\n<ul>\n<li><code>role_dev<\/code>: Geli\u015ftiriciler.<\/li>\n<li><code>role_ops<\/code>: Sistem &amp; DevOps ekibi.<\/li>\n<li><code>role_ro<\/code>: Sadece log okuma, konfig\u00fcrasyon g\u00f6r\u00fcnt\u00fcleme yetkisi olanlar.<\/li>\n<\/ul>\n<p>Bir kullan\u0131c\u0131n\u0131n eri\u015fimi, \u201cproje + rol\u201d kombinasyonuyla belirlenir. \u00d6rnek:<\/p>\n<ul>\n<li>Ali: proj_shop + role_dev \u2192 sadece shop koduna yazabilir, shop i\u00e7in belirli sudo izinleri olabilir.<\/li>\n<li>Ay\u015fe: proj_shop + proj_dashboard + role_ops \u2192 iki proje i\u00e7in de bak\u0131m yapabilir, sistem seviyesinde daha geni\u015f sudo yetkisi olabilir.<\/li>\n<li>Ajans kullan\u0131c\u0131s\u0131: proj_corporate + role_ro \u2192 sadece corporate kodunu g\u00f6rebilir, log okuyabilir.<\/li>\n<\/ul>\n<h3><span id=\"Umask_ve_varsayilan_izinler\">Umask ve varsay\u0131lan izinler<\/span><\/h3>\n<p>Bu mimaride, projenin kod dizini i\u00e7in <strong>grup yazma iznini<\/strong> a\u00e7man\u0131z gerekir. \u00d6rne\u011fin \/var\/www\/shop dizini:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">chown -R shop-www:proj_shop \/var\/www\/shop\nchmod -R 2775 \/var\/www\/shop\n<\/code><\/pre>\n<p>Buradaki 2 (setgid biti), bu dizin alt\u0131nda olu\u015fturulan yeni dosya ve dizinlerin, otomatik olarak direncin grubunu (proj_shop) almas\u0131n\u0131 sa\u011flar. Ayr\u0131ca kullan\u0131c\u0131lar\u0131n <code>umask<\/code> de\u011ferini (genelde 002) grup yazma iznine izin verecek \u015fekilde ayarlamak gerekir ki ekip ayn\u0131 projede rahat\u00e7a \u00e7al\u0131\u015fabilsin.<\/p>\n<h2><span id=\"Adim_Adim_Kullanici_ve_Grup_Olusturma_Pratigi\">Ad\u0131m Ad\u0131m: Kullan\u0131c\u0131 ve Grup Olu\u015fturma Prati\u011fi<\/span><\/h2>\n<h3><span id=\"Temel_grup_ve_kullanicilarin_olusturulmasi\">Temel grup ve kullan\u0131c\u0131lar\u0131n olu\u015fturulmas\u0131<\/span><\/h3>\n<p>\u00d6rne\u011fimizde iki geli\u015ftirici (ali, ayse) ve tek proje (shop) \u00fczerinden gidelim. \u00d6nce gruplar\u0131 olu\u015ftural\u0131m:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">groupadd proj_shop\ngroupadd role_dev\ngroupadd role_ops\n<\/code><\/pre>\n<p>Sonra kullan\u0131c\u0131lar\u0131 ekleyelim:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">adduser ali\nadduser ayse\n<\/code><\/pre>\n<p>Kullan\u0131c\u0131lar\u0131 ilgili gruplara dahil edelim:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">usermod -aG proj_shop,role_dev ali\nusermod -aG proj_shop,role_ops ayse\n<\/code><\/pre>\n<p>Bu noktada:<\/p>\n<ul>\n<li>Ali: shop projesinde geli\u015ftirici.<\/li>\n<li>Ay\u015fe: shop projesinde operasyon sorumlusu.<\/li>\n<\/ul>\n<p>Elbette ger\u00e7ek hayatta daha fazla proje ve rol olabilir, ancak mant\u0131k ayn\u0131 kal\u0131r.<\/p>\n<h3><span id=\"Proje_dizini_izinleri\">Proje dizini izinleri<\/span><\/h3>\n<p>Shop projesinin kod dizinini ayarlayal\u0131m:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">mkdir -p \/var\/www\/shop\nchown -R shop-www:proj_shop \/var\/www\/shop\nchmod -R 2775 \/var\/www\/shop\n<\/code><\/pre>\n<p>Art\u0131k projede \u00e7al\u0131\u015fan herkes (proj_shop grubundakiler) bu dizine yazabilir. Fakat sistemdeki di\u011fer kullan\u0131c\u0131lar (\u00f6rne\u011fin ba\u015fka bir projenin geli\u015ftiricisi) buraya eri\u015femez.<\/p>\n<h3><span id=\"Home_dizinleri_ve_paylasim_stratejisi\">Home dizinleri ve payla\u015f\u0131m stratejisi<\/span><\/h3>\n<p>Geli\u015ftiricilerin ki\u015fisel <code>~\/<\/code> dizinlerini izole tutmak ve <strong>proje dosyalar\u0131n\u0131 her zaman \/var\/www alt\u0131nda<\/strong> konumland\u0131rmak iyi bir pratiktir. B\u00f6ylece:<\/p>\n<ul>\n<li>Kullan\u0131c\u0131 silerken sadece home dizinini temizler, projeye ait kodlar\u0131 dokunmadan b\u0131rakabilirsiniz.<\/li>\n<li>Yedekleme ve restore operasyonlar\u0131nda proje dizinlerine odaklanabilirsiniz.<\/li>\n<\/ul>\n<p>Yedeklemeyi tasarlarken, bu yap\u0131y\u0131 <a href=\"https:\/\/www.dchost.com\/blog\/object-storagea-otomatik-yedek-alma-rclone-restic-ve-cron-ile-cpanel-vps-yedekleri\/\">object storage\u2019a otomatik yedek alma stratejileri<\/a> ile birle\u015ftirmeniz uzun vadede i\u015finizi \u00e7ok kolayla\u015ft\u0131r\u0131r.<\/p>\n<h2><span id=\"sudoers_Tasarimi_Komut_Bazli_Yetki_Paylasimi\">sudoers Tasar\u0131m\u0131: Komut Bazl\u0131 Yetki Payla\u015f\u0131m\u0131<\/span><\/h2>\n<h3><span id=\"sudoers_dosyasina_bakis\">sudoers dosyas\u0131na bak\u0131\u015f<\/span><\/h3>\n<p>sudo kurallar\u0131 \/etc\/sudoers ve \/etc\/sudoers.d\/ alt\u0131ndaki dosyalarda tan\u0131mlan\u0131r. <strong>Asla<\/strong> sudoers dosyas\u0131n\u0131 do\u011frudan bir edit\u00f6rle d\u00fczenlemeyin; her zaman <code>visudo<\/code> kullan\u0131n. Bu komut, dosya kaydedilmeden \u00f6nce s\u00f6zdizimini kontrol eder.<\/p>\n<h3><span id=\"etcsudoersd_ile_moduler_yapi\">\/etc\/sudoers.d ile mod\u00fcler yap\u0131<\/span><\/h3>\n<p>Karma\u015f\u0131k yap\u0131larda, tek bir b\u00fcy\u00fck \/etc\/sudoers dosyas\u0131 yerine, proje veya rol bazl\u0131 dosyalar olu\u015fturmak i\u015fleri \u00e7ok daha okunabilir hale getirir:<\/p>\n<ul>\n<li>\/etc\/sudoers.d\/proj_shop<\/li>\n<li>\/etc\/sudoers.d\/proj_corporate<\/li>\n<li>\/etc\/sudoers.d\/role_ops_global<\/li>\n<\/ul>\n<p>Her dosyan\u0131n ba\u015f\u0131na \u015fu sat\u0131r\u0131 eklemek iyidir:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">Defaults    env_reset\n<\/code><\/pre>\n<p>B\u00f6ylece sudo ile komut \u00e7al\u0131\u015ft\u0131r\u0131rken ortam de\u011fi\u015fkenleri temizlenir ve s\u00fcrpriz davran\u0131\u015flar azalm\u0131\u015f olur.<\/p>\n<h3><span id=\"Alias_kullanarak_okunabilirlik\">Alias kullanarak okunabilirlik<\/span><\/h3>\n<p>sudoers i\u00e7inde alias tan\u0131mlamak, karma\u015f\u0131kl\u0131\u011f\u0131 azalt\u0131r. \u00d6rne\u011fin shop projesi i\u00e7in:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">User_Alias   SHOP_DEVS = %proj_shop\nUser_Alias   SHOP_OPS  = %role_ops\n\nCmnd_Alias   SHOP_DEPLOY = \/usr\/local\/bin\/deploy_shop.sh\nCmnd_Alias   SHOP_SERVICE = \/bin\/systemctl restart php-fpm, \n                              \/bin\/systemctl restart nginx\n<\/code><\/pre>\n<p>Daha sonra bu alias\u2019lar\u0131 yetki tan\u0131m\u0131nda kullanabilirsiniz:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">SHOP_DEVS ALL=(root) NOPASSWD: SHOP_DEPLOY\nSHOP_OPS  ALL=(root) NOPASSWD: SHOP_DEPLOY, SHOP_SERVICE\n<\/code><\/pre>\n<p>Burada ne elde ettik?<\/p>\n<ul>\n<li>Geli\u015ftiriciler sadece deploy script\u2019ini \u00e7al\u0131\u015ft\u0131rabiliyor.<\/li>\n<li>Operasyon ekibi deploy\u2019a ek olarak servis restart edebiliyor.<\/li>\n<li>Hi\u00e7 kimse genel bir <code>sudo su -<\/code> yetkisine sahip de\u011fil.<\/li>\n<\/ul>\n<h3><span id=\"Sifre_zorunlulugu_vs_NOPASSWD\">\u015eifre zorunlulu\u011fu vs NOPASSWD<\/span><\/h3>\n<p>G\u00fcvenlik\u2013kullan\u0131labilirlik dengesini, komut seviyesinde kurabilirsiniz:<\/p>\n<ul>\n<li>S\u0131k kullan\u0131lan, d\u00fc\u015f\u00fck riskli komutlar i\u00e7in <code>NOPASSWD<\/code> verilebilir (\u00f6r. statik dosya clear script\u2019i).<\/li>\n<li>Kritik komutlar i\u00e7in (\u00f6rn. firewall restart, kullan\u0131c\u0131 y\u00f6netimi) mutlaka parola isteyin.<\/li>\n<\/ul>\n<p>\u00d6rne\u011fin:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">SHOP_OPS ALL=(root) NOPASSWD: SHOP_DEPLOY, SHOP_SERVICE\nSHOP_OPS ALL=(root) \/usr\/sbin\/ufw reload\n<\/code><\/pre>\n<p>Burada ufw reload i\u00e7in parola istenecektir (NOPASSWD tan\u0131ml\u0131 olmad\u0131\u011f\u0131 i\u00e7in).<\/p>\n<h3><span id=\"root_erisimini_tamamen_mi_kapatmali\">root eri\u015fimini tamamen mi kapatmal\u0131?<\/span><\/h3>\n<p>Pratikte \u00e7o\u011fu prod ortamda <strong>SSH ile do\u011frudan root giri\u015fi kapat\u0131lmal\u0131<\/strong>, fakat sudo ile root olma ihtimali (\u00f6rne\u011fin acil durumlar i\u00e7in ops ekibinde) korunmal\u0131d\u0131r. Bunun detaylar\u0131n\u0131, hem bu mimariyle uyumlu hem de daha geni\u015f kapsaml\u0131 \u015fekilde <a href=\"https:\/\/www.dchost.com\/blog\/vps-sunucu-guvenligi-nasil-saglanir-kapiyi-acik-birakmadan-yasamanin-sirri\/\">VPS sunucu g\u00fcvenli\u011fi rehberimizde<\/a> anlatt\u0131k.<\/p>\n<h2><span id=\"SSH_Anahtar_Yonetimi_ve_sudo_Modelinin_Birlikte_Calismasi\">SSH, Anahtar Y\u00f6netimi ve sudo Modelinin Birlikte \u00c7al\u0131\u015fmas\u0131<\/span><\/h2>\n<h3><span id=\"Parola_yerine_SSH_anahtari\">Parola yerine SSH anahtar\u0131<\/span><\/h3>\n<p>sudo mimarisini do\u011fru kursan\u0131z bile, zay\u0131f bir SSH parolas\u0131 t\u00fcm plan\u0131 \u00e7\u00f6pe atabilir. Bu nedenle m\u00fcmk\u00fcn oldu\u011funca <strong>yaln\u0131zca SSH anahtar\u0131 ile giri\u015f<\/strong> kabul eden bir yap\u0131 kurman\u0131z\u0131 \u00f6neririz. Bu konuda ad\u0131m ad\u0131m anlat\u0131m i\u00e7in <a href=\"https:\/\/www.dchost.com\/blog\/ssh-anahtar-yonetimi-ve-yetki-paylasimi-kucuk-ekipler-icin-guvenli-vps-erisimi\/\">SSH anahtar y\u00f6netimi ve yetki payla\u015f\u0131m\u0131 rehberimize<\/a> g\u00f6z atabilirsiniz.<\/p>\n<p>Genel yakla\u015f\u0131m \u015fu olmal\u0131:<\/p>\n<ul>\n<li>Her ekip \u00fcyesi i\u00e7in <strong>ayr\u0131 bir Linux kullan\u0131c\u0131s\u0131<\/strong> olu\u015fturun (ali, ayse vb.).<\/li>\n<li>Her kullan\u0131c\u0131n\u0131n kendi SSH anahtar\u0131n\u0131 <code>~\/.ssh\/authorized_keys<\/code> i\u00e7ine ekleyin.<\/li>\n<li>SSH \u00fczerinde <code>PasswordAuthentication no<\/code> ve <code>PermitRootLogin no<\/code> ayarlar\u0131n\u0131 yap\u0131n.<\/li>\n<li>sudo izinlerini az \u00f6nce anlatt\u0131\u011f\u0131m\u0131z \u015fekilde, roller ve projelere g\u00f6re tan\u0131mlay\u0131n.<\/li>\n<\/ul>\n<p>Bu model sayesinde, bir ekip \u00fcyesi ayr\u0131ld\u0131\u011f\u0131nda yapman\u0131z gereken tek \u015fey ilgili kullan\u0131c\u0131y\u0131 ve anahtarlar\u0131n\u0131 kald\u0131rmak; root parolas\u0131n\u0131 de\u011fi\u015ftirmek ve herkese yeniden da\u011f\u0131tmak gibi zahmetler ortadan kalkar.<\/p>\n<h3><span id=\"Coklu_ortamlar_dev_staging_prod\">\u00c7oklu ortamlar: dev, staging, prod<\/span><\/h3>\n<p>\u00d6zellikle SaaS veya e-ticaret projelerinde, genellikle en az \u00fc\u00e7 ortam bulunur:<\/p>\n<ul>\n<li>Geli\u015ftirme (dev)<\/li>\n<li>Test\/Staging<\/li>\n<li>\u00dcretim (prod)<\/li>\n<\/ul>\n<p>Bu ortamlar\u0131 tamamen farkl\u0131 VPS\u2019lerde tuttu\u011funuz senaryolarda bile, kullan\u0131c\u0131\u2013grup\u2013sudo modelinin isimlendirmesini ayn\u0131 tutmak, ekiplerin kafas\u0131n\u0131 kar\u0131\u015ft\u0131rmaz. Sadece yetki seviyelerini de\u011fi\u015ftirirsiniz. \u00d6rne\u011fin:<\/p>\n<ul>\n<li>Dev ortam\u0131nda geli\u015ftiricilere daha geni\u015f sudo hakk\u0131 verilebilir.<\/li>\n<li>Prod ortam\u0131nda geli\u015ftiriciler sadece deploy script\u2019lerini \u00e7al\u0131\u015ft\u0131rabilir, servis restart ve sistem ayarlar\u0131 yaln\u0131zca ops ekibine a\u00e7\u0131k olabilir.<\/li>\n<\/ul>\n<h2><span id=\"Tipik_Senaryolar_Icin_Ornek_Mimariler\">Tipik Senaryolar \u0130\u00e7in \u00d6rnek Mimariler<\/span><\/h2>\n<h3><span id=\"Senaryo_1_Ajansin_coklu_musteri_siteleri\">Senaryo 1: Ajans\u0131n \u00e7oklu m\u00fc\u015fteri siteleri<\/span><\/h3>\n<p>Bir dijital ajans oldu\u011funuzu ve DCHost \u00fczerinde onlarca m\u00fc\u015fteri sitesini ayn\u0131 VPS havuzunda y\u00f6netti\u011finizi d\u00fc\u015f\u00fcn\u00fcn. Her m\u00fc\u015fteri i\u00e7in ayr\u0131 bir proje grubu olu\u015fturabilirsiniz:<\/p>\n<ul>\n<li>proj_markaA, proj_markaB, proj_markaC\u2026<\/li>\n<\/ul>\n<p>Ajans i\u00e7i ekip rolleri:<\/p>\n<ul>\n<li>role_wp_dev (WordPress geli\u015ftiriciler)<\/li>\n<li>role_frontend<\/li>\n<li>role_ops (sunucu y\u00f6neten az say\u0131daki ki\u015fi)<\/li>\n<\/ul>\n<p>Bir geli\u015ftirici hem proj_markaA hem proj_markaB\u2019de \u00e7al\u0131\u015f\u0131yorsa, iki proje grubuna da eklenir. Fakat role_ops grubunda de\u011filse, sadece belirli deploy veya cache temizleme script\u2019lerini \u00e7al\u0131\u015ft\u0131rabilir. Daha kapsaml\u0131 ajans senaryosu i\u00e7in <a href=\"https:\/\/www.dchost.com\/blog\/ajanslar-icin-hosting-paneli-erisim-yonetimi-uygulanabilir-rehber\/\">ajanslar i\u00e7in panel eri\u015fim y\u00f6netimi rehberimiz<\/a> de iyi bir tamamlay\u0131c\u0131 olacakt\u0131r.<\/p>\n<h3><span id=\"Senaryo_2_Urun_sirketinde_backend_frontend_ve_DevOps_ayrimi\">Senaryo 2: \u00dcr\u00fcn \u015firketinde backend, frontend ve DevOps ayr\u0131m\u0131<\/span><\/h3>\n<p>Bir \u00fcr\u00fcn \u015firketinde genellikle \u015fu roller vard\u0131r:<\/p>\n<ul>\n<li>Backend ekibi<\/li>\n<li>Frontend ekibi<\/li>\n<li>DevOps\/SRE ekibi<\/li>\n<\/ul>\n<p>Burada strateji:<\/p>\n<ul>\n<li>Backend ekibi: API kod dizinlerine yazabilir, belirli log dizinlerini okuyabilir, sadece deploy script\u2019ini ve migration komutlar\u0131n\u0131 sudo ile \u00e7al\u0131\u015ft\u0131rabilir.<\/li>\n<li>Frontend ekibi: Sadece frontend build\/deploy script\u2019lerini \u00e7al\u0131\u015ft\u0131rabilir, sunucu yap\u0131land\u0131rmas\u0131na dokunamaz.<\/li>\n<li>DevOps ekibi: Servis restart, firewall, sistem g\u00fcncelleme gibi g\u00f6revler i\u00e7in daha geni\u015f sudo yetkisine sahip olur.<\/li>\n<\/ul>\n<p>B\u00f6ylece, yanl\u0131\u015fl\u0131kla \u201ct\u00fcm sunucuyu etkileyen\u201d bir komutu \u00e7al\u0131\u015ft\u0131rma riski backend veya frontend taraf\u0131nda ciddi \u00f6l\u00e7\u00fcde azalt\u0131lm\u0131\u015f olur.<\/p>\n<h3><span id=\"Senaryo_3_Dis_hizmet_saglayici_veya_freelance_gelistirici\">Senaryo 3: D\u0131\u015f hizmet sa\u011flay\u0131c\u0131 veya freelance geli\u015ftirici<\/span><\/h3>\n<p>D\u0131\u015far\u0131dan destek ald\u0131\u011f\u0131n\u0131z bir freelance geli\u015ftiriciye \u201cge\u00e7ici\u201d ama kontroll\u00fc eri\u015fim vermek istiyorsan\u0131z:<\/p>\n<ul>\n<li>Sadece ilgili projeye ait gruba ekleyin (\u00f6r. proj_shop).<\/li>\n<li>role_dev veya role_ro gibi k\u0131s\u0131tl\u0131 bir rol verin.<\/li>\n<li>sudo taraf\u0131nda, sadece belirli script\u2019leri \u00e7al\u0131\u015ft\u0131rmas\u0131na izin veren minimal bir tan\u0131m ekleyin.<\/li>\n<li>\u0130\u015f bitti\u011finde kullan\u0131c\u0131y\u0131 silin, proje dizini ve loglar korunmaya devam eder.<\/li>\n<\/ul>\n<p>Bu sayede tek bir \u201cortak root parolas\u0131\u201d asla olu\u015fmaz, eri\u015fim her zaman ki\u015fisel hesaplar \u00fczerinden izlenebilir kal\u0131r.<\/p>\n<h2><span id=\"Guvenlik_Boyutu_Hangi_Hatalardan_Ozellikle_Kacinmalisiniz\">G\u00fcvenlik Boyutu: Hangi Hatalardan \u00d6zellikle Ka\u00e7\u0131nmal\u0131s\u0131n\u0131z?<\/span><\/h2>\n<h3><span id=\"Herkes_icin_tek_kullanici_modeli\">\u201cHerkes i\u00e7in tek kullan\u0131c\u0131\u201d modeli<\/span><\/h3>\n<p>En s\u0131k g\u00f6rd\u00fc\u011f\u00fcm\u00fcz anti-pattern, t\u00fcm ekibin <code>ubuntu<\/code>, <code>admin<\/code> veya benzeri tek bir kullan\u0131c\u0131y\u0131, payla\u015f\u0131lan bir SSH anahtar\u0131yla kullanmas\u0131. Bu modelde:<\/p>\n<ul>\n<li>Kimin ne yapt\u0131\u011f\u0131n\u0131 loglardan bile ay\u0131rt edemezsiniz.<\/li>\n<li>Bir ki\u015fi ayr\u0131ld\u0131\u011f\u0131nda anahtar\u0131 de\u011fi\u015ftirmek zorundas\u0131n\u0131z; herkesi etkileyen operasyonel y\u00fck.<\/li>\n<li>sudoers \u00fczerinden ki\u015fiye \u00f6zel yetki tan\u0131m\u0131 yapamazs\u0131n\u0131z.<\/li>\n<\/ul>\n<p>Bu modelden bir an \u00f6nce uzakla\u015fmak gerekir. DCHost olarak yeni a\u00e7\u0131lan VPS\u2019lerde, <a href=\"https:\/\/www.dchost.com\/blog\/yeni-vpste-ilk-24-saat-guncelleme-guvenlik-duvari-ve-kullanici-hesaplari\/\">ilk 24 saatte<\/a> mutlaka ki\u015fisel kullan\u0131c\u0131lar ve sudo modelinin devreye al\u0131nmas\u0131n\u0131 \u00f6neriyoruz.<\/p>\n<h3><span id=\"sudo_ALLALLALL_ALL_dagitmak\">sudo ALL=(ALL:ALL) ALL da\u011f\u0131tmak<\/span><\/h3>\n<p>Bazen kolay\u0131na ka\u00e7\u0131l\u0131p t\u00fcm geli\u015ftiricilere \u015fu yetki veriliyor:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">%dev ALL=(ALL:ALL) ALL\n<\/code><\/pre>\n<p>Bu, pratikte herkese tam root yetkisi vermektir. Prod ortamda bunu yapmak, hem g\u00fcvenlik hem de operasyonel riskleri inan\u0131lmaz art\u0131r\u0131r. Bunun yerine:<\/p>\n<ul>\n<li>Hangi komutlar\u0131n ger\u00e7ekten gerekti\u011fini belirleyin.<\/li>\n<li>Bu komutlar\u0131 Cmnd_Alias ile gruplay\u0131n.<\/li>\n<li>Sadece bu alias\u2019lara izin verin.<\/li>\n<\/ul>\n<h3><span id=\"sudo_ile_ortam_degiskeni_manipulasyonu\">sudo ile ortam de\u011fi\u015fkeni manip\u00fclasyonu<\/span><\/h3>\n<p>Sudo kullan\u0131rken ortam de\u011fi\u015fkenlerinin (PATH, LD_PRELOAD, LD_LIBRARY_PATH vb.) istismar edilmemesine dikkat etmek gerekir. Bu y\u00fczden sudoers i\u00e7inde genellikle \u015funlar\u0131 kullanmak iyi bir pratiktir:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">Defaults    secure_path=&quot;\/usr\/local\/sbin:\/usr\/local\/bin:\/usr\/sbin:\/usr\/bin:\/sbin:\/bin&quot;\nDefaults    env_reset\n<\/code><\/pre>\n<p>B\u00f6ylece kullan\u0131c\u0131 kendi PATH\u2019ine k\u00f6t\u00fc niyetli bir komut ekleyerek, sudo ile beklenmedik bir \u015fey \u00e7al\u0131\u015ft\u0131rma \u015fans\u0131n\u0131 azalt\u0131rs\u0131n\u0131z.<\/p>\n<h2><span id=\"DCHost_VPS_Uzerinde_Bu_Mimariyi_Nasil_Konumlandirabilirsiniz\">DCHost VPS \u00dczerinde Bu Mimariyi Nas\u0131l Konumland\u0131rabilirsiniz?<\/span><\/h2>\n<h3><span id=\"Planlama_adimi_Kaynak_degil_yetki_de_tasarlanmali\">Planlama ad\u0131m\u0131: Kaynak de\u011fil, yetki de tasarlanmal\u0131<\/span><\/h3>\n<p>DCHost\u2019tan Linux VPS al\u0131rken \u00e7o\u011fu m\u00fc\u015fterimiz \u00f6nce vCPU, RAM ve disk planlamas\u0131n\u0131 konu\u015fuyor. Bunun yan\u0131nda ayn\u0131 ciddiyetle \u015fu \u00fc\u00e7 soruyu da planlama a\u015famas\u0131nda yan\u0131tlaman\u0131z\u0131 \u00f6neririz:<\/p>\n<ul>\n<li>Bu VPS\u2019te ka\u00e7 ayr\u0131 proje olacak?<\/li>\n<li>Bu projelere kimler, hangi rollerle eri\u015fecek?<\/li>\n<li>Hangi rollere hangi sudo komutlar\u0131 ger\u00e7ekten gerekli?<\/li>\n<\/ul>\n<p>Bu sorular\u0131 netle\u015ftirdi\u011finizde, kullan\u0131c\u0131\u2013grup\u2013sudo mimarisini ilk g\u00fcnden do\u011fru kurup, ileride b\u00fcy\u00fcd\u00fck\u00e7e yama yapmaktan kurtulursunuz.<\/p>\n<h3><span id=\"Onerilen_ilk_kurulum_akisi\">\u00d6nerilen ilk kurulum ak\u0131\u015f\u0131<\/span><\/h3>\n<p>DCHost \u00fczerinde yeni bir Linux VPS a\u00e7t\u0131\u011f\u0131n\u0131zda pratik bir ak\u0131\u015f \u015f\u00f6yle olabilir:<\/p>\n<ol>\n<li>SSH ile root olarak ba\u011flan\u0131n (ilk eri\u015fim i\u00e7in).<\/li>\n<li>Sistem g\u00fcncellemesi ve temel g\u00fcvenlik ayarlar\u0131n\u0131 uygulay\u0131n.<\/li>\n<li>Kendi ki\u015fisel kullan\u0131c\u0131n\u0131z\u0131 olu\u015fturun ve sudo yetkisi verin.<\/li>\n<li>SSH\u2019de root giri\u015fini kapat\u0131n, sadece anahtar ile giri\u015fe izin verin.<\/li>\n<li>Proje gruplar\u0131n\u0131 (<code>proj_*<\/code>) ve rol gruplar\u0131n\u0131 (<code>role_*<\/code>) olu\u015fturun.<\/li>\n<li>Kullan\u0131c\u0131lar\u0131 bu gruplara yerle\u015ftirin, proje dizinlerini ve izinlerini ayarlay\u0131n.<\/li>\n<li>\/etc\/sudoers.d alt\u0131nda proje\/rol bazl\u0131 sudo kurallar\u0131n\u0131 yaz\u0131n.<\/li>\n<\/ol>\n<p>Bu ad\u0131mlar\u0131n bir k\u0131sm\u0131, daha \u00f6nce haz\u0131rlad\u0131\u011f\u0131m\u0131z <a href=\"https:\/\/www.dchost.com\/blog\/vps-sunucu-guvenligi-pratik-olceklenebilir-ve-dogrulanabilir-yaklasimlar\/\">VPS sunucu g\u00fcvenli\u011fi i\u00e7in pratik yakla\u015f\u0131mlar<\/a> rehberimizle de bire bir uyumludur.<\/p>\n<h2><span id=\"Sonuc_Saglam_Bir_Yetki_Mimarisi_Sizi_Yillarca_Tasiyabilir\">Sonu\u00e7: Sa\u011flam Bir Yetki Mimarisi, Sizi Y\u0131llarca Ta\u015f\u0131yabilir<\/span><\/h2>\n<p>Linux VPS\u2019inizde kullan\u0131c\u0131, grup ve sudo mimarisini ilk g\u00fcnden do\u011fru kurdu\u011funuzda, bunun etkisini yaln\u0131zca g\u00fcvenlik taraf\u0131nda de\u011fil; operasyonel verimlilik, hata ay\u0131klama h\u0131z\u0131 ve ekip i\u00e7i huzurda da hissedersiniz. Hangi dosyay\u0131 kimin de\u011fi\u015ftirdi\u011fini, hangi komutu kimin \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131 bilmek; \u00fcretim ortam\u0131nda \u201ckim ne yapt\u0131?\u201d pani\u011fini ciddi \u00f6l\u00e7\u00fcde azalt\u0131r.<\/p>\n<p>DCHost\u2019ta kendi altyap\u0131m\u0131z\u0131 da ayn\u0131 prensiplerle y\u00f6netiyoruz: proje bazl\u0131 gruplar, rol bazl\u0131 gruplar, minimal ve denetlenebilir sudo yetkileri, zorunlu SSH anahtar kullan\u0131m\u0131 ve root eri\u015fiminin s\u0131k\u0131 kontrol\u00fc. Siz de \u00e7oklu proje, ajans yap\u0131s\u0131 veya SaaS \u00fcr\u00fcnleri y\u00f6netiyorsan\u0131z, bu yaz\u0131daki modeli kendi senaryonuza uyarlayarak ba\u015flayabilirsiniz.<\/p>\n<p>Yeni bir Linux VPS planl\u0131yorsan\u0131z, ekibinizin rol da\u011f\u0131l\u0131m\u0131 ve projelerinizin yap\u0131s\u0131 hakk\u0131nda bizimle payla\u015faca\u011f\u0131n\u0131z birka\u00e7 bilgi, size \u00f6zel bir yetki mimarisi \u00f6nermemizi kolayla\u015ft\u0131r\u0131r. DCHost \u00fczerinden se\u00e7ece\u011finiz VPS, dedicated veya colocation \u00e7\u00f6z\u00fcmlerinde; kullan\u0131c\u0131, grup ve sudo tasar\u0131m\u0131n\u0131 en ba\u015fta birlikte kurgulamak, ileride ya\u015fayabilece\u011finiz pek \u00e7ok g\u00fcvenlik ve operasyon probleminden sizi koruyacakt\u0131r.<\/p>\n<p>Son ad\u0131m olarak, bu yaz\u0131y\u0131 <a href=\"https:\/\/www.dchost.com\/blog\/vps-izleme-ve-uyari-nasil-kurulur-prometheus-grafana-ve-node-exporter-ile-sessiz-alarmlari-konusturmak\/\">VPS izleme ve uyar\u0131 kurulum rehberi<\/a> ile birle\u015ftirip, hem yetki modelinizin hem de sistem kaynaklar\u0131n\u0131z\u0131n s\u00fcrekli g\u00f6zetim alt\u0131nda oldu\u011fundan emin olman\u0131z\u0131 \u00f6neririz.<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>\u0130&ccedil;indekiler1 Linux VPS\u2019te Yetki Tasar\u0131m\u0131n\u0131 Do\u011fru Kurman\u0131n Ger\u00e7ek Etkisi2 Kavramlar: Kullan\u0131c\u0131, Grup ve sudo Aras\u0131ndaki \u0130li\u015fki2.1 POSIX izin modeli h\u0131zl\u0131 \u00f6zet2.2 Kullan\u0131c\u0131 t\u00fcrleri: root, sistem kullan\u0131c\u0131lar\u0131 ve normal kullan\u0131c\u0131lar2.3 sudo neden do\u011frudan root yerine tercih edilmeli?3 \u00c7oklu Proje ve Ekipler \u0130\u00e7in Mant\u0131ksal Model3.1 Hedef: En az ayr\u0131cal\u0131k ve izlenebilirlik3.2 Proje bazl\u0131 gruplar3.3 Rol bazl\u0131 gruplar3.4 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3678,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26],"tags":[],"class_list":["post-3677","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-teknoloji"],"_links":{"self":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts\/3677","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/comments?post=3677"}],"version-history":[{"count":0,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts\/3677\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/media\/3678"}],"wp:attachment":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/media?parent=3677"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/categories?post=3677"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/tags?post=3677"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}