Câu hỏi Làm thế nào để chạy lệnh sudo không có mật khẩu?


Làm thế nào để ubuntu người dùng trên hình ảnh AWS cho Ubuntu Server 12.04 không có mật khẩu sudo cho tất cả các lệnh khi không có cấu hình cho nó trong /etc/sudoers?

Tôi đang sử dụng máy chủ Ubuntu 12.04 trên Amazon. Tôi muốn thêm một người dùng mới có hành vi tương tự như người dùng Ubuntu mặc định. Cụ thể là tôi không muốn mật khẩu sudo cho người dùng mới này.

Tôi đã thêm người dùng mới và đã chỉnh sửa /etc/sudoers (bằng cách sử dụng visudo của khóa học). Từ đọc tập tin đó nó có vẻ như mặc định ubuntu người dùng đã nhận được mật khẩu không có mật khẩu sudo từ là một thành viên của admin nhóm. Vì vậy, tôi đã thêm người dùng mới của mình vào đó. Mà không làm việc. Sau đó, tôi đã thử thêm NOPASSWD chỉ thị cho sudoers. Mà cũng không hoạt động.

Dù sao, bây giờ tôi chỉ tò mò thôi. Làm thế nào để ubuntu người dùng có đặc quyền không có mật khẩu nếu họ không được xác định trong /etc/sudoers. Cơ chế cho phép điều này là gì?


199
2017-09-23 09:30


gốc


Liên quan: Thực hiện sudo mà không cần mật khẩu? - Eliah Kagan


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


Được rồi, tôi đã phát hiện ra câu trả lời vì vậy cũng có thể đặt nó ở đây để hoàn thành. Vào cuối /etc/sudoers có những gì tôi nghĩ chỉ là một bình luận:

#includedir /etc/sudoers.d

Tuy nhiên điều này thực sự bao gồm các nội dung của thư mục đó. Bên trong là tập tin /etc/sudoers.d/90-cloudimg-ubuntu. Trong đó có nội dung dự kiến

# ubuntu user is default user in cloud-images.
# It needs passwordless sudo functionality.
ubuntu ALL=(ALL) NOPASSWD:ALL

Vì vậy, đó là nơi cấu hình sudo cho người dùng mặc định ubuntu sống.

Bạn nên chỉnh sửa tệp này bằng visudo. Lệnh sau sẽ cho phép bạn chỉnh sửa tệp chính xác bằng visudo.

sudo visudo -f /etc/sudoers.d/90-cloudimg-ubuntu

Và thêm một dòng như:

aychedee ALL=(ALL) NOPASSWD:ALL

Cuối cùng.


292
2017-09-23 10:27



Tôi khá chắc chắn tôi đã phải khởi động lại hoàn toàn. - aychedee
quy tắc sudo mới sẽ được sử dụng cho mọi người dùng đã đăng nhập mới - vì vậy bạn cần đăng nhập lại ít nhất - bluszcz
'sudo service sudo restart' works :) - Laice
Trong các phiên bản sau (ví dụ 14.04), tệp được bao gồm là /etc/sudoers.d/90-cloud-init-users (để chỉnh sửa .. sudo visudo -f /etc/sudoers.d/90-cloud-init-users). Mặc dù nó sẽ sạch hơn để tạo tệp bổ sung hơn chỉnh sửa tệp đã tạo. Lưu ý rằng các tệp có chứa . hoặc kết thúc bằng ~sẽ không phải được bao gồm. - Molomby
@ Phil_1984_ Rất có thể, nó đã được thêm vào như là một bình luận để cho phép tương thích với các phiên bản khác (tiêu chuẩn?) Của sudo, mà không cho phép bao gồm, nhưng sẽ không bị vấp bởi một bình luận lạ. (Tiêu chuẩn là khó! ;-) - jpaugh


Tôi thấy rằng điều thuận lợi nhất để làm, để dễ dàng tái tạo hành vi này trên nhiều máy chủ, như sau:

sudo visudo

