Câu hỏi Cách sửa đổi tệp '/ etc / sudoers' không hợp lệ?


Làm cách nào để chỉnh sửa tệp sudoers không hợp lệ? Nó ném lỗi dưới đây và nó không cho phép tôi chỉnh sửa lại để sửa nó.

Đây là những gì sẽ xảy ra:

$ sudo visudo

>>> /etc/sudoers: syntax error near line 28 <<<
sudo: parse error in /etc/sudoers near line 28
sudo: no valid sudoers sources found, quitting

206
2017-10-30 19:15


gốc


câu hỏi tuyệt vời xem xét trang này tạo ra lỗi đó help.ubuntu.com/community/RootSudoTimeout


Các câu trả lời:


Trên hệ thống Ubuntu hiện đại (và nhiều bản phân phối GNU / Linux khác), sửa lỗi bị hỏng sudoers tệp thực sự khá dễ dàng và không yêu cầu khởi động lại, sử dụng CD trực tiếp hoặc truy cập vật lý vào máy.

Để thực hiện điều này thông qua SSH, hãy đăng nhập vào máy và chạy lệnh pkexec visudo. Nếu bạn có quyền truy cập vật lý vào máy, SSH là không cần thiết; chỉ cần mở một cửa sổ Terminal và chạy nó pkexec chỉ huy.

Giả sử bạn (hoặc một số người dùng khác) được phép chạy các chương trình như root với PolicyKit, bạn có thể nhập mật khẩu của mình và sau đó nó sẽ chạy visudo như rootvà bạn có thể sửa /etc/sudoers.

Nếu bạn cần chỉnh sửa một trong các tệp cấu hình trong /etc/sudoers.d (mà không phổ biến trong tình huống này, nhưng có thể), sử dụng pkexec visudo -f /etc/sudoers.d/tên tệp.

Nếu bạn có tình huống liên quan nơi bạn phải thực hiện các lệnh quản trị hệ thống bổ sung làm gốc để khắc phục sự cố (cũng không phổ biến trong trường hợp này, nhưng phổ biến ở những trường hợp khác), bạn có thể bắt đầu trình bao gốc tương tác với pkexec bash. Nói chung, bất kỳ lệnh phi đồ họa nào bạn muốn chạy sudo có thể chạy với pkexec thay thế.

(Nếu có nhiều tài khoản người dùng trên hệ thống được ủy quyền để chạy các chương trình dưới dạng root với PolicyKit, sau đó đối với bất kỳ hành động nào trong số đó, bạn sẽ được yêu cầu chọn cái nào bạn muốn sử dụng, trước khi được hỏi mật khẩu của bạn.)


Nếu nó không hoạt động - ví dụ, nếu không có người dùng nào được ủy quyền để chạy các chương trình như root thông qua PolicyKit - sau đó khởi động từ đĩa CD Ubuntu sống (như CD bạn có thể dùng để cài đặt Ubuntu) và gắn hệ thống tập tin cho cài đặt hệ thống. Bạn có thể làm điều này bằng cách chạy sudo parted -l để xem phân vùng của bạn - có lẽ chỉ là một phân vùng ext4 và đó là hệ thống tệp gốc.

Giả sử hệ thống tập tin gốc của hệ thống Ubuntu đã cài đặt nằm trên / dev / sda1. Sau đó, bạn có thể gắn kết nó với sudo mount /dev/sda1 /mnt. Sau đó, bạn có thể chỉnh sửa tệp sudoers của hệ thống đã cài đặt bằng sudo nano -w /mnt/etc/sudoers. Hoặc, thậm chí tốt hơn, bạn có thể chỉnh sửa nó với

sudo visudo -f /mnt/etc/sudoers

(điều này sẽ ngăn bạn lưu một tệp sudoers với cú pháp không chính xác).


318
2017-10-30 19:45



