Người dùng không có trong tập tin sudoers. Sự cố này sẽ được báo cáo


24

Tôi cần phải cài đặt một gói. Cho rằng tôi cần quyền truy cập root. Tuy nhiên, hệ thống nói rằng tôi không có trong tập tin sudoers. Khi cố gắng chỉnh sửa một, nó phàn nàn như nhau! Làm thế nào tôi có thể tự thêm mình vào tập tin sudoers nếu tôi không có quyền chỉnh sửa?

Tôi đã cài đặt hệ thống này và chỉ quản trị viên. Tôi có thể làm gì?

Chỉnh sửa : Tôi đã thử visudorồi. Nó đòi hỏi tôi phải ở trong sudoers ngay từ đầu.

amarzaya@linux-debian-gnu:/$ sudo /usr/sbin/visudo 

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for amarzaya: 
amarzaya is not in the sudoers file.  This incident will be reported.
amarzaya@linux-debian-gnu:/$ 

4
Vâng, rõ ràng user not(is) the sudoers file. (Typo trong tiêu đề)
Hello71

8
Bây giờ bạn đang ở trong danh sách nghịch ngợm - xkcd.com/838
Aaron Newton

Câu trả lời:


18

Sẽ là một lỗ hổng bảo mật nếu bạn có thể tự thêm vào /etc/sudoersmà không cần truy cập sudo hoặc root. Về cơ bản sau đó bất cứ ai cũng có thể làm cho mình root.

Về cơ bản, bạn cần yêu cầu quản trị viên của máy đó thêm bạn hoặc cài đặt gói cho bạn, theo chính sách của trang web.

Bạn cũng nên chắc chắn sử dụng visudo để chỉnh sửa tệp sudoers - nó kiểm tra xem cú pháp có đúng không trước khi ghi tệp. Và bạn có thể sử dụng các trình soạn thảo khác với vi với visudo. Theo mặc định, nó sẽ sử dụng bất cứ thứ gì bạn đã đặt $EDITORvà nếu bạn không cài đặt, bạn có thể làm

# EDITOR=nano visudo

để sử dụng trình soạn thảo nano thay thế.


