Saturday, 30 August 2014

Chạy lệnh với quyền của user khác

Vì sao phải làm thế?
vì đôi khi các chương trình cần chạy dưới một user nhất định hoặc nó có thể tạo file trong lần chạy đầu tiên, nếu lần đầu chạy với user root thì lần sau chạy với user thường, chương trình không có quyền ghi đè lên file đã tạo và sẽ gây lỗi.

Có thể sử dụng ``su`` hoặc ``sudo`` để giải quyết vấn đề này.

su là một thứ đã tồn tại từ rất lâu rồi, trong khi sudo thì khá mới.

# for i in su sudo; do whatis $i; echo in package $(dpkg -S `which $i` | cut -f1 -d':'); done
su (1)               - change user ID or become superuser
in package login
sudo (8)             - execute a command as another user
in package sudo

Thử dùng su và sudo để chạy lệnh ``id --user``:

root@ubuntu:~# id --user
0
root@ubuntu:~# su hvn  -c "id --user"
1000
root@ubuntu:~# sudo -u hvn id --user
1000
với ``su``, bạn phải wrap câu lệnh trong đấu "" hay '', còn với sudo thì không.

Bài này chỉ muốn viết rằng, bạn có thể sử dụng su để chạy câu lệnh dưới quyền user khác, không chỉ mình sudo làm được điều đó (vì sao? vì không phải lúc nào gói sudo cũng được cài!). Nhưng viết thế ngắn quá nên viết cố ra cho dài :D

Hết.