Có thể sudo được cài đặt lại sau khi được gỡ bỏ?


61

Đây dường như là một vấn đề trứng gà. Nhiệm vụ phổ biến nhất sử dụng sudolà cài đặt và gỡ bỏ phần mềm.

sudo apt-get purge <appname>

Nhưng sudochính nó có thể được gỡ bỏ.

sudo apt-get purge sudo # Do not run this command on production computers!

Đây là nơi niềm vui đến

ubuntu@ubuntu:~$ sudo
bash: /usr/bin/sudo: No such file or directory

Mặc dù rõ ràng là không ai trong tâm trí của anh ta sẽ thanh trừng sudo(ngoài tôi), ai đó có thể bị lừa để chạy lệnh này (không trực tiếp, trong chế độ hex hoặc bất cứ thứ gì nó được gọi) hoặc một người có thể SSH được ngụy trang thành bậc thầy công nghệ và làm lộn xộn .

Vậy có cách nào để cài đặt lại sudo không?


3
tốt, tôi thậm chí không bao giờ biết sudo có thể thanh trừng quá! linux là rất tùy biến!
dùng247696

Không thực sự đáng để trả lời, vì sẽ quá muộn nếu điều này xảy ra, nhưng không có gì ngăn cản bạn đặt mật khẩu cho rootngười dùng. Sau đó su, bạn có thể sử dụng hoặc đăng nhập trực tiếp dưới quyền root nếu bạn có quyền truy cập vật lý vào máy (ssh thường sẽ được định cấu hình để từ chối các nỗ lực đăng nhập với quyền root).
IMSoP

Tất cả các câu trả lời phụ thuộc vào một số cách truy cập hệ thống tập tin với các đặc quyền. Ví dụ (bộ đếm): Android Asus Memopad của tôi không có sudovà không có "khởi động an toàn" hoặc tương đương. Cách duy nhất tôi biết là đi đến xda-devvà cài đặt đầy đủ gói cài đặt sẵn. Bạn thật may mắn, có thể nói, bạn không có giới hạn này.
Carl Witthoft

@CarlWitthoft Android là một công cụ phái sinh linux, hơn là một bản phân phối linux. Ngoài ra google đã thực hiện nhiều thay đổi trong đó (điều mà hầu hết người hâm mộ linux ghét). Root , vốn nổi tiếng trên điện thoại thông minh Android, không gì khác ngoài nỗ lực để đạt được sức mạnh của linux thực sự trên Android.
Người dùng đã đăng ký

4
Bạn không thể đăng nhập với quyền root?
Konrad Höffner

Câu trả lời:


56

Tôi có thể cài đặt ứng dụng bằng cách sử dụng:

pkexec apt-get install <appname>

Từ man pkexec:

  pkexec allows an authorized user to execute PROGRAM as another user. If
  username is not specified, then the program will be executed as the
  administrative super user, root.

Vì vậy, tôi cho rằng pkexec apt-get install sudonên làm việc là tốt.


Chỉnh sửa : bây giờ tôi có thể xác nhận: , sudocó thể được cài đặt bằng cách sử dụng pkexec apt-get install sudo:

cài đặt lại sudo

( bấm vào để phóng to )


@RaduRadeanu Điều này thật thú vị tôi sẽ thử điều này cảm ơn bạn ......
Premkumar

@Premkumar Kiểm tra nó với sự đề phòng! Lệnh cuối cùng từ chụp màn hình có lẽ chỉ trong trường hợp của bạn : sudo apt-get install gksu ubuntu-minimal. Nhưng tốt hơn, hãy kiểm tra các gói đã được gỡ bỏ cùng lúc với sudo.
Radu Rădeanu

5
@Thebluefish Gói được gọi policykit-1(kể từ ngày 12.04). Nó có thể được gỡ bỏ, nhưng với chi phí loại bỏ các gói mà bạn thường muốn trên một hệ thống máy tính để bàn như gnome-coreubuntu-desktop(trên máy chủ, nhiều khả năng nó không được yêu cầu bởi bất kỳ gói cần thiết nào). Tuy nhiên, Radu, điều gì xác định rằng tài khoản của bạn có thể sử dụng pkexec apt-get …? Đây có phải là thứ bạn đã cấu hình hay nó tự động xảy ra và nếu vậy, điều gì xác định rằng một tài khoản có thể làm điều này?
Gilles 'SO- ngừng trở nên xấu xa'

