Làm thế nào để viết một kịch bản sẽ chạy các lệnh sau su, mà không cần sử dụng -c


7

Tôi đang cố gắng tự động hóa một hoạt động tiêu chuẩn trên một hệ thống mà tôi không có quyền truy cập root. Quản trị viên của các hệ thống đã cho tôi quyền chạy sudo su - 'user'lệnh và chỉ lệnh đó. Tôi không thể thêm một -cđối số hoặc sudosẽ thất bại.

Kịch bản của tôi sẽ phải bắt đầu với quyền của tôi và giữa chừng thay đổi để chạy với quyền của người dùng. Tôi đang cố gắng tìm hiểu xem có cách nào để tạo một kịch bản làm điều này cho tôi trong một lệnh không?

Trước khi có ai hỏi, cố gắng để visudomở rộng quyền của tôi là khá khó khăn. Mặc dù tôi có thể susử dụng mật khẩu mà tôi không biết mật khẩu của người dùng, nhưng tôi không muốn thay đổi mật khẩu và thực sự nên mã hóa mật khẩu trong tập lệnh của mình, vì vậy, thường xuyên susudokhông thực sự là một lựa chọn. Có vẻ như phải có một số cách để làm việc với lệnh tôi được phép sử dụng?

Câu trả lời:


8

Đặt các lệnh mà bạn muốn chạy như người dùng khác vào một tệp riêng biệt user2commands, sau đó thực hiện

sudo su - người dùng <user2commands

Nếu bạn không muốn có một tệp riêng, hãy xem xét:

sudo su - người dùng << Lệnh EOF
     được chạy như người dùng khác
        ︙
EOF

2
điều này có hành vi kỳ lạ nếu các lệnh cần tương tác với đầu vào tiêu chuẩn. Ví dụ: nếu bạn sử dụng catđiều này sẽ không hoạt động (ví dụ: thử echo cat | sudo su - user)
pqnet

Cách thoát <ký tự khi chúng ta đặt toàn bộ lệnh sudo trong một đối số, bên trong tệp xml. Tôi đang sử dụng phing, vì vậy tôi muốn làm một cái gì đó như thế này - <exec command="sudo su auto_deploy << EOF echo 'Logged in user' whoami EOF" dir="${dir.scratchpad}" />. Các <<trước EOF là ném xác nhận lỗi XML.
Sandeepan Nath

1

Từ kinh nghiệm cá nhân của tôi, điều này không bao giờ làm việc. Tìm ra cách giải quyết sẽ tạo ra nhiều công việc hơn và nó có thể không hoạt động đúng nếu bạn không có quyền root.

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.