5
Tôi là quản trị viên, vì đây là máy của tôi và tôi đã cài đặt hệ thống này, nhưng nó không giúp ích gì :(
Sergiy Belozorov 15/03/2016

9
Nếu đó là hệ thống của bạn thì bạn nên nhập mật khẩu cho người dùng root khi cài đặt. Vì vậy, đăng nhập với tư cách là 'root' và sau đó thực hiện các công cụ visudo.
Hamish Downer

Thật. Lỗi của tôi. Tôi đã quên rằng tôi đã nhập mật khẩu trong quá trình cài đặt trở lại.
Sergiy Belozorov

24

Đăng nhập bằng root và sử dụng /usr/sbin/visudođể chỉnh sửa tập tin và thêm tên người dùng của bạn. Bình thường vi / vim sẽ không thể chỉnh sửa tập tin.

Cách dễ nhất là chỉ cần đi xuống cho đến khi bạn thấy dòng " root ALL=(ALL) ALL" và tự thêm vào đó với cùng một cú pháp ( yourusername ALL=(ALL) ALL). Hoặc, bạn có thể đọc trang web sudoers nếu bạn muốn cung cấp cho mình những đặc quyền cụ thể hơn.


Nó yêu cầu tôi phải ở trong danh sách sudoers ở vị trí đầu tiên để chạy visudo. Tôi đã cài đặt Debian này, không có quản trị viên nào khác.
Sergiy Belozorov

Nếu bạn đã đăng nhập bằng root, bạn không cần phải chạy sudo visudo; chỉ cần chạy /usr/sbin/visudo. Nhưng có vẻ như bạn đã tìm thấy điều này, từ các bình luận của câu trả lời khác.
Ricket

không đủ để thêm người dùng tương ứng vào nhóm "sudo" hoặc "sudoers" (tùy thuộc vào bản phân phối)? Đáng buồn thay trong trường hợp của tôi, nó không hoạt động, nhưng tôi có thể thề điều này được sử dụng để làm việc ...?
Gregor

5

Chỉ cần gõ lệnh:

$ su

Và hỏi mật khẩu "root". Đánh máy và bùng nổ ... Nó đã làm việc!

Vấn đề này là sai lầm của tôi. Do được quay lại cơ sở tại thời điểm tôi tạo tên người dùng và mật khẩu.


Cảm ơn điều đó thực sự hữu ích và cứu được thịt xông khói của tôi! Nhưng tôi tò mò tại sao chỉ cần thêm lệnh này và sau đó là mật khẩu gốc, sẽ cho phép các đặc quyền nâng cao .... dường như đánh bại mục đích của thông báo "Người dùng không có trong tệp sudoers. Sự cố này sẽ được báo cáo"
Sol

1

Có lẽ cách dễ nhất, một khi bạn đã root, là:

echo 'amarzaya ALL=(ALL) ALL' >> /etc/sudoers

7
Bạn nên chắc chắn sử dụng visudo để chỉnh sửa tệp sudoers, thay vì chỉnh sửa trực tiếp hoặc lặp lại văn bản cho nó. Điều này sẽ đảm bảo rằng nó đúng về mặt cú pháp và đảm bảo rằng bạn không tự khóa mình khỏi quyền truy cập hoặc cấp cho ai đó quyền truy cập không đúng.
pkaeding

1

Nếu tập tin sudoers của bạn đã chứa loại dòng này

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

Sau đó, cách làm sạch nhất có lẽ là cấp adminnhóm cho người dùng của bạn. Chẳng hạn, để thêm lời tiên tri của người dùng vào admin nhóm :

usermod -aG admin oracle

Đó là những gì tôi đang tìm kiếm. Đối với tôi là sạch nhất, không có lộn xộn với các tập tin sudoers.
webjunkie

1
Lệnh đúng làusermod -g oracle admin
kvanberendonck

-1: cú pháp là usermod -g $group $user. Bạn có thể nghĩ về addusercú pháp, đó là adduser $user $group.
Blacklight Shining

1
Thật ra, rất có thể bạn sẽ muốn usermod -aG $group $user. -gđặt nhóm chính của người dùng thành nhóm bạn chỉ định và -Gkhông có -angười dùng sẽ xóa người dùng khỏi các nhóm không được liệt kê. -gcũng sẽ thay đổi quyền sở hữu nhóm của tất cả các tệp thuộc sở hữu của nhóm trước đó trong thư mục chính của người dùng. Vì vậy, nếu bạn đang như tôi và bạn đã thiết lập umask của bạn để 007...
Blacklight Shining

1
@BlacklightShining. Bạn đúng. Cú pháp sai được đề xuất bởi một người bình luận trước đó và vì oraclethường là một nhóm, nên thực sự có chỗ cho sự nhầm lẫn. Tôi không nên "sửa".
Alain Pannetier

-1

Trong trường hợp bạn vẫn có thể truy cập root bằng cách sử dụng su, bạn có thể sử dụng lớp lót này để tự thêm vào /etc/sudoers/:

su -c 'echo $USER ALL=(ALL)ALL >> /etc/sudoers'

Để kích hoạt thay đổi, đăng xuất và đăng nhập lại. Ví dụ: kết thúc Phiên X của bạn hoặc đăng xuất qua shell enter exit.



-1

Nếu bạn không thể sử dụng sudolệnh, thì bạn có thể sử dụng phương pháp sau:

  1. Nhấn Ctrl+ Alt+F1
  2. Đăng xuất người dùng nếu người dùng không root
  3. Đăng nhập bằng root
  4. Sử dụng quyền root
  5. Đăng xuất ( exit) - Ctrl+ Alt+ F7để truy cập GUI

-1: Điều này chỉ hoạt động trong một số môi trường cục bộ thực sự có GUI.
Blacklight Shining

-1

Tất cả bạn cần là thêm <username>vào whellnhóm của bạn .

# usermod -aG whell username

Sau đó đăng nhập với tên người dùng của bạn và tận hưởng :)


-3

Đăng nhập bằng cách sử dụng trước:

$ su

Sau đó tiếp tục với:

$ sudo apt-get update

hoặc bất cứ điều gì bình thường


1
bạn không cần su- sudo làm điều này.
Simon Sheehan

Họ không hoàn toàn giống nhau thực sự. sudo là 'làm siêu người dùng', nhưng bạn đăng nhập bằng mật khẩu người dùng. su là 'chuyển người dùng' và theo mặc định (không có đối số), nó cố gắng chuyển sang người dùng root, trong trường hợp đó bạn cần nhập mật khẩu gốc. Nhưng bạn cũng đúng - sử dụng sudo sau su là dư thừa, vì bạn đã là người dùng root.
Aaron Newton

@ aaron.newton Tôi thực sự sẽ đọc nó dưới dạng Switch User và DO; bạn có thể chọn bất kỳ người dùng nào để chạy lệnh như với -ucờ. Nó được dùng chủ yếu cho mục gốc, nhưng như vậy là su.
Blacklight Shining

@ aaron.newton Tôi thực sự sẽ đọc nó dưới dạng Switch User và DO; bạn có thể chọn bất kỳ người dùng nào để chạy lệnh như với -ucờ. Nó được dùng chủ yếu cho mục gốc, nhưng như vậy là su.
Blacklight Shining
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.