Score:0

ไม่อนุญาตให้ใช้ chown

ธง th

ฉันมีต้นฉบับทำ โพสต์กองล้น.

ฉันมีคำสั่งนี้ทำให้เกิดข้อผิดพลาดใน Jupyter Notebook ของฉัน (รายละเอียดในโพสต์ SO):

! chown -R daemon:daemon elasticsearch-7.9.2

ให้ผลลัพธ์มากมายเหล่านี้:

chown: การเปลี่ยนการเป็นเจ้าของ âelasticsearch-7.9.2/NOTICE.txtâ: ไม่อนุญาตให้ดำเนินการ
...
--------------------------------------------- -------------------------
SubprocessError Traceback (การโทรครั้งล่าสุดล่าสุด)
<ipython-input-25-5f043305a2ca> ใน <โมดูล>
      8 es_server = Popen(['elasticsearch-7.9.2/bin/elasticsearch'],
      9 stdout=PIPE, stderr=STDOUT,
---> 10 preexec_fn=lambda: os.setuid(1) # เป็นภูต
     11 )
     12 # รอจนกว่า ES จะเริ่มต้น

~/anaconda3/envs/mxnet_latest_p37/lib/python3.7/subprocess.py ใน __init__(self, args, bufsize, executable, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, createflags, restore_signals, start_new_session, pass_fds, การเข้ารหัส, ข้อผิดพลาด, ข้อความ)
    798 c2pread, c2pwrite,
    799 เขียนผิด เขียนผิด
--> 800 restore_signals, start_new_session)
    801 ยกเว้น:
    802 # การล้างข้อมูลหากเด็กล้มเหลวในการเริ่มต้น

~/anaconda3/envs/mxnet_latest_p37/lib/python3.7/subprocess.py ใน _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, createflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, start_new_session)
   1550 err_msg += ':' + repr(err_filename)
   1551 ยก child_exception_type (errno_num, err_msg, err_filename)
-> 1552 ยก child_exception_type (err_msg)
   1553 
   1554 

SubprocessError: เกิดข้อยกเว้นใน preexec_fn
--------------------------------------------- -------------------------
SubprocessError Traceback (การโทรครั้งล่าสุดล่าสุด)
<ipython-input-25-5f043305a2ca> ใน <โมดูล>
      8 es_server = Popen(['elasticsearch-7.9.2/bin/elasticsearch'],
      9 stdout=PIPE, stderr=STDOUT,
---> 10 preexec_fn=lambda: os.setuid(1) # เป็นภูต
     11 )
     12 # รอจนกว่า ES จะเริ่มต้น

~/anaconda3/envs/mxnet_latest_p37/lib/python3.7/subprocess.py ใน __init__(self, args, bufsize, executable, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, createflags, restore_signals, start_new_session, pass_fds, การเข้ารหัส, ข้อผิดพลาด, ข้อความ)
    798 c2pread, c2pwrite,
    799 เขียนผิด เขียนผิด
--> 800 restore_signals, start_new_session)
    801 ยกเว้น:
    802 # การล้างข้อมูลหากเด็กล้มเหลวในการเริ่มต้น

~/anaconda3/envs/mxnet_latest_p37/lib/python3.7/subprocess.py ใน _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, createflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, start_new_session)
   1550 err_msg += ':' + repr(err_filename)
   1551 ยก child_exception_type (errno_num, err_msg, err_filename)
-> 1552 ยก child_exception_type (err_msg)
   1553 
   1554 

SubprocessError: เกิดข้อยกเว้นใน preexec_fn

ต่อท้าย ซูโด ดูเหมือนว่าจะแก้ไขปัญหาของฉันได้บางส่วนเป็น ไม่อนุญาตให้ดำเนินการ ข้อความไม่ปรากฏอีกต่อไป:

! sudo chown -R daemon:daemon elasticsearch-7.9.2

อย่างไรก็ตาม ข้อผิดพลาดกระบวนการย่อย การย้อนกลับยังคงอยู่


ฉันจะให้สิทธิ์ Python หรือเคอร์เนลหรือรูท AWS SageMaker ได้อย่างไร

raj avatar
cn flag
raj
ดูเหมือนว่าคุณจะเปลี่ยน UID ในรหัสของคุณโดยใช้ `os.setuid()` และนั่นคือจุดที่ระบุข้อผิดพลาด หากต้องการเปลี่ยน UID รหัสจะต้องทำงานเป็นรูท มันทำงานด้วยการอนุญาตรูทหรือไม่? BTW. ฉันไม่เห็นว่าการเปลี่ยนแอตทริบิวต์ที่ไม่เปลี่ยนรูปแบบ (`chattr -i`) จะช่วยคุณในเรื่องนี้ได้อย่างไร
StressedBoi69420 avatar
th flag
กำลังทำงานบน **AWS SageMaker Jupyter Labs** นั่นเป็นข้อมูลเชิงลึกที่ดีที่คุณสร้าง @raj
StressedBoi69420 avatar
th flag
ฉันได้ลบการอ้างอิงถึงการใช้ `chattr -i` เป็นวิธีแก้ปัญหาออกจากโพสต์
Score:0
ธง cn
raj

มีความเป็นไปได้สองประการในการรันโปรแกรมหรือสคริปต์ด้วยสิทธิ์รูท

  1. เรียกใช้ด้วย ซูโด: แทน /path/to/your/script.py, ใช้ sudo /path/to/your/script.py. อาจช่วยในการกำหนดค่า ซูโด เพื่อไม่ให้ถามรหัสผ่านสำหรับไฟล์นี้โดยเฉพาะ คุณสามารถทำได้โดยใส่ไฟล์ (ชื่อใดก็ได้) ลงไป /etc/sudoers.d ไดเรกทอรีที่มีเนื้อหาดังต่อไปนี้:

    ทั้งหมด ALL=(root) NOPASSWD: /path/to/your/script.py
    
  2. ใช้ บิต setuid. วิธีนี้ใช้สำหรับโปรแกรมไบนารีเป็นส่วนใหญ่ เนื่องจากสำหรับสคริปต์ (เช่น สคริปต์ Python ของคุณ) ด้วยเหตุผลด้านความปลอดภัย Linux จะละเว้นบิต setuid อย่างไรก็ตาม คุณสามารถเรียกใช้สคริปต์ผ่าน กระดาษห่อไบนารี, เช่น. โปรแกรมไบนารี่ขนาดเล็กมากที่ไม่ได้ทำอะไรมากไปกว่าการเรียกสคริปต์ ถ้าอย่างนั้นคุณควร เคี้ยว โปรแกรมไบนารีของคุณเพื่อรูทและตั้งค่าบิต setuid โดยใช้ chmod u+s /path/to/your/binary.chmod. โปรแกรมที่มีบิต setuid ทำงานโดยได้รับอนุญาตจากเจ้าของ - เช่น ในกรณีนี้รูต

    โปรแกรม wrapper สามารถเขียนได้ด้วยภาษา C ดังนี้

    #รวม <stdio.h>
    #รวม <stdlib.h>
    #รวม <sys/types.h>
    #รวม <unistd.h>
    #รวม <sys/wait.h>
    
    int หลัก ()
    {
      int rc;
      เซทูอิด( 0 );
      rc=WEXITSTATUS(ระบบ( "/path/to/your/script.py" ));
      ทางออก (rc);
    }
    

    (ในการคอมไพล์โปรแกรม C คุณต้องติดตั้ง สิ่งจำเป็นในการสร้าง เนื่องจากไม่ได้ติดตั้งคอมไพเลอร์ C ตามค่าเริ่มต้นบน Ubuntu)

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา