`sudo restart` vs` restart` - sự khác biệt là gì?


60

Gần đây tôi phát hiện ra rằng nó reboothoạt động tốt như sudo reboot, từ những gì tôi có thể nói. Tuy nhiên, trong rất nhiều trường hợp, tôi thấy mọi người nói sudo reboot. Tại sao lại thế này? Có phải họ giống nhau, và chỉ là sở thích cá nhân? Hay chúng khác nhau? Có sudo rebootlàm nhiều hơn rebootkhông?


1
Khởi động lại hệ thống bởi người dùng thông thường thậm chí không có vẻ hợp lý. Thay đổi runlevel của quá trình root (init) nên có thể bởi root và chỉ người dùng root. Bạn thậm chí không thể truy cập các phím tắt hệ thống tập tin của sysrq bởi bất kỳ người dùng nào khác. NHƯNG ! Bạn có thể khởi động lại linux của mình bằng sysrq các phím , nó không yêu cầu sudo:)
Svetlana Linuxenko

sudolà viết tắt của "Super-user Do". Nó không có tác dụng đối với chính lệnh (hiện tại reboot), nó chỉ khiến nó chạy như siêu người dùng chứ không phải là bạn. Nó được sử dụng để làm những việc mà bạn có thể không được phép làm, nhưng không thay đổi những gì được thực hiện. Nếu bạn đã có quyền chạy reboot, thì tốt thôi, cứ chạy đi reboot.
Lee Crocker

Điều này theo truyền thống cần root để làm. Thói quen cũ khó phá vỡ.
Thorbjørn Ravn Andersen

6
@SvetlanaLinuxenko> Khởi động lại hệ thống bởi người dùng thông thường thậm chí không nghe có vẻ hợp lý Người dùng đang ngồi trên bàn điều khiển có thể chỉ cần nhấn nút nguồn hoặc rút phích cắm nếu chúng ta không cho phép họ khởi động lại sạch sẽ.
Kaz

Rất nhiều bản phân phối khác sẽ không cho phép bạn khởi động lại nếu bạn chưa root.
dùng253751

Câu trả lời:


114

Trên Ubuntu 14.10 trở lên, sudolà bắt buộc.

Việc giới thiệu Systemd vào 15.04 đã thay đổi cách xử lý của Ubuntu shutdownreboot:

  1. Khi một người dùng đăng nhập, sudokhông cần thiết. Khi có nhiều hơn một người dùng đăng nhập thì sudođược yêu cầu.

  2. Các ứng dụng có thể ức chế shutdownreboot. Bạn ghi đè những ức chế này với sudo.

  3. Một người dùng đăng nhập thông qua sshvẫn yêu cầu sudo.


Tôi nghĩ rằng điều này bao gồm một người dùng đã đăng nhập nhiều lần.
mckenzm

6
Nó không có gì để làm với số lượng người dùng kết nối. Khả năng khởi động lại mà không sử dụng sudophụ thuộc vào việc có mặt ở bàn điều khiển của máy. Nếu bạn ssh vào máy, bạn vẫn không thể khởi động lại mà không cần sudo, ngay cả khi bạn là người dùng duy nhất đăng nhập. Ngược lại, nếu bạn ở bàn điều khiển, bạn vẫn có thể khởi động lại mà không cần sudongười dùng khác kết nối từ xa.
Dave Sherohman

1
@DaveSherohman: Điều đó không hẳn đúng - systemd vẫn sử dụng các hành động polkit riêng tùy thuộc vào việc bạn là người duy nhất đăng nhập hay có nhiều người hay không. Có nghĩa là, bản phân phối (hoặc sysadmin) có thể rất dễ khiến chúng cư xử khác đi.
grawity

21

Trên máy 14.04 của tôi, khi tôi (như một người dùng bình thường) reboot, tôi nhận được

reboot: Need to be root

Đó là sự khác biệt.

Như Terrance đã chỉ ra trong các ý kiến, nó hoạt động khác nhau trên các hệ thống sau này so với của tôi. Vì vậy, có lẽ bạn đang nhìn thấy các bài viết cũ và / hoặc người dùng (như tôi), những người đã quen với việc gõ sudo reboot!


