WordPress lỗi sau khi bấm Update: Khi nào nên Rollback, khi nào tung Hotfix sửa tại chỗ?
Bấm update plugin xong giao diện vỡ toang? Bình tĩnh khoanh vùng sự cố, bảo toàn đơn hàng mới và chọn đúng giữa Rollback hay tung bản Hotfix tại chỗ.
Hướng dẫn tạo User Sudo trên Ubuntu VPS chuẩn xác: cách gắn SSH Public Key an toàn không ghi đè khóa cũ và kiểm chứng bằng cửa sổ SSH thứ hai.
Tạo xong User Sudo trên Ubuntu mà chưa mở cửa sổ Terminal thứ hai để thử đăng nhập SSH và chạy thử lệnh sudo whoami thì coi như mới làm được nửa đường! Hãy luôn giữ nguyên cửa sổ root đang mở làm bảo hiểm cho tới khi tài khoản mới hoạt động trơn tru 100%.
Quy trình tạo tài khoản User Sudo trên máy chủ Ubuntu chỉ thực sự được phép coi là hoàn tất khi bạn mở một cửa sổ Terminal thứ hai, đăng nhập SSH trực tiếp vào tài khoản mới đó và gõ lệnh nâng quyền quản trị thành công. Có một sự thật dở khóc dở cười là rất nhiều người vừa gõ xong lệnh thêm user vào nhóm sudo đã vội vàng tắt quyền đăng nhập của root rồi đóng cửa sổ máy tính đi ngủ — để rồi sáng hôm sau phát hiện ra mình quên chưa gắn SSH Key cho user mới, hoặc gắn nhầm quyền file khiến cả cửa cũ lẫn cửa mới đều khóa trái! Nguyên tắc sống còn ở đây cực kỳ đơn giản: luôn giữ nguyên cửa sổ SSH quản trị ban đầu mở thông suốt trong suốt quá trình bạn mở cửa sổ thứ hai ra thử nghiệm.
Bài hướng dẫn thực chiến này áp dụng trên môi trường VPS Ubuntu mới khởi tạo, khi bạn đang có sẵn một phiên đăng nhập quản trị ban đầu (như root) hoạt động tốt. Hãy chọn một cái tên tài khoản mới rõ ràng và chưa từng tồn tại trên máy. Trong các câu lệnh mẫu bên dưới, chúng tôi đặt tên tài khoản là tutorial (nếu bạn thích đặt tên khác như admin_web hay dev_ops thì chỉ cần thay thế tên đó một cách nhất quán ở tất cả các bước). Trên máy chủ thực nghiệm LAB-CF-02, tài khoản tutorial này đã được khởi tạo từ ngày 30/09/2026; phần báo cáo thực tế ngày 01/10/2026 ở cuối bài viết ghi lại kết quả rà soát độc lập tài khoản hiện hữu đó mà không cần chạy đè lại lệnh adduser.
Đầu tiên, tại cửa sổ SSH hiện tại, hãy gõ lệnh hostname và đối chiếu địa chỉ IP cùng mã ID máy chủ trên bảng điều khiển (Panel) để chắc chắn 100% bạn đang thao tác trên chiếc VPS lab của mình. Hãy giữ nguyên cửa sổ Terminal này mở suốt buổi học (chúng ta gọi đây là Phiên giữ cửa – Keeper Session) và đảm bảo bạn đã biết cách mở màn hình Web Console trên Panel nhà cung cấp.
Tiếp theo, hãy kiểm tra xem cái tên tài khoản bạn định đặt (ví dụ tutorial) đã có ai dùng trên hệ thống hay chưa bằng câu lệnh tra cứu cơ sở dữ liệu tài khoản chuẩn:
getent passwd tutorial
Nếu câu lệnh trên im lặng không in ra dòng nào cả, xin chúc mừng: cái tên tutorial hoàn toàn trống và sẵn sàng để bạn tạo mới! Ngược lại, nếu nó in ra một dòng thông tin kiểu tutorial:x:1000:1000:..., hãy dừng tay lại ngay lập tức để kiểm tra xem tài khoản có sẵn đó đang phục vụ dịch vụ gì hay của đồng nghiệp nào tạo từ trước — tuyệt đối không nhắm mắt đổi mật khẩu hay xóa đè lên tài khoản đã tồn tại chỉ để làm giống bài hướng dẫn.

