Su là root và chạy lệnh trong một dòng


8

Tôi cần su là root và chạy một lệnh dưới dạng một dòng. Điều này là để sử dụng trong một kịch bản python. Những gì tôi đang tìm kiếm là:

$ su root [some-magic] sh /home/jay/script-that-needs-executing-as-root.sh
<script output>

Đây là trên một máy chủ Ubuntu-ish ub Ubuntu. Tài khoản này sẽ được chạy không có mật khẩu, nhưng đã được thiết lập nên về cơ bản mọi thứ đều không thể truy cập được, ngoài tập lệnh python chỉ đọc và trong ~ / .profile, ở cuối là

cd ~/py/main
python3 start.py
logout

Vì vậy, họ không có quyền truy cập thực sự vào máy chủ. Bên trong tập lệnh python tôi đã có su làm việc, vì vậy nếu cần, người dùng có thể nhập shellasrootvào tập lệnh python, nhập mật khẩu gốc và chạy các lệnh, nhưng tôi đang tìm cách để làm điều này theo chương trình.


TL; DR - Trên tài khoản không có quyền riêng tư sudo, tôi cần chạy tập lệnh shell, với quyền root, trong một dòng.


Nếu bạn có một tài khoản root đang hoạt động và người dùng có quyền truy cập vào mật khẩu root, tại sao không chỉ cấp cho họ sudoquyền truy cập? Họ đã có sức mạnh để phá vỡ bất cứ thứ gì họ có thể phá vỡ. Bạn cũng có thể cung cấp cho họ quyền truy cập sudo để chạy tập lệnh của bạn. Đó sẽ là một cách giải quyết tốt?
terdon

Về cơ bản nhiều người sử dụng tài khoản, nhưng chỉ một số người cần quyền truy cập root trong tập lệnh python và do đó tôi không muốn mở một lỗ hổng bảo mật nơi tập lệnh có quyền truy cập root bằng cách nhập mật khẩu chung (mà mọi người đều biết) nếu điều đó hợp lý . Biết tôi có lẽ không
Jay Williams

thegeekdiary.com/what-is-suid-sgid-and-sticky-bit xem xét sử dụng bit SUID trên tập lệnh của bạn; nếu chỉ một phần của tập lệnh yêu cầu quyền root thì hãy xem xét trích phần đó ra thành tập lệnh thứ hai. tạo một id nhóm mới đặc biệt để thực thi tập lệnh và chỉ có những người dùng mới có thể thực thi nó trong nhóm. Kịch bản cần đặc quyền root là cái duy nhất nên được sở hữu bởi root với bộ suid. Điều này sẽ ngăn không bao giờ phải đưa ra mật khẩu gốc.
ron

Câu trả lời:


16

Bạn có thể sử dụng -ctùy chọn suđể truyền một lệnh duy nhất.

su root -c 'sh /home/jay/script-that-needs-executing-as-root.sh'

1
Hoàn hảo! Cám ơn rất nhiều. Sẽ upvote nhưng cần nhiều đại diện hơn cho điều đó :)
Jay Williams
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.