pkexec / usr / sbin / visudo đã hoạt động trên debian 7 - marinara
Không phải họ cũng chỉ cần khởi động vào chế độ phục hồi? - Seth♦
HOLY COW! Cảm ơn rất nhiều! Đã lưu thịt xông khói của tôi. Đã thêm một tệp như được đề xuất vào thư mục etc / sudoers.d / SỬ DỤNG một trình soạn thảo văn bản quy ước (D-O-N-T__D-O__T-H-A-T !!!). Mất tất cả khả năng làm đặc quyền nâng cao, BAO GỒM, chỉnh sửa tệp vi phạm. Điều này đã giúp chỉnh sửa tệp. Mặc dù vậy, tôi phải chỉnh sửa / etc / sudoers trước, sau đó nó tìm thấy các lỗi trong tập tin khác và mở nó cho tôi. NGAY CẢM THẤY, chỉ thị trong tập tin / etc / sudoers 'inlcudedir /etc/sudoers.d' đã được nhận xét, và nó vẫn bao gồm nó. - Dennis
@Dennis Hơi khó hiểu, #include chỉ thị trong sudoers các tập tin được xử lý đặc biệt; sự lãnh đạo # không làm cho phần còn lại của dòng được hiểu là nhận xét, trong trường hợp đó. Như man sudoers nói: "Dấu thăng (‘ # ’) được sử dụng để biểu thị nhận xét (trừ khi nó là một phần của chỉ thị #include hoặc trừ khi ..." Xem thêm visudo: #includedir sudoers.d (được lưu trữ từ lzone.de/blog). - Eliah Kagan
Người dùng của tôi là sudoer nhưng tôi nhận được lỗi này: Lỗi khi thực thi lệnh với tư cách người dùng khác: Không được ủy quyền - SuB


Luôn luôn sử dụng visudo để chỉnh sửa tệp sudoers của bạn, không bao giờ chỉnh sửa trực tiếp. Nó sẽ ngăn bạn lưu nó vào đĩa trừ khi nó xác nhận.


45
2017-11-20 17:08



hindsight là 20/20 - code_monk
Nó sẽ không ngăn được thảm họa. Thật dễ dàng để phủ nhận chính mình một cách hợp lý. - Joshua
Visudo có thể được sử dụng bởi scritps? Nếu vậy, làm thế nào? - Lukas
Tôi không cài đặt Visudo. Vì vậy, tôi đã làm pimxec vim. Sau đó, nó hiển thị danh sách người dùng và yêu cầu mật khẩu. Khi tôi cung cấp mật khẩu, nó sẽ báo lỗi là "Lỗi khi thực thi lệnh với tư cách người dùng khác: Không được ủy quyền". Hãy giúp tôi - Shyamkkhadka


Gõ vào:

pkexec visudo

Sau đó thay đổi dòng cuối cùng

#includedir /etc/sudoers

Đến:

#includedir /etc/sudoers.d

Nó sẽ giải quyết vấn đề của bạn.


20
2018-02-21 18:23



Tôi đã nhận thấy rằng việc xóa hàng đầu # từ #includedir gây ra lỗi cú pháp, # là một phần của chỉ thị, ít nhất là trên Ubuntu 12.10. - SAFX
Điều đó vừa cứu tôi rất nhiều đau đầu. Cảm ơn một tấn :) - Nitroware
Tôi không cài đặt Visudo. Vì vậy, tôi đã làm pimxec vim. Sau đó, nó hiển thị danh sách người dùng và yêu cầu mật khẩu. Khi tôi cung cấp mật khẩu, nó sẽ báo lỗi là "Lỗi khi thực thi lệnh với tư cách người dùng khác: Không được ủy quyền". Hãy giúp tôi - Shyamkkhadka


nếu có ai khác như tôi không có pkexec cài đặt, hoặc không thể chạy vi, visudo, nano hoặc bất kỳ trình soạn thảo khác để thay đổi tập tin sudoers bạn có thể chắc chắn với quá trình này .. Tôi đã được lưu với điều này:

  • khởi động lại
  • giữ phím shift trong khi khởi động để có tùy chọn cho chế độ khôi phục (nhập nó)
  • nhập dòng lệnh dưới dạng root (tùy chọn thứ hai cuối cùng tại menu grub của tôi)
  • thiết bị khởi động lại cho rw và áp dụng quyền thực thi cho người dùng và chỉnh sửa tệp

    mount -n -o remount,rw /
    chmod u+x /etc/sudoers
    nano /etc/sudoers
    

