Làm thế nào để có được nhắc nhở mật khẩu GUI sudo mà không cần dòng lệnh?


10

Hiện tại, đối với tất cả các lệnh của tôi yêu cầu quyền truy cập root, tôi phải gõ chúng trên một dòng lệnh.

Tôi muốn GUI nhắc tôi nhập mật khẩu, khi cần sudo, thay vì phải gõ các lệnh từ dòng lệnh.

Có cách nào để kích hoạt điều này? Trước đây, một phiên bản máy tính để bàn Ubuntu đã có tính năng này.

Phiên bản Ubuntu này (hiện tôi đang chạy) Tôi đã nâng cấp từ bản cài đặt máy chủ.

Tôi sẽ thêm, tài khoản người dùng của tôi đã được thêm vào nhóm sudo. Do đó, tôi có thể chạy các lệnh như sudo gedithoặc sudo apt-getnhưng tôi không thể cài đặt phần mềm trong Trung tâm phần mềm Ubuntu.

Câu trả lời:


10

TL; DR: Hãy thử cài đặt policykit-1policykit-1-gnomecác gói.

Bạn có thể cần polkit (còn gọi là PolicyKit).

Hầu hết các tiện ích quản trị hệ thống đồ họa trong Ubuntu, bao gồm Trung tâm phần mềm, thường có thể được chạy mà không có sudohoặc bất cứ thứ gì khá giống như nó. Bạn chỉ cần chạy chúng giống như cách bạn chạy bất kỳ chương trình nào.

Khi đến lúc thực hiện một tác vụ yêu cầu quyền root, họ sử dụng polkit để thực hiện các hành động cần thiết. polkit là một cơ chế riêng biệt từ sudo, cho phép quản trị viên thực hiện các hành động với quyền root. Nó được cài đặt trên các hệ thống Ubuntu trên máy tính để bàn nhưng theo mặc định không phải là một phần của cài đặt Ubuntu Server.

Do đó, hành vi bình thường của Trung tâm phần mềm là bạn có thể gọi nó một cách đơn giản vì software-centernó sẽ không nhắc bạn xác thực vào thời điểm đó, nhưng sau đó khi bạn bảo nó cài đặt hoặc gỡ bỏ phần mềm, nó sẽ nhắc bạn (bằng đồ họa) để xác thực.

Âm thanh từ mô tả của bạn giống như hệ thống của bạn bắt đầu như một hệ thống Máy chủ Ubuntu không có GUI và sau đó bạn đã cài đặt GUI. Có lẽ các gói chính sách-1Cài đặt bộ chính sách-1 và chính sách-1-gnomeCài đặt chính sách-1-gnome chưa được cài đặt. Nếu bạn cài đặt, polkit rất có thể sẽ bắt đầu hoạt động cho Trung tâm phần mềm và các tiện ích khác như vậy.

sudo apt-get update
sudo apt-get install policykit-1 policykit-1-gnome

Sau đó, bạn sẽ có thể chạy:

software-center

(Hoặc chọn Trung tâm phần mềm theo đồ họa như được cung cấp cho bất kỳ môi trường máy tính để bàn nào bạn đã cài đặt.)

Nếu bạn muốn có một hệ thống máy tính để bàn Ubuntu đầy đủ chức năng, tôi khuyên bạn nên cài đặt siêu dữ liệu cho bất kỳ "hương vị" nào của Ubuntu mà bạn muốn biến hệ thống của mình thành. Về cơ bản, nếu bạn muốn có một hệ thống máy tính để bàn Ubuntu thông thường, hãy cài đặt máy tính để bàn UbuntuCài đặt máy tính để bàn Ubuntu .

sudo apt-get update
sudo apt-get install ubuntu-desktop

Điều này sẽ điền vào các khoảng trống khác nhau, như không có polkit, đi kèm với việc cài đặt GUI tối thiểu hơn trên hệ thống máy chủ của bạn. Mặt khác, nếu bạn thích GUI tối thiểu hơn, bạn có thể chỉ cần cài đặt các gói polkit đó.

Để biết thêm thông tin, hãy xem Làm thế nào để bạn chạy Ubuntu Server với GUI?

sudo với xác thực đồ họa.

Nếu bạn thực sự cần chạy các lệnh với quyền root nhưng nhận được hộp thoại xác thực đồ họa, thứ bạn đang tìm kiếm là gksudo( hoặcgksu ). Điều này được cung cấp bởi gói gksuCài đặt gksu . Nó là một lối vào đồ họa cho sudo.

