[Linux] Tìm hiểu sự khác biệt giữa lệnh “su – user” và “su user” trên Linux

Bài viết này là cái note nhỏ để tìm hiểu sự khác biệt giữa lệnh “su – user” và “su user” trên Linux hay nói cách khác là cách sử dụng lệnh “su option “” và “sukhông có option ““. Cụ thể là :

# su - <username>
# su <username>

 
Mình không giải thích cách xài lệnh “su” nhé, hẹn dịp nói trong 1 bài viết khác. Còn bạn muốn 1 cái định nghĩa đơn giản thì nó như thế này :

Chương trình lệnh “su” giúp chúng ta chạy 1 shell mới bằng cách chuyển đổi session shell mới sang user ID và group ID khác. Nói tóm gọi là đăng nhập sang 1 user khác ngay trên terminal đang chạy.

 
Ok giờ mình nói đến sự khác biệt nào.

1. “su – <user>”

– Khi bạn sử dụng lệnh “su+” để chuyển đổi session user khác thì đồng nghĩa với việc yêu cầu hệ thống Linux hãy tạo 1 session hoàn toàn mới và thay đổi toàn bộ các biến môi trường của user hiện tại sang user khác, hay còn gọi là load toàn bộ biến môi trường của user mà mình muốn chuyển session qua y hệt như bạn mở 1 session SSH hay local đăng nhập vào user đó. Bạn coi qua ví dụ 1 để hiểu thêm.
– Ví dụ ở đây ta xét biến môi trường $PATH là dễ hình dung nhất.

Ví dụ 1:

[cuongqc@cuongquach.com ~]$ whoami
cuongqc
[cuongqc@cuongquach.com ~]$ pwd
/home/cuongqc/
[cuongqc@cuongquach.com ~]$ echo $PATH
/home/cuongqc/perl5/bin:/home/cuongqc/perl5/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/easy/bin:/root/bin:/root/.local/bin:/root/bin:/bin:/usr/local/easy/bin:/usr/local/easy/bin

 
– Thực hiện chuyển đổi sang user root với “su –“. Nếu bạn không để tên username sau lệnh su thì mặc định Linux hiểu là bạn đang muốn chuyển session sang user root.

[cuongqc@cuongquach.com ~]$ sudo su -
[root@cuongquach.com ~]# whoami
root
[root@cuongquach.com ~]# pwd
/root/
[root@cuongquach.com ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/easy/bin:/root/bin:/root/.local/bin:/root/bin:/bin

 
– Bạn sẽ thấy là biến môi trường $PATH có sự khác nhau rõ rệt của 2 user.
 

2. “su <user>”

– Thế nhưng nếu bạn sử dụng lệnh “su” mà không có dấu” thì session chuyển đổi sang user khác sẽ không được áp hay được thiết lập các biến môi trường được quy định của user đó, trong trường hợp này là vẫn giữ thông tin biến môi trường của user cũ. Bạn coi qua ví dụ 2:
– Ta vẫn ở thư mục và session của user “cuongqc” và xét biến môi trường $PATH như cũ.

Ví dụ 2:

[cuongqc@cuongquach.com ~]$ whoami
cuongqc 
[cuongqc@cuongquach.com ~]$ echo $PATH
/usr/bin:/usr/sbin:/usr/local/bin:/bin:/usr/bin:/home/cuongqc/bin
[cuongqc@cuongquach.com ~]$ pwd
/home/cuongqc

 
– Thực hiện chuyển đổi sang user root với “su “.

[cuongqc@cuongquach.com ~]$ sudo su
[root@cuongquach.com ~]# whoami
root
[root@cuongquach.com ~]# pwd
/root/
[root@cuongquach.com ~]# echo $PATH
/home/cuongqc/perl5/bin:/home/cuongqc/perl5/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/easy/bin:/root/bin:/root/.local/bin:/root/bin:/bin:/usr/local/easy/bin

 
Hy vọng với 2 cái ví dụ ở trên thì bạn đã hiểu rõ hơn về sự khác biệt này.

Previous article[Linux] Hướng dẫn tạo user trên Linux bằng tay không sử dụng lệnh “useradd”
Next article[News] Lượng người dùng mạng xã hội Weibo trên di động đang vượt qua Twitter
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !