Cách chuyển sang người dùng root nhưng vẫn ở trong cùng thư mục


9

Gần đây tôi đã chuyển sang Ubuntu và tôi đã quan sát thấy một điều khi tôi sử dụng lệnh sau để chuyển sang người dùng root

sudo su - root

Nó đưa tôi trực tiếp đến nhà của root ( /root), vì vậy tôi mất vị trí của mình trong hệ thống tập tin (thư mục nơi tôi thực hiện lệnh này). Có cách nào để chuyển sang root mà không mất thư mục hiện tại không?

Câu trả lời:


16

Trước hết, không sử dụng sudo su. Điều đó không sai, hoặc nguy hiểm hay bất cứ điều gì, nó chỉ là không phù hợp và vô nghĩa . Bạn đang chạy hai chương trình riêng biệt để thực hiện một công việc dễ dàng được xử lý bởi một. Nếu bạn muốn bắt đầu một shell như root, sudocó thể làm điều đó cho bạn.

Nếu bạn muốn bắt đầu một vỏ đăng nhập (đó là những gì sudo su -), hãy sử dụng sudo -i. Tuy nhiên, vì nó bắt đầu một vỏ đăng nhập, sẽ đưa bạn đến thư mục gốc của root theo mặc định.

Để bắt đầu một vỏ thông thường, không đăng nhập, bạn có thể sử dụng sudo -s. Điều đó sẽ bắt đầu một shell root cho bạn và giữ bạn trong thư mục bạn đã chạy nó từ:

terdon@tpad ~ $ pwd
/home/terdon
terdon@tpad ~ $ sudo -i  ## changes directory
[root@tpad ~]# pwd
/root
[root@tpad ~]# logout
terdon@tpad ~ $ sudo -s  ## doesn't change directory
[root@tpad terdon]# pwd
/home/terdon

Vì vậy, cách để bắt đầu một shell root và ở trong cùng một thư mục là sudo -s.


1
Vấn đề có thể là sudo -skhông chạy hồ sơ người dùng mục tiêu vì nó không phải là vỏ đăng nhập. Vì vậy, có lẽ câu hỏi thực sự là liệu có cách nào để có được một vỏ đăng nhập hay không sudo, nhưng không thay đổi thư mục. Chắc là không.
Barmar

@Barmar không, nhưng sudo -ikhông. Tôi đã sử dụng -svì OP không muốn có vỏ đăng nhập (không muốn chuyển sang $HOME). Nếu bạn muốn một vỏ đăng nhập, sử dụng sudo -i. Tôi đã đăng một so sánh về môi trường của sudo -i, su -, sudo -ssutrong câu hỏi của tôi ở đây nếu bạn muốn có một cái nhìn.
terdon

Vừa nãy tôi đã có một trải nghiệm rất tệ với lệnh này, sudo -s. Ngay cả nó không thay đổi thư mục nhưng nó không cho tôi quyền truy cập root đầy đủ. Một số tệp của tôi đã có trong một thư mục nhưng tôi không thể xem chúng là người dùng bình thường và là người dùng root theo cách này (sudo -s). Sau đó, tôi đã sử dụng cách cũ (sudo su - root) và đi đến thư mục và các tập tin của tôi bây giờ được hiển thị cho tôi. Tại sao sudo -s đã cho tôi quyền truy cập hạn chế?
Hammad Hassan

@HammadHassan không có cách nào bạn mô tả có thể xảy ra. Phải có một cái gì đó khác đang diễn ra. Bạn có nghĩa là "không thể nhìn thấy" các tập tin? Bạn có thể có nghĩa là "không thể đọc các tập tin"? Bạn có thể sử dụng mã hóa?
terdon

"không thể nhìn thấy" có nghĩa là lệnh đơn giản "ls". Nó không cho tôi xem các tập tin của tôi. Không có mã hóa nào cả. Các tập tin của tôi rất đơn giản. Và điều này thực sự đã xảy ra.
Hammad Hassan

8

Điều này rất đơn giản. Chỉ loại

sudo su

thay vì

sudo su - root

Điều này sẽ giữ cho bạn trong cùng thư mục với root.


9
Điều này không sai, ý tôi là nó hoạt động, nhưng sử dụng sudo sukhông có ý nghĩa nhiều. Đó là những gì sudo -sdành cho. Tôi chưa bao giờ hiểu tại sao rất nhiều hướng dẫn Ubuntu đề xuất sudo su.
terdon

@terdon Tôi cũng chưa bao giờ hiểu nó, nhưng dường như nó phổ biến rộng rãi trong số tất cả người dùng Linux. Có lẽ sự ám chỉ làm cho nó đáng nhớ hơn.
Barmar

@Barmar cá nhân, tôi chỉ thấy nó trong thế giới Ubuntu. Vì hầu hết các hệ thống Linux đều có tài khoản root bình thường theo mặc định, khi cần shell bạn sẽ làm su(một mình, không sudo). Bởi vì, tuy nhiên, Ubuntu vô hiệu hóa tài khoản root theo mặc định, việc sudo sunày diễn ra khá tự nhiên. nó cũng, rõ ràng , trường hợp ở một số góc của thế giới UNIX là tốt, nhưng trong Linux, tôi đã chỉ nhìn thấy nó trong Ubuntu.
terdon

@terdon Tôi đã thấy nó trong nhiều thập kỷ, tôi thậm chí không chắc chúng tôi đang sử dụng bản phân phối nào. Chúng tôi sử dụng Debian trong công ty hiện tại của tôi và đồng nghiệp của tôi sử dụng nó.
Barmar
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.