Chiến thuật “Hai cửa sổ Terminal” là chiếc dây bảo hiểm không thể thiếu của mọi SysAdmin: tuyệt đối không đóng cửa sổ số 1 cho tới khi cửa sổ số 2 đã đăng nhập và chạy sudo ngon lành.
/home) bằng adduserTrên hệ điều hành Ubuntu/Debian, thay vì dùng lệnh cấp thấp useradd (vốn khá kiệm lời và đôi khi quên không tạo thư mục nhà nếu bạn thiếu cờ -m), chúng ta nên dùng công cụ thân thiện adduser. Từ cửa sổ quản trị hiện tại, hãy chạy lệnh:
sudo adduser tutorial
Hệ thống sẽ tự động tạo nhóm mới, tạo thư mục nhà /home/tutorial, sao chép các file cấu hình shell mẫu và bật lên lời nhắc yêu cầu bạn nhập mật khẩu cho tài khoản tutorial (gõ 2 lần để xác nhận). Hãy chọn một mật khẩu đủ mạnh và gõ trực tiếp tại lời nhắc (nhớ là màn hình sẽ không hiện ký tự nào khi bạn gõ mật khẩu đâu nhé!). Sau bước mật khẩu, công cụ sẽ hỏi thêm vài thông tin hồ sơ như Full Name, Room Number, Work Phone… — đây chỉ là các trường ghi chú tùy chọn, bạn hoàn toàn có thể nhấn phím Enter bỏ trống toàn bộ rồi gõ Y ở câu hỏi xác nhận cuối cùng.
Một chi tiết nhỏ: nếu cửa sổ hiện tại của bạn đang đăng nhập trực tiếp dưới quyền root, bạn có thể gõ thẳng adduser tutorial mà không cần chữ sudo ở đầu cũng được; nhưng việc giữ chữ sudo vẫn chạy tốt ở cả hai trường hợp. Ngay sau khi tạo xong, hãy chạy tổ hợp 3 lệnh chỉ đọc dưới đây để nghiệm thu xem tài khoản và thư mục nhà đã nằm đúng vị trí chưa:
id tutorial
getent passwd tutorial
ls -ld /home/tutorial
Bạn sẽ thấy hệ thống hiển thị rõ mã định danh uid, gid của user tutorial cùng thư mục nhà /home/tutorial thuộc đúng quyền sở hữu của tutorial:tutorial.
usermod -aGTrên Ubuntu, cơ chế cấp quyền quản trị được thiết kế cực kỳ thanh lịch: bất kỳ tài khoản nào nằm trong nhóm hệ thống mang tên sudo sẽ được phép sử dụng câu lệnh sudo để nâng quyền. Để thêm tài khoản tutorial vào nhóm sudo mà vẫn giữ nguyên các nhóm phụ hiện có của tài khoản đó, chúng ta dùng cặp cờ -aG (Append to Supplemental Groups):
sudo usermod -aG sudo tutorial &&
id tutorial
Hãy đóng khung ghi nhớ chữ a nhỏ bé nhưng võ công cao cường trong cụm -aG: chữ a (Append) bảo với hệ thống rằng “Hãy nối thêm nhóm sudo vào danh sách nhóm hiện tại của user”. Nếu bạn quên chữ a mà chỉ gõ mỗi usermod -G sudo tutorial, hệ thống sẽ… xóa sạch user đó khỏi tất cả các nhóm phụ khác và chỉ giữ lại duy nhất nhóm sudo! Ngoài ra, trên Linux, sự thay đổi về nhóm tài khoản chỉ có hiệu lực ở những phiên đăng nhập mới sau thời điểm chạy lệnh — đó là lý do vì sao lát nữa chúng ta sẽ mở một kết nối SSH mới tinh để kiểm chứng.
Một nguyên tắc bảo mật quan trọng nữa: đừng bao giờ vì lười gõ mật khẩu mà cấu hình NOPASSWD: ALL cho tài khoản vận hành! Việc hệ thống hỏi lại mật khẩu khi bạn chạy lệnh sudo đầu tiên trong phiên làm việc chính là chốt chặn an toàn giúp bạn có thêm 3 giây suy nghĩ trước khi thực thi một câu lệnh quản trị có sức ảnh hưởng lớn. Và hãy phân biệt thật rõ 2 lời nhắc mật khẩu khác nhau: khi kết nối SSH từ laptop, nếu máy hỏi Passphrase thì đó là mật khẩu mở file khóa Private Key trên laptop của bạn; còn khi đã vào trong server và gõ sudo ..., lời nhắc [sudo] password for tutorial: chính là mật khẩu Linux của tài khoản tutorial mà bạn vừa đặt ở Bước 1!
700/600)Để đăng nhập trực tiếp vào tài khoản tutorial bằng SSH Key, trước tiên trên máy tính cá nhân (laptop), bạn hãy mở file khóa công khai (có đuôi .pub, ví dụ ~/.ssh/localhost-lab.pub) và copy toàn bộ dòng văn bản bên trong đó (bắt đầu bằng ssh-ed25519 ... hoặc ssh-rsa ...). Tiếp theo, quay lại cửa sổ SSH quản trị trên VPS, chúng ta sẽ chạy khối lệnh tạo thư mục .ssh và file authorized_keys cực kỳ an toàn dưới đây:
(
for ssh_path in /home/tutorial/.ssh /home/tutorial/.ssh/authorized_keys; do
if sudo test -e "$ssh_path" || sudo test -L "$ssh_path"; then
printf 'Dung: duong dan da ton tai: %s\n' "$ssh_path" >&2
exit 1
fi
done
sudo mkdir -m 700 -- /home/tutorial/.ssh &&
sudo chown tutorial:tutorial /home/tutorial/.ssh &&
sudo -u tutorial sh -c 'umask 077; set -C; : > "$1"' \
sh /home/tutorial/.ssh/authorized_keys &&
sudo -u tutorial nano /home/tutorial/.ssh/authorized_keys
)
Vì sao chúng tôi lại thiết kế khối lệnh bọc trong ngoặc tròn (...) kỹ lưỡng đến vậy thay vì bảo bạn gõ bừa echo "..." > authorized_keys? Bởi vì trong thực tế vận hành, nếu bạn chạy nhầm lệnh tạo mới trên một tài khoản đã có sẵn thư mục .ssh và đang chứa khóa của các quản trị viên khác, việc ghi đè sẽ đá văng toàn bộ đồng nghiệp của bạn ra khỏi server! Khối lệnh trên kiểm tra cực kỳ nghiêm ngặt: chỉ khi cả thư mục /home/tutorial/.ssh lẫn file authorized_keys đều chưa tồn tại thì nó mới tiến hành tạo thư mục với quyền chuẩn 700, tạo file rỗng với quyền chuẩn 600 dưới đúng chủ sở hữu tutorial (nhờ sudo -u tutorial và cờ chống ghi đè set -C), rồi mới mở trình soạn thảo nano cho bạn dán khóa vào. Nếu đường dẫn đã tồn tại sẵn từ trước, khối lệnh sẽ dừng lại ngay lập tức và báo cho bạn biết mà không làm đóng cửa sổ Terminal hiện tại!
Khi màn hình trình soạn thảo nano mở ra, bạn hãy dán (Paste) dòng Public Key (.pub) của mình vào trên một dòng duy nhất (tuyệt đối không dán nhầm nội dung Private Key nhé!), sau đó nhấn Ctrl + O → Enter để lưu lại và nhấn Ctrl + X để thoát ra.
Ngay sau khi lưu xong, đừng quên chạy tổ hợp 3 lệnh dưới đây để kiểm tra lại quyền hạn thư mục/file và đọc dấu vân tay (Fingerprint) của chiếc khóa vừa dán:
ls -ld /home/tutorial/.ssh
sudo ls -l /home/tutorial/.ssh/authorized_keys
sudo -u tutorial ssh-keygen -lf /home/tutorial/.ssh/authorized_keys
Hãy nhìn xem: thư mục /home/tutorial/.ssh phải đạt đúng quyền drwx------ (700), file authorized_keys phải đạt đúng quyền -rw------- (600), cả hai đều thuộc sở hữu của tutorial:tutorial, và chuỗi Fingerprint in ra từ lệnh ssh-keygen -lf phải khớp 100% với chiếc khóa trên laptop của bạn.

