Sự khác biệt giữa 'sudo [lệnh]' và 'sudo sh [lệnh] là gì?


13

Tôi đang cố gắng cài đặt VMware Workstation trong Ubuntu 12.04.2 LTS của mình. Nếu tôi thực hiện lệnh sau:

sudo ./VMware-Workstation-9.0.1-894247.x86_64.bundle

nó kết thúc ngay lập tức và cài đặt không bao giờ bắt đầu.

Nếu tôi thực hiện lệnh này:

sudo sh ./VMware-Workstation-9.0.1-894247.x86_64.bundle

Trình cài đặt có thể được khởi chạy thành công.

Tại sao điều này làm cho một sự khác biệt?



Câu trả lời:


13

Nếu tệp không được đánh dấu là có thể thực thi được, bạn cần gọi trình thông dịch shell lệnh để thực thi nó.

Ví dụ:

  • sudo sh foosẽ mở foo bằng shcách sử dụng đặc quyền sudo .

  • sudo bash foosẽ mở foo bằng bashcách sử dụng đặc quyền sudo .

  • sh foosẽ mở foo bằng shcách sử dụng các đặc quyền của người dùng của bạn.

  • bash foosẽ mở foo bằng bashcách sử dụng các đặc quyền của người dùng của bạn.

Nếu bạn đánh dấu một tệp là có thể thực thi được, bạn chỉ cần gọi nó bằng ./foovà vì nó được đánh dấu như vậy, nó sẽ được đọc với trình thông dịch shell lệnh đã xác định và được thực thi mà không cần xác định.

ls -Fsẽ liệt kê các tệp và đánh dấu các tệp thực thi bằng * .

Để kích hoạt bit thực thi trên một tệp (và làm cho nó có thể thực thi được như vậy), hãy sử dụng lệnh chmod +x foo.

Trong trường hợp của bạn để làm cho tệp bạn đang sử dụng có thể thực thi được thì bạn sẽ sử dụng lệnh

chmod +x VMware-Workstation-9.0.1-894247.x86_64.bundle

và sau đó bạn sẽ có thể chạy nó với một trong hai

sudo sh ./VMware-Workstation-9.0.1-894247.x86_64.bundlehoặc chỉ bằng cách gõ sudo ./VMware-Workstation-9.0.1-894247.x86_64.bundle.


12

Sh là một shell để chạy các lệnh, vì vậy thực thi sh với sudo cung cấp cho bạn một shell root. Điều này có nghĩa là tất cả các lệnh trong shell đó được thực thi như root. Tôi đoán là script thực thi một cái gì đó khác cần root, tuy nhiên khi bạn chỉ sử dụng sudo không sudo sh, thì cái gì đó khác sẽ được thực thi như một người dùng bình thường, tuy nhiên với sh mọi thứ sẽ được thực thi như root.


Cảm ơn câu trả lời của bạn. Danh tiếng của tôi dưới 15 vì vậy tôi không thể bỏ phiếu cho câu trả lời của bạn. Nhưng ,,, Cảm ơn BẠN!
Landy

1
Câu trả lời được chấp nhận có một số chi tiết hơn nhưng tôi nghĩ rằng đây thực sự là một điểm quan trọng mà mọi người nên nhận thức được.
Christopher Hunter
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.