Tôi có khối mã trình bao trong tệp Org. Và có lệnh "sudo" trong đó. Vì vậy, tôi nên được yêu cầu nhập mật khẩu. Nhưng khi tôi đánh giá nó, nó chỉ trả về lỗi cho lệnh "sudo". Có cách nào để làm cho loại đánh giá tương tác không?Làm cách nào để nhập mật khẩu khi đánh giá khối mã trong chế độ org Emacs?
Trả lời
Có, có nghĩa là, bằng cách thêm thích hợp header arguments vào dòng #+BEGIN_SRC
:
#+BEGIN_SRC sh :dir /sudo::
apt-get update
#+END_SRC
Nguồn: Running a sudo in a #+begin_src sh fails to get tty and askpass trên mailing list emacs-orgmode.
Giải thích: Các :dir
luận
xác định thư mục mặc định trong khi thực hiện khối mã. Nếu nó vắng mặt, thì thư mục kết hợp với bộ đệm hiện tại được sử dụng.
Bằng cách vượt qua /sudo::
như một giá trị cho :dir
chúng tôi đang tận dụng TRAMP cú pháp để truy cập các tập tin hoặc thư mục với quyền superuser. Lưu ý rằng trong ví dụ trên, chúng tôi không chỉ định thư mục để sử dụng sau ::
. Trong trường hợp này, /root
sẽ được sử dụng làm mặc định. Vì vậy, về cơ bản, những gì chúng tôi đang nói đến Org Babel là "Truy cập /root
làm thư mục gốc và sử dụng vị trí đó làm thư mục mặc định khi thực thi mã này".
Bạn có thể chỉ định một thư mục khác nhau để sử dụng bằng cách thay đổi /sudo::
để
/sudo::/path/to/dir
EDIT
Nếu bạn cần một số lệnh trong khối mã để chạy mà không đặc quyền superuser, bạn có thể làm như vậy bằng cách đặt
sudo -u <username>
trước mặt chúng (thay thế <username>
bằng tên người dùng của người dùng thông thường). Vì mục đích minh họa, giả sử tên người dùng của bạn là enchanter
và bạn muốn bất kỳ lệnh nào trong khối mã của mình không yêu cầu đặc quyền superuser sẽ được chạy dưới dạng người dùng của riêng bạn. Trong trường hợp này, bạn sẽ phải thêm tiền tố mỗi một trong các lệnh với
sudo -u enchanter
Bạn có thể kiểm tra các công trình này sử dụng whoami
(mà in tên của người sử dụng đó là hiện "hoạt động"). Thêm
#+BEGIN_SRC sh :dir /sudo::
whoami
sudo -u enchanter whoami
whoami
#+END_SRC
vào tệp org-mode
và đánh giá nó.Kết quả sẽ là:
#+RESULTS:
| root |
| enchanter |
| root |
Tín
- This answer trên AskUbuntu
- This answer về superuser
Tôi chắc chắn có những bài viết khác trên StackExchange/Các Internet giải quyết vấn đề chạy các lệnh như một người dùng khác, nhưng tôi đã ngừng tìm kiếm sau khi tôi đã tìm thấy những ...
Câu trả lời từ @itsjeyd là tốt khi bạn có hầu hết các lệnh để chạy dưới dạng SUDO.
Nhưng khi bạn chỉ có một lệnh nhỏ để chạy dưới dạng SUDO, bạn phải mã rất nhiều sudo -u <username>
và bạn phải chuyển tên người dùng thành biến nếu bạn muốn người dùng đó có thể chạy khối đó.
Đối với trường hợp đó, tôi có một giải pháp để sử dụng echo <password> | sudo -S <your command>
Dưới đây là ví dụ:
#+BEGIN_SRC sh :var PASSWORD=(read-passwd "Sudo Password: ")
# some normal commands here and there
# run sudo
echo ${PASSWORD} | sudo -S <your command>
# more normal commands
#+END_SRC
IMHO đây thực sự là một ý tưởng tồi. Bằng cách này, bạn đang hiển thị root' mật khẩu trong danh sách quá trình và bất kỳ người dùng/ứng dụng trên máy tính của bạn có thể nhận được nó. – Kepi
- 1. Đánh dấu xuất khẩu chế độ org của Emacs
- 2. Làm thế nào để tránh đoạn mới sau khi khối mã trong chế độ Org?
- 3. Thực thi khối mã Java trong chế độ org
- 4. Emacs: nhập CSV vào chế độ org
- 5. Làm thế nào để đánh giá dòng mã-by-line trong chế độ org?
- 6. Làm cho mã nguồn từ một khối mã đầu vào thành một khối mã khác trong chế độ org Emacs
- 7. Mật khẩu trong chỉnh sửa chế độ tramp Emacs
- 8. xuất khẩu html chế độ org
- 9. Đánh giá hàng tuần ở chế độ org
- 10. Sử dụng Emacs để bắt đầu làm chế độ org
- 11. ngày chế độ org ở các chế độ Emacs khác
- 12. Emacs, R, Org-mode: cách bật tự động chuyển sang chế độ ESS trong các khối mã R?
- 13. macro chế độ org bên trong khối mã và sử dụng babel
- 14. Stentation lạ trong chế độ emacs org src block
- 15. Làm thế nào để bỏ khối mã trong chế độ python emacs?
- 16. Làm cách nào để định dạng bài đăng trong HTML khi xuất bằng chế độ Org?
- 17. Làm thế nào để làm cho formule lớn hơn trong chế độ org của Emacs?
- 18. Mã hóa đoạn mã trong chế độ Emacs noweb?
- 19. Làm cách nào để thoát khỏi dấu ngoặc kép [[nội dòng trong chế độ org
- 20. Nhiều tác giả trong chế độ xuất khẩu cao su chế độ org
- 21. Nỗ lực xuất khẩu và clocksum từ chế độ org?
- 22. chế độ emacs org, chỉ tìm kiếm tiêu đề
- 23. IPython trong Emacs. Đánh giá mã nhanh
- 24. HTML/CSS: Cách nhập "mật khẩu" hiển thị mật khẩu?
- 25. Tích hợp chế độ org của Emacs bằng email?
- 26. cách nhận báo giá thông minh khi xuất chế độ org?
- 27. cách chèn "|" trong bảng chế độ org
- 28. có một lệnh chế độ org của Emacs để chuyển đến tiêu đề org không?
- 29. Làm cách nào để nhập mật khẩu ssh bằng bash?
- 30. Emacs sao chép chức năng M-RET của chế độ org ở chế độ đầu tiên
Cảm ơn bạn trả lời. Nhưng tôi nghĩ rằng sẽ làm cho tất cả các lệnh trong khối chạy như sudo. Nhưng tôi chỉ mong đợi một số người trong số họ chạy như SUDO. Tôi có một giải pháp xấu xí khác bây giờ là sử dụng "echo" "| sudo -S '. Tôi phải đặt mật khẩu của mình vào tệp org mà tôi không thực sự thích. –
enchanter
@enchanter Có một giải pháp cho điều đó là tốt. Tôi đã chỉnh sửa câu trả lời của tôi để bao gồm nó. (Và có, lưu trữ mật khẩu trong văn bản thuần túy là một ý tưởng tồi. – itsjeyd
Thật tuyệt vời. Nó thực sự mở ra tâm trí của tôi và cố gắng giải quyết vấn đề theo một cách khác. – enchanter