1
@Gilles Tôi không nhớ được thực hiện một số cấu hình theo nghĩa này trong quá khứ. Vì vậy, tôi cho rằng điều đó xảy ra tự động. Nếu bạn biết những gì xác định rằng một tài khoản có thể làm điều này, xin vui lòng chia sẻ; đây là ngoài lĩnh vực chuyên môn của tôi.
Radu Rădeanu

2
@Gilles Tôi nghĩ rằng các thành viên của sudonhóm có thể sử dụng pkexec. (Kinh nghiệm của tôi là thêm người dùng vào nhóm này đem đến pkexeckhả năng và loại bỏ chúng khỏi nó loại bỏ pkexeckhả năng; theo cách này, pkexeckhả năng dường như được trao cùng là như sudokhả năng trong mặc định sudoerscấu hình, có ý nghĩa kể từ khi có khả năng sudopkexecnhư rễ được chủ yếu là những gì làm cho người dùng trở thành quản trị viên trong Ubuntu.) Tôi không nghĩ việc gỡ cài đặt sudosẽ xóa sudonhóm. Nhưng tôi không hoàn toàn chắc chắn giả định của mình là đúng trong mọi trường hợp hợp lý.
Eliah Kagan

29

Bạn luôn có thể khởi động vào Chế độ khôi phục , thả vào shell root và cài đặt nó mà không cần sudo.


16
bạn có thể thêm phần thiết yếu và có liên quan từ liên kết ở đây?
Người dùng đã đăng ký

Nếu không có phục hồi có sẵn trong menu khởi động grub, nhấn <kbd> e </ kbd> và thêm `single` vào bootline. Sau đó, khi khởi động, thiết lập mật khẩu root bằng cách sử dụng passwd. Khởi động lại Normaly, trên dòng lệnh nhập sutheo sau là mật khẩu mới và chạy apt-get install sudo(không có sudo-prefix)
MiningWare 18/03/2016

1
Làm thế nào bạn có được kết nối internet trên root shell?
Avinash Raj

22

Có, có thể cài đặt lại sudogói thông qua phương pháp chroot .

  • Khởi động đầu tiên từ đĩa sống Ubuntu.

  • Gắn phân vùng Ubuntu đã cài đặt trước đó vào bất kỳ thư mục nào bạn muốn. Trong trường hợp của tôi, tôi đã gắn nó vào /media/ubuntu.

    sudo mkdir /media/ubuntu
    sudo mount /dev/sdaX /media/ubuntu   # /dev/sdaX - previously installed Ubuntu partition.
    
  • Theo mặc định, bạn không thể có được kết nối internet sau khi được phân vùng vào một phân vùng. Vì vậy, hãy chạy lệnh dưới đây để làm cho nó hoạt động.

    for d in dev sys run proc; do sudo mount --bind /$d /media/ubuntu/$d ; done
    

Cảm ơn @Oli cho đoạn mã tuyệt vời này .

  • Bây giờ chroot vào thư mục được gắn kết đó,

    $ sudo chroot /media/ubuntu
    # apt-get update
    
  • Cài đặt sudogói bằng cách chạy,

    # apt-get install sudo
    
  • Bây giờ thoát ra khỏi môi trường chroot.

    exit
    
  • Cuối cùng khởi động Ubuntu OS của bạn. Bây giờ hãy kiểm tra sudolệnh của bạn , nó chắc chắn sẽ hoạt động.


4

Khởi động với tham số phụ init=/bin/shtrên dòng lệnh kernel. Điều này sẽ đưa bạn trực tiếp vào một vỏ gốc, từ đó bạn có thể chỉ cần chạy apt-get install sudovà sau đó khởi động lại. Bạn có thể cần phải chạy /etc/init.d/networking startđể có được kết nối mạng làm việc trước tiên. Đơn giản hơn nhiều so với việc làm hỏng đĩa CD khôi phục hoặc đĩa sống, nếu bạn hỏi tôi.


1

Nếu bạn đã thiết lập hoặc cập nhật rootmật khẩu tài khoản người dùng bằng lệnh này sudo passwd rootthì bạn đừng lo lắng về việc thanh trừng. sudoChỉ cần đăng nhập vào roottài khoản của bạn và sau đó cài đặt sudo,

su
apt-get install sudo

nhập mô tả hình ảnh ở đây

Nhấn vào đây để phóng to


điều này hoạt động nếu tài khoản root được kích hoạt và trên Ubuntu, nó thường bị vô hiệu hóa. sutrên máy tính của tôi cung cấp "su: Xác thực thất bại", mặc dù tôi đã cung cấp mật khẩu chính xác
BЈовић

