−25%

Windows کی سالانہ ادائیگی پر، 31 اکتوبر تک۔ پلانز دیکھیں

EQVPS

VPS پر sudo صارف کیسے بنائیں اور root چھوڑیں

Ubuntu یا Debian پر root کے بغیر sudo صارف بنائیں، اسے اپنی SSH کلید دیں، ٹیسٹ کریں، پھر root لاگ اِن بند کریں — ایسی ترتیب سے کہ آپ باہر لاک نہ ہوں۔

تقریباً ہر نیا VPS ایک ہی طرح شروع ہوتا ہے: آپ root کے طور پر لاگ ان کرتے ہیں، کچھ چیزیں انسٹال کرتے ہیں، اور ایک مہینے بعد بھی root ہی ہوتے ہیں۔ یہ اس دن تک چلتا ہے جب کوئی پیسٹ کیا ہوا اسکرپٹ غلط فولڈر حذف کر دے۔ sudo کے ساتھ عام صارف سیٹ کرنے میں پانچ منٹ لگتے ہیں، اور ترتیب کمانڈز سے زیادہ اہم ہے — ترتیب غلط ہوئی تو آپ خود کو باہر لاک کر لیں گے۔

یہ Ubuntu 22.04/24.04 اور Debian 12 کے لیے محفوظ ترتیب ہے۔

1. صارف بنائیں

root کے طور پر:

adduser deploy
usermod -aG sudo deploy

adduser پاس ورڈ اور کچھ اختیاری معلومات مانگتا ہے (ان پر بس Enter دبائیں)۔ اصلی پاس ورڈ چنیں: یہ آپ sudo کے لیے ٹائپ کریں گے۔ Debian کی مختصر امیج پر اگر کمانڈ موجود نہ ہو تو پہلے apt install -y sudo چلائیں۔

2. اسے اپنی SSH کلید دیں

سب سے آسان طریقہ یہ ہے کہ root کی مجاز کلیدیں درست ملکیت کے ساتھ کاپی کریں:

rsync --archive --chown=deploy:deploy /root/.ssh /home/deploy

اگر آپ ہاتھ سے کرنا چاہیں:

mkdir -p /home/deploy/.ssh
cp /root/.ssh/authorized_keys /home/deploy/.ssh/
chown -R deploy:deploy /home/deploy/.ssh
chmod 700 /home/deploy/.ssh
chmod 600 /home/deploy/.ssh/authorized_keys

غلط اجازتیں وہ کلاسیکی وجہ ہیں جس سے کلید والا لاگ ان خاموشی سے ناکام ہو جاتا ہے۔ SSH ایسی authorized_keys فائل کو نظرانداز کرتا ہے جس میں دوسرے صارفین لکھ سکتے ہوں۔

3. کچھ بدلنے سے پہلے ٹیسٹ کریں

root سیشن کھلا رکھیں۔ ایک نئے ٹرمینل میں:

ssh -p 22 deploy@203.0.113.10
sudo whoami

اپنا IP اور پورٹ استعمال کریں — NAT پلان پر یہ ڈیش بورڈ والا ذاتی SSH پورٹ ہے۔ اگر sudo whoami نے root لکھا تو سب ٹھیک ہے۔ اگر لاگ ان ناکام ہو تو ٹھیک کرنے کے لیے root والی ونڈو ابھی آپ کے پاس ہے۔

4. root لاگ ان بند کریں

اب دروازہ بند کریں۔ مرکزی کنفیگ میں ترمیم کرنے کے بجائے ایک چھوٹی drop-in فائل بنائیں:

cat > /etc/ssh/sshd_config.d/10-hardening.conf <<'EOF'
PermitRootLogin no
PasswordAuthentication no
EOF
sshd -t && systemctl reload ssh

sshd -t پہلے سنٹیکس چیک کرتا ہے۔ خراب کنفیگ اور reload وہ راستہ ہے جس سے لوگ کنسول کے محتاج ہو جاتے ہیں۔ PasswordAuthentication no تبھی معنی رکھتا ہے جب نئے صارف کے لیے کلید سے لاگ ان چل رہا ہو — جو آپ نے ابھی ٹیسٹ کیا۔

