2010-08-06 31 views
6

Tôi muốn thêm một dòng trong crontab (trên máy cục bộ của tôi) sẽ chạy sau mỗi năm phút. Vấn đề của tôi là lệnh mà tôi sẽ sử dụng yêu cầu sudo:Làm thế nào để chạy lệnh không có sudo?

sudo indexer --config /usr/local/etc/sphinx.conf --all --rotate 

Có cách nào tôi có thể chạy lệnh mà không cần sử dụng sudo và không nhắc mật khẩu?

Cảm ơn!

+3

thuộc về superuser.com – Philipp

Trả lời

3

Đặt nó trong crontab của rễ

sudo crontab -e 

Ở đó bạn có thể đặt

indexer --config /usr/local/etc/sphinx.conf --all --rotate 

Tất cả các lệnh trong crontab này sẽ được thực hiện như là người chủ. Nếu bạn chỉ cần du crontab -e làm người dùng hiện tại của mình, họ sẽ được thực thi theo quyền người dùng của bạn.

+0

điều này dường như giải quyết được sự cố. Nhưng tôi vẫn muốn biết làm thế nào một số lệnh có thể chạy mà không có từ sudo trong chúng .. Trường hợp có thể là: sudo apt-get install Làm thế nào tôi có thể làm apt-get install ?? Thêm bản thân mình vào tệp sudoers? Cảm ơn! – r2b2

+3

@ r2b2: Bạn không thể, đó là vấn đề bảo mật cơ bản. Để thực hiện các lệnh dưới dạng 'root', bạn cần chứng minh rằng bạn được phép làm như vậy. 'sudo' sẽ cho phép bạn thực hiện các lệnh dưới dạng' root' (thường là sau khi nhắc bạn nhập mật khẩu) * bởi vì bạn đang ở trong tệp 'sudoers' *. Một cách khác để thực hiện một lệnh là 'root' là với lệnh' su', lệnh này sẽ nhắc bạn nhập mật khẩu 'root'. Các lệnh trong crontab của 'root' được thực thi dưới dạng' root' vì 'root' phải viết chúng. – Gilles

0

chạy dưới dạng gốc? hoặc người dùng nhân sư? cố gắng tìm ra người dùng mà bạn cần nó để được chạy như và thêm nó vào mà người dùng cron

1

của nó cực kỳ nguy hiểm để đưa các ứng dụng trong crontab gốc trừ khi hộp được bảo vệ tốt từ các hacker. Nếu tình cờ ai đó thay thế các tệp nhị phân (kể cả thư viện), bạn đã biến mất!

Một cách tốt hơn là nên chown tất cả các tập tin nhị phân truy cập để người dùng không có đặc quyền và chạy các công việc như là người dùng không có đặc quyền.

Bất kỳ của các tập tin nhị phân sử dụng các ứng dụng không nên ghi được bởi bất kỳ ai trừ rễ.

+0

@Nilesh: huh? bất kỳ hệ thống unix nào có các lệnh trong hệ thống crontab, được thực hiện bởi 'root'. Không có nguy hiểm cụ thể trong việc làm như vậy. Điều gì sẽ nguy hiểm là thực thi một chương trình có tệp nhị phân (hoặc thư viện được tải) có thể ghi bởi người dùng khác, bởi vì người dùng đó sau đó có thể chạy mã tùy ý dưới dạng 'root' bằng cách ghi đè tệp. Điều đó vẫn chỉ dễ bị tổn thương đối với người dùng địa phương. – Gilles

+0

@Gilles: đúng. Tôi nên đã nói nhị phân thay vì nhị phân :) Chỉnh sửa. – Nilesh

+0

@Nilesh: Tôi nghĩ rằng vấn đề này rõ ràng trong cả hai đầu óc của chúng tôi nhưng không phải trong những gì bạn đã viết, vì vậy hãy để tôi đề xuất một số thay đổi. Đầu tiên, phần "bảo mật khỏi tin tặc" không thực sự có liên quan: điểm chính là gốc không nên chạy (thông qua cron hay cách khác) một ứng dụng có thể được ghi đè bởi người dùng khác. Thứ hai, trên thực tế nó không chỉ là các tập tin nhị phân và thư viện, nó là bất cứ điều gì sẽ được thực hiện (bao gồm cả mã nhị phân được tải từ các thư viện, nhưng cũng tất cả các cách của kịch bản). – Gilles

0

Bạn có thể định cấu hình sudo không hỏi mật khẩu. Đọc sudoers người đàn ông để làm thế nào để làm điều đó. Tìm kiếm chuỗi NOPASSWD.

2

Chỉ cần thêm lệnh của bạn vào danh sách tập tin sudoer bằng cách sử dụng visudo cmd (cmd này đòi hỏi đặc quyền root) như sau:

<YOUR_USER_NAME> ALL = NOPASSWD:<ABSOLUTE-PATH-TO-CMD> 

Hãy chăm sóc của ABSOLUTE-path-to-CMD, Nó có thể trở thành một lỗ hổng bảo mật.

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