Các lệnh SSH không thành công mặc dù có quyền TẤT CẢ


1

Thiết lập máy chủ rails (Ubuntu 12.10) trên DigitalOcean và tôi muốn một người dùng không phải root chạy một số lệnh triển khai với quyền truy cập root bằng cách thêm tiền tố sudovào lệnh và nhập mật khẩu. Tôi nghĩ rằng tôi có thể chỉnh sửa visudonhư dưới đây, nhưng quyền bị từ chối. Tui bỏ lỡ điều gì vậy?

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

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

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

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

Tôi đã biến nonrootuser thành thành viên của deployersnhóm trong trường hợp tôi có nhiều tác nhân triển khai trong tương lai. Nhóm đó không được gọi ra bằng visudo, nhưng tôi không biết nó có liên quan hay không, vì vậy tôi đang đề cập đến nó ở đây.

Các lệnh như thế này thất bại từ hộp dev của tôi (không phải máy chủ.) Tôi hy vọng điều này sẽ nối các nội dung của khóa chung của hộp dev của tôi vào tệp ủy quyền của máy chủ trên máy chủ sau khi nhắc mật khẩu nonrootuser. Kết quả thực tế là quyền bị từ chối .

cat ~/.ssh/id_rsa.pub | ssh -p 12345 nonrootuser@123.123.123.123 'cat >> ~/.ssh/authorized_keys'

Tôi đã cố gắng khởi động lại hoàn toàn hộp và vẫn không thay đổi. Tôi cũng đã thử sudo cat...trong lệnh đường ống của mình mà không có kết quả.


Ví dụ lệnh của bạn không có sudobất cứ nơi nào ở trong đó ...
grawity

Câu hỏi cập nhật cần lưu ý là tôi cũng đã thử sudo cat.... Tôi bằng cách nào đó có thể giải quyết điều này bằng cách xóa người dùng và tạo lại. Bằng cách nào đó, điều đó đã làm việc.
David Fox

Câu trả lời:


1
  1. /etc/sudoerskhông cấp bất kỳ đặc quyền trực tiếp cho tài khoản của người dùng. Nó chỉ cho phép người dùng chạy các lệnh khác nhau thông qua sudocông cụ (chạy chúng dưới tài khoản root). Do đó sudo cat /etc/shadowsẽ làm việc, nhưng cat /etc/shadowvẫn không.

  2. Các đường ống và chuyển hướng được xử lý bởi trình bao trước khi mỗi lệnh được chạy ; nghĩa là, nếu bạn chạy sudo cat > somefile, trình bao của bạn (chạy trong tài khoản của chính bạn) trước tiên sẽ cố mở somefileđể viết; và - nếu nó thành công - chỉ sau đó chạy sudo catvới tệp được đính kèm với thiết bị xuất chuẩn của nó. Nói cách khác, sudokhông áp dụng cho các chuyển hướng trừ khi bạn bằng cách nào đó vượt qua chúng như một phần của lệnh, ví dụ sudo sh -c "cat > somefile".


Đây là một lời giải thích tuyệt vời.
David Fox

1

Để người dùng của bạn có quyền truy cập sudo, theo cấu hình sudo của bạn mà bạn đã đăng, họ cần phải là thành viên của quản trị viên hoặc nhóm sudo. Nếu bạn muốn cấp nó cho các nhà triển khai nhóm, sau đó sao chép cấu hình nhóm sudo sang một dòng mới và thay đổi nó thành các nhà triển khai.

%deployers   ALL=(ALL:ALL) ALL

Điều này không trực tiếp giải quyết, nhưng khi tôi userdelchỉnh sửa người dùng và tạo lại nó, bằng cách nào đó, nó đã tự sửa. Ngoài ra, thêm một lần nữa vào nhóm người triển khai và sử dụng cú pháp này (không có người dùng rõ ràng) đã hoạt động. +1
David Fox
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.