Thay đổi dòng này:

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

vào dòng này:

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

Và di chuyển nó Dưới đường thẳng này:

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

bây giờ bạn sẽ có điều này:

# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#

Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

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

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

sau đó cho mọi người dùng cần quyền truy cập sudo VỚI mật khẩu:

sudo adduser <user> sudo

và cho mọi người dùng cần quyền truy cập sudo KHÔNG CÓ mật khẩu:

sudo adduser <user> admin

và cuối cùng, hãy chạy điều này:

sudo service sudo restart

Và đó là nó!

Chỉnh sửa: Bạn có thể phải thêm nhóm quản trị vì tôi không nghĩ rằng nhóm này tồn tại theo mặc định.

sudo groupadd admin

Bạn cũng có thể thêm AWS mặc định ubuntu người dùng đến admin nhóm thông qua lệnh này:

sudo usermod ubuntu -g admin

77
2018-04-03 21:45



Lưu ý về bản thân: Đó là quy ước để di chuyển các quyền hạn chế ít hơn trong ngăn xếp. Nhưng không làm nó sẽ không ảnh hưởng đến chức năng. - poweratom
Như jiminikiz giải thích, tôi phải đặt %quản trị viên sau % sudo trên Ubuntu GNOME 16.04 LTS của tôi. Ngoài ra, id nhóm quản trị viên chính xác không quản trị viên nhưng adm trên Ubuntu của tôi. Không cần khởi động lại. - hata


Câu trả lời ngắn gọn mà không sử dụng bất kỳ trình soạn thảo nào (được thử nghiệm trên bash, rất nguy hiểm khi thực thi trên các máy chủ từ xa).

Cấu hình sudo để làm việc mà không cần mật khẩu cho người dùng hiện tại:

echo "$USER ALL=(ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers

Kiểm tra chỉnh sửa với:

sudo visudo -c

Xác minh xem bạn có thể sử dụng sudo không có mật khẩu không:

sudo cat /etc/sudoers | grep "$USER"

... hoặc chỉ cần thử với:

sudo <bất cứ điều gì>

-1
2017-08-13 22:25



Đây là lời khuyên khá nguy hiểm ... sao chép và dán điều này sai và bạn sẽ khóa mình ra khỏi máy chủ của riêng bạn. Do đó lời khuyên để sử dụng visudo. Nó kiểm tra cú pháp chính xác trước khi lưu vào đĩa. Vì vậy, đối với bất cứ ai muốn sử dụng điều này. Đừng làm điều đó trên một máy chủ từ xa mà bạn quan tâm. Bạn có thể muốn bao gồm một cảnh báo về điều đó trong câu trả lời của bạn. - aychedee
Không sử dụng visudo là kinh khủng ý kiến. Tin tôi đi, tôi biết. - Bailey S
IMHO, sao chép-dán an toàn hơn so với chỉnh sửa thủ công. Một đơn giản hóa nhỏ: echo "$USER ALL=(ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers - theartofrain
@theartofrain - Thông thường, tôi đồng ý, nhưng visudo là đặc biệt tốt đẹp về việc không cho phép bạn phá vỡ các tập tin sudoers, do đó không khóa bạn ra khỏi máy tính của bạn (hoặc ít nhất là sudo). - Jon V
@JonV Bạn có thể mất quyền quản trị qua visudo quá, nhưng thường không phải ngẫu nhiên, bởi vì visudo chỉ lưu các thay đổi được tạo đúng theo ngữ pháp cho các tệp sudoers. Phần lớn sai lầm là cú pháp sai, vì vậy chúng không gây hại với visudo. Nếu /etc/sudoers hoặc một tập tin trong /etc/sudoers.d  Là bị hình thành, sudo từ chối nâng cao đặc quyền cho bất kỳ ai như một biện pháp bảo mật, đó là lý do tại sao không sử dụng visudo nguy hiểm. (Tuy nhiên đôi khi pkexec có thể sửa nó mà không cần khởi động lại.) - Eliah Kagan