ایک اور ٹرمینل کھولیں اور تصدیق کریں کہ root مسترد ہوتا ہے اور deploy اب بھی اندر جا سکتا ہے۔ پھر پرانا root سیشن بند کریں۔

5. اختیاری: آٹومیشن کے لیے پاس ورڈ کے بغیر sudo

اگر کسی ڈیپلائے اسکرپٹ کو سوال کے بغیر sudo چاہیے تو اسے بالکل وہی دیں، اس سے زیادہ نہیں:

visudo -f /etc/sudoers.d/deploy
deploy ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart myapp

سچ پوچھیں تو NOPASSWD: ALL پرکشش لگتا ہے، لیکن اس کا مطلب ہے کہ چوری شدہ کلید root کے برابر ہے۔ اسے ان کمانڈز تک محدود رکھیں جو آٹومیشن چلاتی ہے۔

اگر کچھ غلط ہو جائے

ڈیش بورڈ کا ویب کنسول نہ SSH پر انحصار کرتا ہے نہ فائر وال پر۔ وہاں سے لاگ ان کریں، /etc/ssh/sshd_config.d/ والی فائل ٹھیک کریں، reload کریں، کام ختم۔ پوری بحالی کا طریقہ ہم نے لاک ہو جانے والے VPS میں دوبارہ کیسے جائیں میں لکھا ہے۔

آگے کیا کریں

ہر پلان کے رسائی کے اختیارات رسائی کی دستاویزات میں ہیں۔ $3 والا Nano بھی root کے بغیر صارف کا حق دار ہے — یہ سب سے سستا سیکیورٹی اپ گریڈ ہے۔

عمومی سوالات

root ہی کیوں نہ استعمال کرتا رہوں؟

جو کچھ آپ root کے طور پر چلاتے ہیں وہ پورا سسٹم خراب کر سکتا ہے، ٹائپنگ کی ایک غلطی بھی۔ بوٹس بھی پہلے 'root' نام آزماتے ہیں، اس لیے root لاگ ان بند کرنے سے سب سے زیادہ آزمایا جانے والا ہدف ختم ہو جاتا ہے۔ نام والا صارف اور sudo ہر اختیاری کمانڈ سے پہلے آپ کو ایک وقفہ اور چلائی گئی چیزوں کا ریکارڈ دیتا ہے۔

اگر میں خود کو باہر لاک کر بیٹھوں تو؟

اپنے ڈیش بورڈ میں ویب کنسول استعمال کریں۔ یہ اس وقت بھی کام کرتا ہے جب SSH خراب ہو یا فائر وال آپ کو روک رہی ہو، اس لیے آپ اندر جا کر sshd_config ٹھیک کر سکتے ہیں۔ اسی لیے root سیشن بند کرنے سے پہلے نئے صارف کو ٹیسٹ کیا جاتا ہے۔

کیا پاس ورڈ کے بغیر sudo کی اجازت دوں؟

ذاتی اکاؤنٹ کے لیے پاس ورڈ کا سوال برقرار رکھیں — اگر SSH کلید لیک ہو جائے تو یہ دفاع کی آخری لکیر ہے۔ پاس ورڈ کے بغیر sudo آٹومیشن کے لیے الگ ڈیپلائے صارف کے لیے مناسب ہے، بشرطیکہ یہ انہی کمانڈز تک محدود ہو جن کی اسے واقعی ضرورت ہے۔

میرے Debian سرور پر sudo کمانڈ موجود نہیں۔ کیوں؟

Debian کی مختصر امیجز میں یہ ہمیشہ شامل نہیں ہوتی۔ root کے طور پر 'apt install -y sudo' سے انسٹال کریں، پھر اپنے صارف کو sudo گروپ میں شامل کریں۔

کون سا SSH پورٹ استعمال کروں؟

وہی جو ڈیش بورڈ میں دکھایا گیا ہے۔ مخصوص IP والے پلان آپ کے IP پر پورٹ 22 استعمال کرتے ہیں؛ NAT پلان آپ کا ذاتی SSH پورٹ استعمال کرتے ہیں۔

تبصرے

ابھی کوئی تبصرہ نہیں۔ پہلے بنیں۔

ایک تبصرہ چھوڑیں

تبصرے ظاہر ہونے سے پہلے moderate کیے جاتے ہیں۔