Bộ ba thông số vàng để OpenSSH chấp nhận khóa: Thư mục .ssh quyền 700 + File authorized_keys quyền 600 + Chủ sở hữu chính chủ tutorial:tutorial.
Giờ là khoảnh khắc quyết định! Hãy để nguyên cửa sổ Terminal số 1 (đang giữ phiên quản trị cũ) nằm yên một góc màn hình, sau đó bật một cửa sổ Terminal mới tinh (Cửa sổ số 2) trên máy tính cá nhân của bạn và gõ lệnh kết nối SSH vào tài khoản tutorial:
ssh -i ~/.ssh/localhost-lab -o IdentitiesOnly=yes tutorial@IP_LAB
Nhớ thay thế IP_LAB bằng địa chỉ IP thực tế của VPS và trỏ đúng đường dẫn tới file Private Key của bạn. Ngay khi đăng nhập thành công vào bên trong máy chủ ở cửa sổ số 2 này, hãy chạy chuỗi 4 lệnh nghiệm thu chuẩn chỉnh dưới đây:
whoami
id
sudo -k
sudo whoami
Hãy cùng đọc kết quả nghiệm thu như một kỹ sư thực thụ:
whoami đầu tiên phải in ra đúng chữ tutorial (xác nhận bạn đang ngồi ở tài khoản thường).id phải hiển thị danh sách nhóm có chứa 27(sudo).sudo -k là một mẹo cực kỳ tinh tế: nó xóa sạch bộ nhớ đệm xác thực (Timestamp cache) của các lần gõ mật khẩu sudo trước đó (nếu có), ép câu lệnh tiếp theo bắt buộc phải hỏi lại mật khẩu từ đầu để bài kiểm tra trung thực 100%.sudo whoami sẽ yêu cầu bạn nhập mật khẩu của tài khoản tutorial; ngay sau khi nhập đúng, màn hình in ra chữ root dõng dạc!Chỉ khi nào bạn nhìn thấy chữ root hiện ra sau lệnh sudo whoami ở cửa sổ Terminal thứ hai này, bạn mới thực sự hoàn tất việc tạo tài khoản vận hành mới! Còn nếu chẳng may cửa sổ số 2 báo lỗi không đăng nhập được hoặc không chạy được sudo, bạn vẫn còn nguyên cửa sổ số 1 đang mở sẵn bên cạnh để sửa lại ngay lập tức mà chẳng sợ bị nhốt ở ngoài.
Nếu cửa sổ Terminal thứ hai trả về lỗi Permission denied (publickey), bạn hãy quay sang cửa sổ số 1 (đang giữ quyền quản trị) và rà soát theo đúng thứ tự: (1) File authorized_keys có bị dán thiếu ký tự đầu/cuối hay bị ngắt xuống dòng không? → (2) Chủ sở hữu (Owner) của thư mục /home/tutorial/.ssh và file authorized_keys có bị để nhầm thành root:root không (lỗi này chiếm tới 80% các ca thất bại khi tạo user thủ công!)? → (3) Quyền của thư mục nhà /home/tutorial, thư mục .ssh (700) và file khóa (600) đã chuẩn chưa? Tuyệt đối không bao giờ dùng chmod 777 để “chữa cháy” vì OpenSSH thấy quyền 777 sẽ lập tức từ chối đọc khóa ngay!
Còn nếu bạn đăng nhập SSH vào tutorial ngon lành nhưng khi gõ sudo whoami lại nhận được thông báo “tutorial is not in the sudoers file”, hãy quay sang cửa sổ số 1 gõ id tutorial xem đã có nhóm sudo chưa; nếu vừa mới chạy lệnh usermod -aG sudo xong thì bạn phải exit cửa sổ số 2 ra rồi kết nối SSH vào lại thì nhóm mới mới được nạp vào phiên làm việc.