Hấp dẫn! Điều tôi đang thắc mắc bây giờ là liệu có thứ gì đó thay đổi trong khoảng thời gian từ 14.04 đến 17.10 để khiến bạn không cần phải root reboothay nếu có các yếu tố khác trong hệ thống của tôi thay đổi điều đó.
Zeke Egherman

3
@ZekeEgherman Tôi thực sự nghĩ rằng sự khác biệt đã xảy ra khi họ thay đổi từ Upstart thành Systemd cho các lệnh. Khi tôi nhìn vào lệnh khởi động lại, nó trỏ đến như một liên kết đến /bin/systemctl. Bạn có thể kiểm tra của bạn bằng cách gõ vào ls -al $(which reboot).
Terrance

@terrance, tôi cũng thấy link /bin/systemct1, bạn là phiên bản nào?
Zeke Egherman

Điều đó thật thú vị! Tôi vừa thử nó trên máy ảo tiền phát hành 18.04 của tôi và nó hoạt động như bạn nói. @Terrance, tôi nghĩ bạn nên viết lên câu trả lời thực sự.
Đá cẩm thạch hữu cơ

@ZekeEgherman 16.04. Ubuntu chuyển sang Systemd lúc 15.04. Vì vậy, 14.04 vẫn sẽ là Upstart sau đó hoặc initd nếu đó là những gì bạn muốn gọi nó.
Terrance

9

sudo rebootđược sử dụng trong hướng dẫn / cách thực hiện vì lý do tương thích

Trong khi reboot có thể làm việc

  • nếu bạn là root hoặc
  • nếu bạn đang ở trên một máy chủ với systemd
  • nếu không có ứng dụng nào chặn khởi động lại

sudo rebootsẽ " luôn luôn " * làm việc, bất kể

  • cho dù bạn là root
  • cho dù có người dùng khác đăng nhập
  • có ứng dụng chặn không
  • cho dù init là systemd, System V, Upstart, sao cũng được

* Chà, chắc chắn nó sẽ thử - thiếu một số quy trình kernel đang chặn / xử lý sai nó sẽ hoạt động.


Nó sẽ luôn hoạt động * nếu sudo được cài đặt.
Ave

7

Đối với bản thân tôi nhiều lần nếu tôi gõ rebootnó sẽ không cho phép tôi do các chất ức chế từ Chrome khi xem YouTube và các tab đã mở khác. Vì vậy, tôi buộc phải sử dụng sudo reboot- một cái búa lớn hơn.

Cái này trong Ubuntu 16.04


4

Cảm ơn đã thảo luận, tôi rất vui khi hiểu điều này ngay bây giờ!

Như Terrance đã đề cập, trong phiên bản 15.04, họ đã chuyển từ Upstart sang Systemd cho các lệnh. Thay đổi này có nghĩa là rebootkhông còn yêu cầu quyền root.

Về lý do tại sao cộng đồng * nix hướng dẫn sudo reboot, có một vài lý do tiềm năng:

  • Thói quen - Mọi người đã quá quen với việc phải sudo rebootkhởi động lại, họ tiếp tục làm điều đó mặc dù thực tế là không cần thiết
  • Người dùng không cập nhật - Những người hướng dẫn sử dụng sudo rebootcác phiên bản Ubuntu thấp hơn 15.04 hoặc các bản phát hành khác sử dụng Upstart cho các lệnh.

  • Khả năng tương thích - Đây là điều có vẻ hợp lý nhất đối với tôi: mọi người đang hướng dẫn sudo rebootbởi vì nó được đảm bảo để khởi động lại trên tất cả các hệ thống * nix, bất kể điều gì.

Ghi chú bổ sung: từ câu trả lời của user535733 :

Việc giới thiệu systemd vào 15.04 đã thay đổi cách Ubuntu xử lý tắt máy và khởi động lại:

  1. Khi một người dùng đăng nhập, sudokhông cần thiết. Khi có nhiều hơn một người dùng đăng nhập, thì sudobắt buộc phải có.

  2. Các ứng dụng có thể ức chế tắt máy và khởi động lại. Bạn ghi đè những ức chế này với sudo.

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.