Tôi đã vô tình xóa tệp sudoers trên Mac OS X; Có cách nào để phục hồi nó?


9

Tôi đã vô tình xóa sudoerstệp trên Mac OS X; Có cách nào để phục hồi nó?
Và một khi bạn đã phục hồi nó, làm thế nào để bạn đặt nó ở chế độ 0440?

Câu trả lời:


8

Nếu tôi hiểu chính xác vấn đề của bạn, thì hiện tại bạn không có sudoers và bạn đang cố gắng làm sudo và nó không hoạt động. Trong trường hợp này, để sudo hoạt động, bạn có thể làm như sau:

  1. Tạo tập tin sudoers trong thư mục nhà của bạn. Bạn có thể tìm thấy nội dung mặc định ở đây sudoers
  2. Mở thư mục của Wikipedia / etcvv trong Finder (Phần mềm Go - -> Chuyển đến Thư mục Sắp xếp).
  3. Bây giờ sao chép tập tin sudoers từ thư mục nhà sang thư mục / etc thông qua Finder.
  4. Nhắc sẽ đến hỏi mật khẩu.
  5. Nhập mật khẩu chính xác và bạn đã hoàn tất.

Để kiểm tra sudo đang chạy tốt cd /etcsudo vim sudoers. Bạn có thể xem tập tin sudoers thông qua trình soạn thảo vim. Bất kỳ hoạt động đọc / ghi trong / etc sẽ yêu cầu lệnh sudo.

Tôi biết điều này hơi ngạc nhiên khi ngay cả khi không có sudoers, thông qua UI chúng ta có thể thực hiện các thao tác trong / etc. Nhưng nó làm việc cho tôi :)


1
Thật là kỳ lạ khi GUI tương đương với những gì không thể từ dòng lệnh hoạt động. Tôi đoán Apple kiểm tra quy trình làm việc GUI kỹ lưỡng hơn dòng lệnh. Cảm ơn trời, bài này đã cứu tôi.
Sridhar Sarnobat

Thật tốt khi biết rằng nó đã giúp bạn.
Tanmay

6

Tôi giả sử bạn đang cố chạy một sudolệnh và nó sẽ báo cho bạn một lỗi /etc/sudoerskhông có quyền chính xác?

Nếu trước đây bạn đã cấp Admintrạng thái tài khoản của mình , bạn sẽ có thể sửa các quyền thông qua GUI. Mở thư mục của Cameron / etcvv trong Finder (trong đó Đi vào -> Chuyển đến Thư mục Khác, sau đó mở các sudoersthuộc tính tệp. Nhấp vào khóa. Cấp cho adminnhóm read/write, systemngười dùng read-only, wheelnhóm read-onlyeveryonenhóm no access. Các quyền bây giờ phải chính xác.

Nếu bạn không đặt mình vào adminnhóm, bạn sẽ cần khởi động lại OSX vào chế độ người dùng và thực hiện lệnh chmod 0440 /etc/sudoers.


6

Cho phép người dùng root sử dụng tùy chọn hệ thống, sau đó tạo / etc / sudoers trong khi đăng nhập với tư cách người dùng root bằng

touch /etc/sudoers; chmod 440 /etc/sudoers

Lưu ý: Vì lệnh này được chạy dưới quyền root trong trường hợp này và id nhóm /etclà 0, nên theo mặc định, nó sẽ được sở hữu bởi người dùng và nhóm chính xác sau khi tạo lại, nhưng nếu vì lý do nào đó, nó không chạy,

chown root:wheel /etc/sudoers

Sau khi bạn đã tạo, /etc/sudoerssử dụng visudo để chèn mã này vào nó:

# sudoers file.

#
# This file MUST be edited with the 'visudo' command as root.
# Failure to use 'visudo' may result in syntax or file permission errors
# that prevent sudo from running.
#
# See the sudoers man page for the details on how to write a sudoers file.
#

# Host alias specification

# User alias specification

# Cmnd alias specification

# Defaults specification
Defaults    env_reset
Defaults    env_keep += "BLOCKSIZE"
Defaults    env_keep += "COLORFGBG COLORTERM"
Defaults    env_keep += "__CF_USER_TEXT_ENCODING"
Defaults    env_keep += "CHARSET LANG LANGUAGE LC_ALL LC_COLLATE LC_CTYPE"
Defaults    env_keep += "LC_MESSAGES LC_MONETARY LC_NUMERIC LC_TIME"
Defaults    env_keep += "LINES COLUMNS"
Defaults    env_keep += "LSCOLORS"
Defaults    env_keep += "SSH_AUTH_SOCK"
Defaults    env_keep += "TZ"
Defaults    env_keep += "DISPLAY XAUTHORIZATION XAUTHORITY"
Defaults    env_keep += "EDITOR VISUAL"

# Runas alias specification

# User privilege specification
root    ALL=(ALL) ALL
%admin  ALL=(ALL) ALL

# Uncomment to allow people in group wheel to run all commands
# %wheel    ALL=(ALL) ALL

# Same thing without a password
# %wheel    ALL=(ALL) NOPASSWD: ALL

# Samples
# %users  ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
# %users  localhost=/sbin/shutdown -h now
ALL ALL=(ALL)                   NOPASSWD:/opt/dplat/bin/Revision/CMUpdatePackage/Installer.app/Contents/MacOS/I  nstaller
ALL ALL=(ALL)     NOPASSWD:/opt/dplat/bin/UpdatePackageInstaller.app/Contents/MacOS/UpdatePackage    Installer

Nếu bạn không phải là quản trị viên, bạn có thể khởi động hệ thống sang chế độ một người dùng thay thế (điều này có thể được thực hiện bằng cách tắt nguồn thiết bị và giữ lệnh + s khi khởi động) và chạy:

mount -uw /

và bạn sẽ ở trong thiết bị đầu cuối với các đặc quyền gốc và bạn sẽ có thể chạy các lệnh trên để thiết lập /etc/sudoers


3

Tôi đã tạo một tệp / tmp / sudoers với nội dung trong câu trả lời của John Militer và chạy một biến thể của lệnh tmm1.

osascript -e 'do shell script "cat /tmp/sudoers > /etc/sudoers; chown root:wheel /etc/sudoers" with administrator privileges'

Đẹp!!!


2

Các câu trả lời ở trên bao gồm các nội dung mặc định của tệp, cách di chuyển nó vào vị trí với Finder và thay đổi quyền của nó. Tuy nhiên, sudo sẽ khiếu nại trừ khi chủ sở hữu tệp sudoers là root. Cách duy nhất để thay đổi chủ sở hữu mà không có sudo là thông qua lệnh này:

osascript -e 'do shell script "chown root:wheel /etc/sudoers" with administrator privileges'


1
Điều này dường như trả lời phần lớn "làm thế nào để bạn đặt nó ở chế độ 0440", phần này đã được xử lý, nhưng không giải quyết khía cạnh khôi phục. Vì OP thiếu tệp / etc / sudoers để bắt đầu, làm thế nào điều này giúp họ?
Jeff Schaller

Bạn có thể tạo tệp với bất kỳ trình soạn thảo nào và di chuyển nó vào vị trí với Finder. Phần khó là thay đổi chủ sở hữu thành root, điều này là không thể thông qua bất kỳ phương pháp nào khác.
tmm1
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.