Sơ đồ tư duy kỹ thuật: Chỉ đánh dấu hoàn thành khi cả 4 chốt chặn (Đăng nhập SSH phiên mới + Đúng danh tính User + Nâng quyền Sudo trả về root + Đường dự phòng an toàn) đều đã vượt qua.
Trên máy chủ thử nghiệm LAB-CF-02, nhật ký khởi tạo ban đầu vào ngày 30/09/2026 đã ghi nhận việc tạo mới tài khoản tutorial kèm thư mục nhà chuẩn với định danh UID/GID 1000, thêm vào nhóm sudo, gắn khóa SSH và xác nhận nâng quyền trả về root thành công.
Tiếp đó, trong khung giờ 03:55:11 – 03:55:13 ngày 01/10/2026 (giờ Việt Nam), chúng tôi đã thực hiện đợt kiểm chứng độc lập bằng cách giữ nguyên một phiên quản trị root dự phòng và mở các kết nối SSH mới vào tài khoản tutorial hiện hữu:
| Hạng mục kiểm tra thực tế | Kết quả ghi nhận trên LAB-CF-02 |
|---|---|
| Duy trì phiên quản trị dự phòng (Keeper Session) | Phiên root giữ mở thông suốt và phản hồi tốt cả trước lẫn sau khi chạy bài kiểm tra |
| Mở kết nối SSH độc lập bằng khóa hợp lệ | Đăng nhập thành công vào user tutorial (UID 1000), thuộc nhóm sudo trên đúng máy LAB-CF-02 |
Xóa cache bằng sudo -k rồi gọi sudo -n id -u |
Trả về mã thoát exit code 1 và yêu cầu nhập mật khẩu đúng như thiết kế bảo mật (không cho chạy không mật khẩu) |
Xác thực sudo với mật khẩu hiện hành |
Lệnh id -u trả về 0 (tức root) với mã thoát exit code 0; ngay sau đó vô hiệu hóa lại cache sudo |
| Rà soát tính toàn vẹn sau thực nghiệm | Mã băm (Hash) của authorized_keys và sshd_config giữ nguyên không đổi; quyền 700/600 và Owner khớp chuẩn |
Cùng trong đợt kiểm chứng này, chúng tôi cũng thử nghiệm kịch bản đối kháng: dùng một chiếc khóa SSH chưa đăng ký và một file known_hosts sai lệch để kết nối thử — cả hai đều bị hệ thống chặn đứng ngay lập tức, trong khi chiếc khóa hợp lệ kết nối ngay sau đó vẫn đi vào mượt mà.
Vào lúc 13:52:01 ngày 01/10/2026 (UTC+7), một phiên kết nối SSH độc lập từ máy Mac (chỉ định đích danh khóa hợp lệ và đối chiếu Host Key chuẩn, hoàn toàn không dùng bộ đệm ssh-agent) tiếp tục xác nhận đăng nhập vào tài khoản tutorial và nâng quyền sudo trả về root (mã thoát 0).
Sau đó ít phút, vào lúc 14:02:36 cùng ngày, chúng tôi chạy kịch bản đọc thông số trực tiếp trên màn hình Console của máy chủ LAB-CF-02 để ghi lại hình ảnh toàn bộ cấu trúc phân quyền của tài khoản tutorial:
| Hạng mục tài khoản | Thông số hiển thị trực tiếp trên Console |
|---|---|
| Định danh & Nhóm quyền | User tutorial, UID/GID 1000; thành viên của nhóm sudo (27) và users (100) |
| Thư mục nhà (Home Directory) | Đường dẫn /home/tutorial đạt phân quyền mode 750, chủ sở hữu tutorial:tutorial |
| Cấu trúc thư mục khóa SSH | Thư mục .ssh đạt mode 700; file authorized_keys đạt mode 600; đồng nhất chủ sở hữu tutorial:tutorial |
| Chính sách phân quyền Sudo | Lệnh sudo -l -U tutorial hiển thị quyền (ALL : ALL) ALL tiêu chuẩn (bắt buộc xác thực mật khẩu, không có NOPASSWD) |
Ảnh chụp màn hình Console thực tế lúc 14:03:16 ngày 01/10/2026 (UTC+7), hiển thị đầy đủ kết quả đọc trạng thái tài khoản tutorial lúc 14:02:36 trên máy chủ LAB-CF-02. Ảnh không phơi bày nội dung khóa nhạy cảm, giữ nguyên độ phân giải pixel gốc và đóng dấu logo ở chân ảnh. Bấm vào ảnh để xem kích thước lớn.
Câu hỏi thường gặp (FAQ): Khi đã đăng nhập bằng tài khoản tutorial rồi, tôi có nên gõ lệnh sudo su - để biến thành root ngồi làm việc suốt cả buổi cho đỡ phải gõ chữ sudo nhiều lần không? Không nên chút nào! Làm vậy chẳng khác gì bạn lại quay về dùng trực tiếp tài khoản root cả. Hãy cứ làm việc ở dấu nhắc tutorial@...$ bình thường và chỉ đặt từ khóa sudo ở đầu những câu lệnh thực sự cần quyền quản trị hệ thống. Và hãy nhớ: khi muốn cấp thêm quyền vào máy cho một chiếc laptop thứ hai của bạn, hãy mở file authorized_keys ra và dán nối tiếp dòng Public Key thứ hai xuống dòng dưới, tuyệt đối không xóa đè dòng khóa đang dùng!
Tài liệu tham khảo chuẩn quốc tế: Đã đối chiếu trực tiếp với Ubuntu Server: User Management vào ngày 01/10/2026, cùng tài liệu nền tảng Ubuntu Server: OpenSSH Server và OpenBSD Manual: sshd (AUTHORIZED_KEYS FILE FORMAT) (đối chiếu ngày 30/09/2026).
Cùng chuỗi bài học: Xem toàn bộ Lộ trình cài đặt WordPress trên VPS từ A đến Z.