2011-11-18 43 views
9

Tôi có vài kịch bản lệnh bash được thêm vào cron job với thời gian xác định, nhưng nó cần được thực thi như người dùng root. Tôi đang cố gắng để chạy những tập lệnh đó tức là, công việc crob nhưng nó cần sự cho phép người dùng root, vì tôi đang chạy công việc này trong cá thể ubuntu ec2 nơi người dùng root bị hạn chế. Điều gì sẽ là công việc xung quanh để chạy những tập lệnh như người dùng root.Cách chạy cron job với tư cách người dùng thay vì người dùng root

Cảm ơn

+1

tôi không chắc chắn để hiểu câu hỏi. Có lẽ lệnh 'super' hoặc' sudo' có thể giúp bạn? –

+0

Điều này thuộc về ServerFault, không phải StackOverflow. – Amy

+0

Bạn đã đủ lâu để biết điều này không thuộc về đây. Nếu bạn muốn biết cách cron một tập lệnh bash trên linux dưới một tài khoản người dùng khác, hãy thử [unix.se]. Nếu EC2 đóng vai trò quan trọng trong việc này, hãy thử [sf]. – Will

Trả lời

7

Có một số khả năng:

1) thêm tập lệnh vào crontab gốc. Để làm điều này bạn phải làm sudo su - hoặc su - để trở thành root, sau đó thêm các công việc cron bằng cách sử dụng crontab -e

2) cho phép người dùng không phải root để sử dụng một crontab, và thêm các công việc định kỳ để crontab của người dùng đó, bằng cách sử dụng crontab -e đặt cờ set-uid của kịch bản của bạn và thay đổi sở hữu đối với rễ, vì vậy nó sẽ thực hiện như là người chủ chmod +s scriptname; chown root scriptname

10

Bạn có thể làm cho một kịch bản thực hiện như là người chủ bằng cách sử dụng các setuid flag, mà làm cho một kịch bản chạy như chủ nhân của nó:

chmod +s yourscript 
chown root yourscript 

Chỉ cần chắc yourscript chạy bất cứ lệnh bạn muốn chạy như là người chủ .

Lưu ý rằng với phương pháp này, bất kỳ người dùng nào cũng có thể chạy tập lệnh.

+0

Nhiều nền tảng sẽ bỏ qua 'setuid' trên tệp tập lệnh vì lý do bảo mật. – tripleee

2

Basile phù hợp với nhận xét của anh ấy. Nếu bạn muốn chạy một cái gì đó như root trong Ubuntu, hãy sử dụng sudo.

Nếu bạn muốn thực hiện một kịch bản (hoặc một số lệnh) tự động với quyền superuser mà không cần phải gõ vào một mật khẩu, chạy

sudo visudo 

để chỉnh sửa các tập tin sudoers. Để làm sudo dừng yêu cầu cho một mật khẩu cho một kịch bản cụ thể (hoặc lệnh) chèn

username ALL = NOPASSWD: /path/to/script 

nơi username là tên của người sử dụng sudo gọi.

Các vấn đề liên quan