Thông thường gksudođược sử dụng để chạy các ứng dụng đồ họa dưới dạng root (hoặc một số người dùng khác ngoài người dùng khởi chạy chúng). Nhưng bạn cũng có thể sử dụng nó để chạy các lệnh phi đồ họa - miễn là các lệnh có thể được chạy với sudo.

Bạn có thể chạy gksudotừ một thiết bị đầu cuối nhưng bạn không phải. Bạn có thể chạy nó từ hộp thoại Alt+ F2(lệnh chạy) hoặc đặt nó vào Exec=dòng của một .desktoptệp (hoặc bất kỳ cách nào khác bạn chạy các chương trình đồ họa).

Lưu ý rằng bạn nên xem xét sử dụng gksudođể chạy các ứng dụng đồ họa như là người chủ ngay cả khi bạn đang chạy chúng từ một thiết bị đầu cuối, bởi vì lệnh như sudo ...nơi ...là một ứng dụng đồ họa thực sự có thể phá vỡ các cấu hình cho mỗi ứng dụng của người sử dụng không phải root chạy chúng. (May mắn là điều này có thể sửa được.) sudo geditĐặc biệt nổi tiếng.

Để biết thêm thông tin về sự cố với sudocác ứng dụng đồ họa và phải làm gì thay vào đó, hãy xem:

Ngoài ra còn có cách đồ họa dựa trên polkit ... cho các lệnh phi đồ họa.

gksudohoạt động tốt để chạy cả chương trình đồ họa và phi đồ họa. Bạn có lẽ nên sử dụng nó.

Nhưng một sự thay thế, sử dụng polkit thay vì sudovà chỉ hoạt động cho các chương trình phi đồ họa , là pkexec.

Ví dụ: nếu bạn chạy pkexec touch /root/foo.txt, bạn sẽ được nhắc với hộp thoại xác thực đồ họa và nếu xác thực thành công, touch /root/foo.txtsẽ được chạy, tạo ( hoặc làm mới ) foo.txttrong /rootthư mục.

  • pkexecsẽ sử dụng hộp thoại phi đồ họa, yêu cầu thiết bị đầu cuối, trong trường hợp không thể tạo hộp thoại đồ họa. Nhưng điều này khó có thể xảy ra nếu bạn đang chạy nó thông qua một cơ sở được cung cấp bởi vỏ đồ họa hoặc môi trường máy tính để bàn của bạn.
  • Tại sao pkexecchỉ làm việc cho các chương trình phi kỹ thuật ? Trên thực tế, nó cũng chạy các chương trình đồ họa, nhưng chỉ khi polkit được cấu hình đặc biệt để cho phép nó - điều thường không được thực hiện. Xem man pkexec(và phiên bản ngược dòng, có ảnh chụp màn hình ), câu trả lời nàycâu trả lời đó để biết một số chi tiết, nếu bạn quan tâm.

sudoso với polkit (một số chi tiết kỹ thuật, chỉ khi bạn quan tâm)

Một cái mới gksu/ gksudosẽ sử dụng polkit thay vì sudođể thực hiện công việc của nó , mặc dù phiên bản này chưa được áp dụng rộng rãi. Tôi chủ yếu là đưa nó lên để giới thiệu các READMEtập tin trong mã của nó nguồn (được viết bởi Gustavo Noronha Silva), điều này giải thích sự khác biệt quan trọng giữa sudovà polkit. Để trích dẫn từ nó một cách ngắn gọn:

PolicyKit giải quyết vấn đề của một ứng dụng cần các đặc quyền cao hơn bằng cách cung cấp các phương tiện để cho phép người dùng tự xác thực và cho các ứng dụng để xác minh thông tin xác thực và ủy quyền. Ứng dụng phải được cấu trúc theo cách mà tất cả các hoạt động đặc quyền được thực hiện bởi một dịch vụ D-Bus nhỏ (tốt nhất là), được chỉ huy bởi mã không có đặc quyền. Tất cả "hành động" được thực hiện cần có sự cho phép thích hợp, được xử lý thông qua Bộ chính sách.

4. Tại sao phải duy trì gksu?

Vì vậy, điều này về cơ bản làm cho gksu không cần thiết, vì các ứng dụng không còn cần phải chạy như một người dùng đặc quyền và xác thực người dùng được thực hiện bởi Auth Agent của PolicyKit. Nhưng các ứng dụng cần được cấu trúc lại để áp dụng cấu trúc mới này, và có một số trường hợp trong đó những gì bạn muốn thực sự là thứ chạy chương trình với quyền root.