sửa lỗi đó và hạnh phúc :)


10
2017-10-20 21:40



Trong khi giải pháp pkexec được gợi ý bởi @ eliah-kagan có vẻ dễ dàng hơn, thì giải pháp này phổ biến hơn. Trên máy tính của tôi nó bật ra rằng không có pkexec cài đặt và tất nhiên tôi không thể cài đặt nó bởi vì sudo apt-get cài đặt pkexec bằng cách nào đó đã không làm việc. - running.t


Không có gì sai #include sudoer.d remove #include sudoer.d sẽ không tạo ra bất kỳ sự khác biệt nào.

Nhưng hãy chắc chắn rằng bạn không có bất kỳ lỗi cú pháp nào. Tôi đã có cùng một vấn đề nhưng phải mất hàng giờ để sửa chữa và chỉ ra rằng chúng là lỗi cú pháp. Tham khảo hướng dẫn và làm cho chúng đúng.

Ví dụ Nói tên người dùng của bạn là: dolly Tôi sử dụng sau đó là sai

 dolly ALL = (ALL) ALL NO PASSWD: ALL

cú pháp chính xác là

dolly ALL = (ALL) ALL //give permission to everything, not good

hoặc là

dolly ALL=(ALL) NOPASSWD:/usr/bin/thurderbird //good, give specific permission

hi vọng điêu nay co ich


6
2017-07-02 23:15



Cách tiếp cận tốt hơn là đảm bảo bạn không có lỗi cú pháp là luôn sử dụng visudo khi chỉnh sửa các tệp này, điều này đảm bảo bạn không có lỗi cú pháp cho bạn, trước khi sửa đổi tệp. visudo không chỉ để chỉnh sửa /etc/sudoers--it cũng sẽ tạo và chỉnh sửa tệp trong /etc/sudoers.d. Nó cũng sẽ làm việc với bất kỳ trình soạn thảo văn bản nào bạn muốn. Xem trang manpage để biết chi tiết. - Eliah Kagan
Để cấp quyền cụ thể, xin lưu ý rằng điều này chỉ hữu ích cho các lệnh / ứng dụng rất đơn giản, bởi vì bất kỳ ứng dụng đủ phức tạp nào (bao gồm thunderbird, không bao giờ được chạy dưới dạng root anyway) sẽ cung cấp cho người dùng quyền truy cập hệ thống đầy đủ khi chạy dưới dạng root. Ngay cả chức năng dường như đơn giản cũng mở ra cánh cửa để truy cập root đầy đủ. Ví dụ, một người dùng có thể chạy một chương trình có thể lưu tệp vào một vị trí tùy ý vì người chủ có thể có quyền truy cập root đầy đủ (họ có thể cài đặt riêng của họ /etc/sudoershoặc nếu giới hạn cú pháp ngăn chặn điều đó, họ có thể tự cài đặt /etc/crontab). - Eliah Kagan


Nếu bạn làm hỏng sudoers tệp, bạn sẽ cần phải:

  • Khởi động lại vào chế độ khôi phục (nhấn thoát trong khi khởi động, chọn tùy chọn chế độ khôi phục trên màn hình grub)
  • Chọn tùy chọn 'Bật mạng' (nếu bạn không hệ thống tệp của bạn sẽ được gắn kết là chỉ đọc. Ai biết)
  • Chosee tùy chọn 'Drop to root shell'
  • chạy visudo, sửa tệp của bạn
  • Khởi động lại với tùy chọn grub bình thường

nguồn: - http://mario.net.au/content/recover-etcsudoers-ubuntu-1204


6
2017-12-14 10:59



Xin chào, nó có xóa các iptables, các tệp của hệ thống hiện có không? - Shyamkkhadka


chạy chế độ khôi phục rồi nhập

chown -R root: root /etc/sudoers.d
chmod u = rwx, g = rx, o = rx /etc/sudoers.d/
chmod u = r, g = r, o = /etc/sudoers.d/*

chỉ nhóm và người dùng gốc nên đã đọc privelege


3
2017-11-20 17:11