Nhiều cách để có session root trên terminal Linux. Gây nhầm lẫn cho người mới: không rõ mỗi lệnh lấy root như thế nào, khác biệt gì, khi nào khác biệt quan trọng. Phân tích từng lệnh, cách lấy root, khi nào dùng, và mọi thứ giữa đó.
su
su thay thế user hiện tại trong shell.
Chuyển user bất kỳ: su username (logout user hiện tại, login user mới). Hoặc su không tham số → lấy root access.
Dùng khi: Muốn truy cập trực tiếp tài khoản root. Không qua sudo. Nhập mật khẩu root vì thực chất đang login vào user root. Lợi ích: có cả root home directory và root environment.
sudo su
Yêu cầu mật khẩu user hiện tại, không phải root.
Bản chất giống su nhưng khác một chỗ then chốt: nói với hệ thống "chạy lệnh su với quyền root" thay vì "switch user" trực tiếp. Khi chạy sudo su, các file .profile, .bashrc, /etc/profile được nạp - giống su hay su root.
Khác biệt nhỏ nhưng sudo su quan trọng vì: su cần mật khẩu root, sudo su dùng mật khẩu user hiện tại → tăng bảo mật (không cần chia sẻ pass root).
sudo -i
Gần như giống sudo su nhưng không tương tác trực tiếp với user root.
Flag -i cho phép lấy root environment mà không cần pass root. Cũng nạp file env (.profile...) và set environment trong shell.
Khác sudo su: sudo -i cách "sạch" hơn lấy root + root environment mà không đụng trực tiếp user root. sudo su dùng nhiều lệnh setuid root background → khó đoán env variable nào giữ/thay đổi khi swap sang root env. sudo -i không có vấn đề này → đa số coi là cách ưu tiên lấy root không login trực tiếp.
sudo -s
Gọi shell với biến $SHELL của user.
Flag -s đọc biến $SHELL của user hiện tại. Hoạt động như sudo /bin/bash. sudo -s là shell non-login. Khác sudo -i hay sudo su: không đọc file env. User chạy sudo -s → có root nhưng không đổi user hay user environment. Home vẫn là home user, không phải root home.
Dùng khi: Muốn shell interactive với $SHELL environment, không muốn switch sang root. Các lệnh trên lấy root nhưng đụng file env root, cho truy cập root đầy đủ (vấn đề bảo mật).
Câu hỏi thường gặp
1. Nên dùng lệnh nào?
Mỗi lệnh có use-case. Quan trọng: hiểu từng lệnh làm gì và khi nào dùng. sudo -i thực tế, sạch nhất để có root environment. sudo -s cho root shell không đụng root environment - lợi ích bảo mật.
2. Truy cập root có hại hệ thống không?
Có thể. Trừ khi chắc chắn cần root cho mọi lệnh trong session, tốt hơn: gõ sudo trước lệnh cần root. VD: sudo apt install vlc chỉ dùng root cho apt install VLC.
Caveat quan trọng: sudo -i hoặc variant khác KHÔNG ghi history vào /var/log/auth.log. Làm sai không thể check lại để fix. Phải nhớ từ memory, session root không được log.
3. Gõ "sudo" trước lệnh = variant nào?
Gõ sudo cùng dòng lệnh → chạy dưới interactive root shell. Tương đương sudo -s standalone.
Kết luận
Không có lệnh nào 100% tốt nhất. Khi quen command line, cần cân nhắc từng cách lấy root (rất nhiều), ưu/nhược điểm, hành động theo ngữ cảnh. Hy vọng bài viết giúp quyết định dễ dàng hơn. Muốn biết thêm lệnh: xem bài lệnh Linux hữu ích liệt kê nội dung thư mục.