Những vấn đề này thể hiện tình huống mà tôi tin rằng bạn đang gặp phải:

  • Trung tâm phần mềm được thiết kế để sử dụng polkit cho độ cao đặc quyền, do đó chỉ những hành động cụ thể cần được thực hiện dưới quyền root. Đối với điều này, nó cần polkit, bị thiếu (hoặc bị hỏng) trên hệ thống của bạn.
  • Vì được thiết kế để sử dụng polkit, nên không có trình khởi chạy được tạo sẵn để khởi động Trung tâm phần mềm với quyền root. Polkit không cần phải chạy các công cụ quản trị đồ họa như root, hầu hết thời gian.
  • Nhưng đôi khi bạn thực sự cần phải chạy một chương trình đồ họa như root. Trong trường hợp đó, bạn có thể sử dụng gksu/ gksudo.
    (... Cuối cùng có thể sử dụng polkit đằng sau hậu trường - nhưng gksudohiện tại trong Ubuntu là loại truyền thống sử dụng sudo).

1
Xin chào Eliah, vâng, đó là một máy chủ không có GUI và tôi mới dùng thử GUI của Ubuntu, tôi đã chạy lệnh sudo apt-get install ub Ubuntu-desktop tôi không chắc bộ công cụ chính sách đã được cài đặt chưa. Sẽ cố gắng để cài đặt nó anyway. Hiện đang nâng cấp từ 12.04 lên 14.04.
Sean

Tôi đã gặp một tình huống trong đó tôi có một ứng dụng GUI mà tôi muốn chạy như bình thường (không phải root), nhưng nó chỉ cần đọc từ một cổng nối tiếp được sở hữu bởi root. Việc không thể cấp cho chương trình này một đặc quyền duy nhất thực sự gây phiền nhiễu (nói cách khác, tôi muốn có một hệ thống khả năng đối tượng đầy đủ).
CMCDragonkai

3
Xin vui lòng không gksubị từ chối và bị loại khỏi Ubuntu 18.04
Nathan F.

5

Một cách thuận tiện là tạo một .desktoptệp chuyên dụng hoặc thêm các lệnh của bạn vào một tệp hiện có, hỏi mật khẩu của bạn thông qua GUI (gksu). Trong ví dụ dưới đây, tôi thêm lệnh để chạy Gedit và Trung tâm phần mềm với các đặc quyền sudo cho trình khởi chạy Gedit. Bạn sẽ cần phải gksucài đặt để sử dụng thiết lập này:sudo apt-get install gksu

  1. Sao chép Gedit .desktop file in/ usr / share / application / to~ / .local / share / application`:

    cp /usr/share/applications/gedit.desktop ~/.local/share/applications/gedit.desktop
    

    và mở nó để chỉnh sửa (kéo nó vào một cửa sổ gedit mở)

  2. Tìm dòng: Hành động = Cửa sổ; Tài liệu;

  3. Thêm tên của các lệnh của bạn vào dòng (đây không phải là tên bạn sẽ thấy trong giao diện của mình, chỉ được sử dụng để tham khảo nội bộ trong tệp)

    Actions=Window;Document;gedit;Ubuntu Software Center;
    
  4. Thêm các phần tương ứng ở dưới cùng của tệp:

    [Desktop Action gedit]
    Name=Gedit  (with gksu)
    Exec=gksudo gedit
    OnlyShowIn=Unity;
    
    [Desktop Action Ubuntu Software Center]
    Name=Ubuntu Software Center (with gksu)
    Exec=gksudo /usr/bin/software-center
    OnlyShowIn=Unity;
    
  5. Đóng tệp và kéo nó vào trình khởi chạy

Bây giờ bạn có thể chạy gedit và Trung tâm phần mềm với các đặc quyền sudo:

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

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


Thật. Tôi không phản đối. Lý do tôi nhận xét về USC là một phần chính của câu hỏi là về cách OP có thể làm cho hệ thống của họ được tạo từ cài đặt máy chủ hoạt động như một hệ thống máy tính để bàn Ubuntu bình thường đối với việc xác thực bằng đồ họa cho các tác vụ quản trị. Câu trả lời của tôi tập trung vào điều đó và giải thích tính tổng quát của các chương trình đang chạy dưới dạng đồ họa gốc. Khi làm như vậy, nó lướt qua các cơ chế của gksu/ gksudo. Vì vậy, câu trả lời của bạn là tốt và cần thiết! Tôi chỉ hy vọng OP cũng cài đặt / sửa lỗi polkit, vì tôi nghĩ rằng điều đó sẽ khiến HĐH hoạt động theo cách họ muốn.
Eliah Kagan
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.