Bạn có nghĩa là gì?


16

Đây là những gì tôi tiếp tục nhận được:

ascendermedia@magic2tower:~$ sudo apt-get install flashplugin-installer
bash: sudo: command not found
ascendermedia@magic2tower:~$ sudo apt-get install flashplugin-installer
bash: sudo: command not found
ascendermedia@magic2tower:~$ apt-get install flashplugin-installer
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
ascendermedia@magic2tower:~$ sudo aptitude install flashplugin-nonfree
bash: sudo: command not found
ascendermedia@magic2tower:~$ aptitude install flashplugin-nonfree
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
ascendermedia@magic2tower:~$ 

Tôi đang làm gì sai?

Câu trả lời:


29

rootlà tài khoản superuser trên hệ thống - về cơ bản nó có tất cả các đặc quyền. Nhiều hệ thống được cấu hình để bạn có thể sử dụng sudolệnh trước một lệnh khác để chạy lệnh đó "với quyền root" - nghĩa là, như thể bạn là người dùng root, có cùng đặc quyền.

Nó thường là trường hợp bạn cần quyền root để cài đặt các gói hệ thống, đó là những gì apt-getlàm. Vì vậy, lần đầu tiên nó không hoạt động vì bạn không có sudosẵn; lần thứ hai vì sudokhông xuất hiện một cách kỳ diệu chỉ vì bạn đã chạy nó hai lần; và lần thứ ba (và thứ năm) bởi vì apt-get(và aptitude) thực sự yêu cầu các quyền riêng tư gốc để cài đặt các gói như thế này.

Như bạn thấy từ thông báo lỗi đầu tiên của mình, sudo không được cài đặt hoặc không có trong đường dẫn của bạn và có thể không được định cấu hình. Bạn có thể thay thế su -cvà cung cấp mật khẩu gốc (mật khẩu cho roottài khoản) khi được nhắc.

Nếu bạn không biết mật khẩu đó, bạn cần phải a) hỏi người thực hiện nhiệm vụ này cho bạn, nếu đó không phải là hệ thống của bạn, hoặc b) tìm cách khôi phục mật khẩu.


Điều này chủ yếu là đúng, mặc dù tôi sẽ đề cập rằng sudokhông chỉ chạy các lệnh "như thể bạn là root", nó thực sự chạy chúng dưới quyền root. Nếu bạn nhìn vào quá trình, bạn sẽ thấy nó chạy dưới dạng root chứ không phải id người dùng của bạn. Ngẫu nhiên, trên các máy không được thiết lập để cho phép đăng nhập tương tác bằng root theo mặc định, bạn chỉ có thể chạy sudo bashđể lấy shell gốc. :)
thiệu lại

@reirab Tôi nghĩ rằng nó sudo -iđược ưa thích mặc dù, vì nó tôn trọng vỏ hiện tại của bạn.
new123456

2
@ new123456 sudo -i sẽ sử dụng shell mặc định cho root. sudo -s sẽ sử dụng giá trị $ SHELL cho người dùng thực thi.
bgvaughan

@reirab Bạn đang trích dẫn từ phần mà tôi đang đưa ra lời giải thích về "gốc" nghĩa là gì từ quan điểm đơn giản hóa của người dùng.
mattdm

5

Bạn cần quyền root để thực hiện cập nhật hệ thống thông qua apt-get.

Bạn có thể chuyển sang tài khoản root bằng cách sử dụng su root. Có vẻ như bạn chưa sudocài đặt chương trình.


2
OP không chỉ thiếu sudođặc quyền, thậm chí anh ấy đã không sudocài đặt.
n.st

1
Thực sự, OP nên su để root đủ lâu để cài đặt và thiết lập sudo.
Kevin

1
@ n.st có thể không chính xác, nó có thể không ở trong PATH.
o11c

2
@ o11c Tôi cho rằng đó là những người không bao giờ gặp phải vấn đề đó nếu không có sudo vì họ luôn đăng nhập với quyền root.
Kevin

1
@ o11c Mặc dù có thể, điều đó dường như không có khả năng, đặc biệt là sudoapt-getcả hai đều được cài đặt /usr/bintheo mặc định (ít nhất là trên Debian).
n.st

5

Bạn có nghĩa là gì?

Để cài đặt các gói trên toàn hệ thống (cần gì apt-get), nó cần có quyền root, vì bạn sẽ tạo và thay đổi các tệp hệ thống ( rootlà tên thông thường cho tài khoản quản trị viên * nix).

Thông báo «bạn có phải root không?» Là một lời nhắc nhở nhẹ nhàng rằng bạn "cần phải root" để chạy apt-get install. Đây là lý do thường gặp nhất cho vấn đề mà nó gặp phải (hiển thị ở trên):

/ var / lib / dpkg / lock - open (13: Quyền bị từ chối)

.

Làm thế nào để trở thành root?

su

Cách truyền thống "trở thành root" là chạy su(và cung cấp mật khẩu của người dùng root). su (1) là viết tắt của s uper u ser hoặc s witch u ser.

Lưu ý rằng nó có thể được sử dụng để trở thành bất kỳ người dùng nào, vì vậy bạn có thể chạy su johnđể lấy shell như john. Chạy sukhông có tên người dùng là một tốc ký su root.

Để làm việc này, tài khoản người dùng root phải được kích hoạt và có mật khẩu được đặt. Một số hệ thống được định cấu hình (thậm chí theo mặc định), với tài khoản root bị vô hiệu hóa, để tránh ai đó -eg. kẻ tấn công - đăng nhập bằng tài khoản quản trị viên. Trong những trường hợp đó, họ cung cấp một cách khác để chạy các lệnh hành chính, như sudo.

sudo

sudo (1) là một chương trình cho phép bạn thực thi một lệnh như một người dùng khác (như ở trên, thường được thực hiện cho root). Nó được cấu hình /etc/sudoersvà cho phép kiểm soát tốt hơn, chẳng hạn như chỉ cho phép chạy một chương trình dưới dạng root, cho một người dùng cụ thể (có thể được đặt lại để yêu cầu mật khẩu của riêng họ) và cũng cung cấp các phương tiện ghi nhật ký (ví dụ: " john thực thi hệ thống hủy diệt như root ").

Có các tùy chọn khác cho runinng với các đặc quyền gia tăng (như calife ) nhưng chúng có mức sử dụng thấp hơn nhiều.

Nhật ký trên của bạn cho thấy sudokhông được cài đặt trên magic2tower.


0

Họ đã giải thích root là gì, khi bạn có "lệnh không tìm thấy" có thể là do bạn chưa cài đặt chương trình mà bạn đang cố chạy hoặc bạn không có đường dẫn trong các biến env của mình.

Hãy thử chạy comand như thế này:

/usr/bin/sudo apt-get install flashplugin-installer

Trong một số bản phân phối linux, bạn không thể thay đổi thành root để mọi lệnh mas được chạy với sudo. =)


1
Bạn chắc chắn nếu bạn có một thông báo như bash: sudo: command not foundý tưởng tốt nhất là cài đặt nó sudo apt-get install sudovà nếu nó gây ra lỗi tương tự, bạn sẽ học được đệ quy là gì
pqnet

2
Bạn không thể cài đặt sudo bằng cách sử dụng sudo.
Làm
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.