Câu hỏi chính:
Có cách nào để tôi có thể chạy 'hoàn toàn' một trong các tập lệnh của mình khi máy tính để bàn của Ubuntu xuất hiện bất kể là root, quản trị viên, người dùng máy tính để bàn hoặc người dùng không có quyền đăng nhập?
Kịch bản làm gì?
Kịch bản gắn kết một phân vùng, tìm kiếm một tệp trong phân vùng đó và cuối cùng trên cơ sở tệp đó, một quyết định sao chép phân vùng sang phân vùng khác được đưa ra. Việc sao chép đó được thực hiện thông qua
dd if=/dev/sda2 of=/dev/sda5
Khi nào kịch bản chạy tốt?
Script chạy trơn tru khi tôi chạy nó từ terminal
sudo ./my_copying_script
Lệnh này hỏi tôi mật khẩu của người dùng hiện đang đăng nhập. Tôi nhập mật khẩu và tập lệnh bắt đầu hoạt động.
Khi nào kịch bản KHÔNG chạy tốt?
Tôi muốn chạy kịch bản khi khởi động. Tôi đặt chương trình khởi động bằng cách sử dụng tiện ích Ứng dụng khởi động của Ubuntu. Script chạy khi khởi động nhưng thoát tại lệnh dd giữ lại lỗi sau:
dd: opening '/dev/sda2': Permission denied
Theo đề nghị của edk , tôi đặt chủ sở hữu my_copying_script làm gốc và đặt SUID. Bây giờ, quyền của my_copying_script là (-rwsr-sr-x). Quan điểm của edk là một khi tôi đặt suid, chương trình khởi động sẽ chạy với sự cho phép của chủ sở hữu. Tôi đã làm điều đó nhưng lỗi từ chối / dev / sda2 đã xuất hiện.
Sau đó tôi đã thêm tiền tố vào dd với sudo như được đề cập dưới đây
sudo dd if=/dev/sda2 of=/dev/sda5
nhưng điều này trả về lỗi sau:
sudo: no tty present and no askpass program specified