vâng, bạn đã đúng như những gì tôi đã nói. Nếu bạn đã cập nhật mật khẩu tài khoản người dùng root thì bạn đừng lo lắng về việc thanh trừng sudo. Bây giờ hãy thử điều này sudo passwd root, nó sẽ cho phép bạn cập nhật mật khẩu tài khoản người dùng root . Bây giờ hãy đăng nhập vào tài khoản root của bạn bằng cách chạy lệnh. Một khi subạn có thể đăng nhập thì bạn sẽ được tự do thanh lọc sudo. Làm thế nào để thanh lọc sudo bằng cách. sudo apt-get purge sudoĐăng nhập vào tài khoản root của bạn để cài đặt lại gói sudo bằng cách chạy suapt-get install sudo
Avinash Raj

-1

sudo (và bất kỳ đặc quyền gốc nào khác) chỉ áp dụng cho HĐH đang chạy. Nếu bạn đã ngớ ngẩn và loại bỏ sudo (hoặc / usr / cho vấn đề đó) và không có lựa chọn thay thế như pkexec, bạn có thể chỉ cần khởi động từ một thứ khác, sao chép phần mềm bị thiếu và khởi động lại.

Truy cập vật lý vô hiệu hóa bất kỳ và tất cả bảo mật phần mềm mà hệ thống của bạn có thể có.


Tôi khuyên bạn nên mở rộng điều này để giải thích ý của bạn bằng cách "sao chép phần mềm hiện có."
Eliah Kagan

Không phải là một cách rất dễ dàng để sửa chữa nó mặc dù.
Seth

@ Nếu không có sự can thiệp của op Tôi thực sự nghi ngờ nó có thể được sửa mà không cần viết câu trả lời khác.
Braiam

Vâng, cách làm đúng đắn sẽ là chroot, nhưng có rất nhiều cách ít man rợ hơn. Chẳng hạn, đăng nhập bằng root (theo cách BÌNH THƯỜNG) hoặc, nếu bạn bằng cách nào đó không có mật khẩu gốc, chỉ cần đặt init = / bin / bash làm tham số kernel và bạn chuyển qua toàn bộ hệ thống init bao gồm xác thực đăng nhập.
orion

-2

Vấn đề này dường như rất đặc trưng cho Ubuntu. Là người dùng không phải Ubuntu, ban đầu tôi thậm chí không hiểu tại sao sudo lại là trường hợp đặc biệt theo bất kỳ cách nào (rất nhiều bản phân phối không cài đặt theo mặc định).

Bạn không cần sudo chút nào. Nó chỉ là một phím tắt lười biếng cho phép bạn thực thi một lệnh gốc mà không thực sự đăng nhập bằng root. Tuy nhiên, nếu bạn phải làm bất cứ điều gì nhiều hơn một lệnh, thì thật tệ khi liên tục tiền tố mọi thứ với sudo. Chưa kể rằng việc sử dụng sudolàm cho người dùng không biết gì về cách các quyền và tài khoản root hoạt động. Nó có ý nghĩa hơn nhiều khi chỉ cần đăng nhập như root, thực hiện quản trị hệ thống và đăng xuất. Điều đó bạn làm với sunếu bạn đã đăng nhập như một người dùng thông thường. Hoặc bạn có thể đăng nhập trực tiếp với quyền root.

Tất nhiên bạn cần phải có rootmật khẩu, đó là cấu hình hợp lý, nếu không, bạn có một hệ thống giống như cửa sổ nơi có những hành động không ai có thể thực hiện và bạn thực sự bị khóa nếu sudokhông có cách nào đó (nó yêu cầu làm việc /etc/, thiết lập $PATHvà khác những thứ được gắn kết - thứ mà bạn có thể không có nếu có sự cố xảy ra sớm khi khởi động).


Đây có thể là thông tin hữu ích, nhưng nó không trả lời câu hỏi.
Luís de Sousa

Thật. Điều này thực sự không phải là liên quan đến một hệ thống nơi mật khẩu gốc của người khuyết tật và sudo được cài đặt theo mặc định. Và nếu bạn nhìn vào các câu trả lời khác, bạn sẽ thấy đoạn cuối cũng không đúng.
Oli

Một người dùng dự tính xóa sudokhỏi ubfox cũng nên xem xét việc đặt mật khẩu gốc (các câu hỏi khác chỉ ra cách thực hiện điều đó). Một người dùng không quan tâm đến công cụ này, có thể tiếp tục sử dụng sudo.
orion
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.