Điểm:0

chown Hoạt động không được phép

lá cờ th

Tôi đã làm một bản gốc bài tràn ngăn xếp.

Tôi có lệnh này gây ra lỗi trong Máy tính xách tay Jupyter của mình (chi tiết trong bài đăng SO):

! chown -R daemon:daemon elaticsearch-7.9.2

Đưa ra nhiều kết quả đầu ra:

chown: thay đổi quyền sở hữu của âelasticsearch-7.9.2/NOTICE.txtâ: Thao tác không được phép
...
--------------------------------------------- -------------------------
Sub processError Traceback (cuộc gọi gần đây nhất cuối cùng)
<ipython-input-25-5f043305a2ca> trong <module>
      8 es_server = Popen(['elasticsearch-7.9.2/bin/elasticsearch'],
      9 thiết bị xuất chuẩn = ỐNG, thiết bị xuất chuẩn = STDOUT,
---> 10 preexec_fn=lambda: os.setuid(1) # dưới dạng daemon
     11 )
     12 # đợi cho đến khi ES bắt đầu

~/anaconda3/envs/mxnet_latest_p37/lib/python3.7/sub process.py trong __init__(self, args, bufsize, executable, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, Creationflags, restore_signals, start_new_session, pass_fds, mã hóa, lỗi, văn bản)
    798 c2pread, c2pwrite,
    799 đọc sai, viết sai,
--> 800 restore_signals, start_new_session)
    801 ngoại trừ:
    802 # Dọn dẹp nếu đứa trẻ khởi động không thành công.

~/anaconda3/envs/mxnet_latest_p37/lib/python3.7/sub process.py trong _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, đọc nhầm, ghi lỗi, khôi phục_signals, start_new_session)
   1550 err_msg += ': ' + repr(err_filename)
   1551 tăng child_Exception_type(errno_num, err_msg, err_filename)
-> 1552 tăng child_Exception_type(err_msg)
   1553 
   1554 

Sub processError: Đã xảy ra ngoại lệ trong preexec_fn.
--------------------------------------------- -------------------------
Sub processError Traceback (cuộc gọi gần đây nhất cuối cùng)
<ipython-input-25-5f043305a2ca> trong <module>
      8 es_server = Popen(['elasticsearch-7.9.2/bin/elasticsearch'],
      9 thiết bị xuất chuẩn = ỐNG, thiết bị xuất chuẩn = STDOUT,
---> 10 preexec_fn=lambda: os.setuid(1) # dưới dạng daemon
     11 )
     12 # đợi cho đến khi ES bắt đầu

~/anaconda3/envs/mxnet_latest_p37/lib/python3.7/sub process.py trong __init__(self, args, bufsize, executable, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, Creationflags, restore_signals, start_new_session, pass_fds, mã hóa, lỗi, văn bản)
    798 c2pread, c2pwrite,
    799 đọc sai, viết sai,
--> 800 restore_signals, start_new_session)
    801 ngoại trừ:
    802 # Dọn dẹp nếu đứa trẻ khởi động không thành công.

~/anaconda3/envs/mxnet_latest_p37/lib/python3.7/sub process.py trong _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, đọc nhầm, ghi lỗi, khôi phục_signals, start_new_session)
   1550 err_msg += ': ' + repr(err_filename)
   1551 tăng child_Exception_type(errno_num, err_msg, err_filename)
-> 1552 tăng child_Exception_type(err_msg)
   1553 
   1554 

Sub processError: Đã xảy ra ngoại lệ trong preexec_fn.

Đang bổ sung sudo dường như khắc phục một phần vấn đề của tôi như không được phép vận hành tuyên bố không còn xuất hiện:

! Sudo chown -R daemon:daemon elaticsearch-7.9.2

Tuy nhiên, các Quy trình conLỗi dấu vết vẫn còn.


Làm cách nào tôi có thể cấp quyền root cho Python hoặc kernel hoặc AWS SageMaker?

raj avatar
lá cờ cn
raj
Có vẻ như bạn thay đổi UID trong mã của mình bằng cách sử dụng `os.setuid()`, và đó là nơi chỉ báo lỗi. Để thay đổi UID, mã phải chạy với quyền root. Nó có chạy với quyền root không? BTW. Tôi không thấy việc thay đổi thuộc tính bất biến (`chattr -i`) có thể giúp bạn như thế nào trong việc này.
StressedBoi69420 avatar
lá cờ th
Nó đang chạy trên **AWS SageMaker Jupyter Labs**. Đó là một cái nhìn sâu sắc mà bạn đã thực hiện @raj
StressedBoi69420 avatar
lá cờ th
Tôi đã xóa tham chiếu đến việc sử dụng `chattr -i` làm giải pháp khỏi bài đăng.
Điểm:0
lá cờ cn
raj

Có hai khả năng để chạy chương trình hoặc tập lệnh với quyền root.

  1. chạy nó với sudo: thay vì /path/to/your/script.py, sử dụng sudo /path/to/your/script.py. Nó có thể giúp cấu hình sudo để nó không hỏi mật khẩu cho tệp cụ thể này. Bạn có thể làm điều đó bằng cách đặt một tệp (có tên bất kỳ) vào /etc/sudoers.d thư mục với nội dung sau:

    TẤT CẢ TẤT CẢ=(root) NOPASSWD: /path/to/your/script.py
    
  2. sử dụng một thiết lập bit. Phương pháp này chủ yếu được sử dụng cho các chương trình nhị phân, vì đối với các tập lệnh (như tập lệnh Python của bạn), Linux vì lý do bảo mật sẽ bỏ qua bit setuid. Tuy nhiên, có thể chạy tập lệnh thông qua một trình bao bọc nhị phân, I E. chương trình nhị phân rất nhỏ không làm gì khác hơn là gọi tập lệnh. Sau đó bạn nên chown chương trình nhị phân của bạn để root và đặt bit setuid bằng cách sử dụng chmod u+s /path/to/your/binary. Chương trình có bit setuid chạy với quyền của chủ sở hữu - tức là. trong trường hợp này là root.

    Ví dụ, chương trình bao bọc có thể được viết bằng C, như sau:

    #include <stdio.h>
    #include <stdlib.h>
    #include <sys/types.h>
    #include <unistd.h>
    #include <sys/wait.h>
    
    int chính ()
    {
      intrc;
      thiết lập( 0 );
      rc=WEXITSTATUS(system( "/path/to/your/script.py" ));
      thoát (rc);
    }
    

    (để biên dịch chương trình C, bạn cần cài đặt xây dựng cần thiết gói, vì trình biên dịch C không được cài đặt theo mặc định trên Ubuntu).

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.