Switch User on Server
Switch User on Server
ภาพรวมปัญหา
ทำงานเป็น root มาตลอด เสี่ยงเกินไป (พิมพ์ผิดคำสั่งเดียวพังทั้งระบบได้) ต้องการสลับไปใช้ user ธรรมดา (green) ที่มีอยู่แล้วในเครื่อง แต่ไม่เคยใช้งานจริงมานาน
ลำดับขั้นตอนแก้ปัญหาจริง (เรียงตามที่ทำ)
ขั้นที่ 1 — ตรวจสอบว่า user green พร้อมใช้แค่ไหน
cat /etc/passwd | grep green # เช็คว่ามี user green ไหม
groups green # เช็คว่าอยู่ group sudo ไหม
sudo -l -U green # เช็คสิทธิ์ sudo ว่ามีจริงไหม
ls -la /home/green/.ssh/ # เช็คว่ามี SSH key ไหม
cat /home/green/.ssh/authorized_keys # ดูว่า key ไหนบ้างที่ใช้เข้าได้ผลที่เจอ: green มี sudo เต็มสิทธิ์ (ALL:ALL) และมี SSH key อยู่ 2 อัน แต่เป็น key ของเครื่องเก่าที่พังไปแล้ว — เข้าไม่ได้จริง
ขั้นที่ 2 — ทดสอบเข้า พบว่าเข้าไม่ได้ (Permission denied)
ssh green@157.245.203.39
# → Permission denied (publickey)สาเหตุ: ไม่มี private key คู่กับ public key เก่าที่ค้างอยู่ ต้องสร้างคู่ใหม่
ขั้นที่ 3 — สร้าง SSH key ใหม่ (ทำที่เครื่อง Arch เอง ไม่ใช่บน droplet)
ssh-keygen -t ed25519 -C "green-knupan-2026" -f ~/.ssh/id_ed25519_knupan_green
cat ~/.ssh/id_ed25519_knupan_green.pub # copy ผลลัพธ์ไว้ขั้นที่ 4 — เอา public key ไปเพิ่มให้ green (ทำผ่าน root session บน droplet)
echo "ssh-ed25519 AAAA...(public key ที่ copy มา)" >> /home/green/.ssh/authorized_keys
chown -R green:green /home/green/.ssh
chmod 700 /home/green/.ssh
chmod 600 /home/green/.ssh/authorized_keysขั้นที่ 5 — ทดสอบเข้าใหม่ (จากเครื่อง Arch)
ssh -i ~/.ssh/id_ed25519_knupan_green green@157.245.203.39
sudo whoami # ควรได้ root กลับมา = sudo ใช้งานได้จริงผล: เข้าได้แล้ว ✅
ขั้นที่ 6 — ย้ายงาน (blog-content) จาก root ไปเป็นของ green
เหตุผล: /root/ มี permission 700 (green เข้าไม่ได้เลย) ต้องย้ายไปอยู่ที่ /home/green/ แทน
# ทำที่ root session
cp -r /root/blog-content /home/green/blog-content
chown -R green:green /home/green/blog-contentใช้
cpไม่ใช่mv— เก็บของเดิมไว้ที่/root/blog-contentเป็น backup จนกว่าจะมั่นใจว่า green ใช้งานได้จริงสมบูรณ์
ขั้นที่ 7 — ทดสอบว่า green ใช้งานได้จริงครบวงจร
# ที่ green session
cd ~/blog-content
hugo --minify # build ผ่านไหม
./deploy.sh # deploy ผ่านไหม (เขียนเข้า /var/www/blog ได้ไหม)ผล: ผ่านหมด ไม่มี permission error เลย ✅
ขั้นที่ 8 — ตั้ง zsh ให้ green ด้วย (เพราะ root มีแล้ว แต่ green ยังเป็น bash)
sudo chsh -s $(which zsh) green # เปลี่ยน default shell
exit # ต้อง logout/login ใหม่ให้มีผล
ssh -i ~/.ssh/id_ed25519_knupan_green green@157.245.203.39จากนั้นตั้งค่า .zshrc + clone plugin เหมือนที่ทำให้ root (ดูรายละเอียดในไฟล์ที่ 4)
สรุปภาพรวมทั้งหมด (เวอร์ชันสั้นสุด ถ้าจะทำเครื่องใหม่)
1. เช็ค user เดิมมีสิทธิ์ sudo + SSH key ไหม
2. ถ้า key เก่าใช้ไม่ได้ → สร้างคู่ใหม่ที่เครื่องตัวเอง → เอา public key ไปเพิ่มใน authorized_keys
3. ทดสอบ SSH เข้า + sudo
4. ย้ายงานจาก /root/ ไป /home/<user>/ (เพราะ user ธรรมดาเข้า /root ไม่ได้)
5. ทดสอบ build/deploy ด้วย user ใหม่ให้ผ่านจริง
6. ตั้ง shell (zsh) ให้ user ใหม่ด้วย
7. จากนี้ใช้ user ใหม่เป็นหลัก เก็บ root ไว้เฉพาะ sudoสรุปภาพรวมทั้งหมด
1. เช็ค user เดิมมีสิทธิ์ sudo + SSH key ไหม
2. ถ้า key เก่าใช้ไม่ได้ → สร้างคู่ใหม่ที่เครื่องตัวเอง → เอา public key ไปเพิ่มใน authorized_keys
3. ทดสอบ SSH เข้า + sudo
4. ย้ายงานจาก /root/ ไป /home/<user>/ (เพราะ user ธรรมดาเข้า /root ไม่ได้)
5. ทดสอบ build/deploy ด้วย user ใหม่ให้ผ่านจริง
6. ตั้ง shell (zsh) ให้ user ใหม่ด้วย
7. จากนี้ใช้ user ใหม่เป็นหลัก เก็บ root ไว้เฉพาะ sudo