Puncte:0

chown Operațiunea nu este permisă

drapel th

Am făcut original un Stiva depășire post.

Am această comandă care provoacă erori mai jos Jupyter Notebook (detaliat în postarea SO):

! chown -R daemon:daemon elasticsearch-7.9.2

Oferind multe dintre aceste rezultate:

chown: schimbarea proprietarului âelasticsearch-7.9.2/NOTICE.txtâ: operațiunea nu este permisă
...
--------------------------------------------- -------------------------
SubprocessError Traceback (cel mai recent apel ultimul)
<ipython-input-25-5f043305a2ca> în <modul>
      8 es_server = Popen(['elasticsearch-7.9.2/bin/elasticsearch'],
      9 stdout=PIPE, stderr=STDOUT,
---> 10 preexec_fn=lambda: os.setuid(1) # ca daemon
     11)
     12 # așteptați până când ES a început

~/anaconda3/envs/mxnet_latest_p37/lib/python3.7/subprocess.py în __init__(self, args, bufsize, executabil, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_startinfo,creation,flagups,newline restore_signals, start_new_session, pass_fds, codificare, erori, text)
    798 c2pread, c2pwrite,
    799 erread, rrwrite,
--> 800 de semnale de restaurare, start_new_session)
    801 cu excepția:
    802 # Curățare dacă copilul nu a pornit.

~/anaconda3/envs/mxnet_latest_p37/lib/python3.7/subprocess.py în _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2precrite,critead, cw2precrite2 erread, errwrite, restore_signals, start_new_session)
   1550 err_msg += ': ' + repr(err_filename)
   1551 raise child_exception_type(errno_num, err_msg, err_filename)
-> 1552 raise child_exception_type(err_msg)
   1553 
   1554 

SubprocessError: A apărut o excepție în preexec_fn.
--------------------------------------------- -------------------------
SubprocessError Traceback (cel mai recent apel ultimul)
<ipython-input-25-5f043305a2ca> în <modul>
      8 es_server = Popen(['elasticsearch-7.9.2/bin/elasticsearch'],
      9 stdout=PIPE, stderr=STDOUT,
---> 10 preexec_fn=lambda: os.setuid(1) # ca daemon
     11)
     12 # așteptați până când ES a început

~/anaconda3/envs/mxnet_latest_p37/lib/python3.7/subprocess.py în __init__(self, args, bufsize, executabil, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_startinfo,creation,flagups,newline restore_signals, start_new_session, pass_fds, codificare, erori, text)
    798 c2pread, c2pwrite,
    799 erread, rrwrite,
--> 800 de semnale de restaurare, start_new_session)
    801 cu excepția:
    802 # Curățare dacă copilul nu a pornit.

~/anaconda3/envs/mxnet_latest_p37/lib/python3.7/subprocess.py în _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2precrite,critead, cw2precrite2 erread, errwrite, restore_signals, start_new_session)
   1550 err_msg += ': ' + repr(err_filename)
   1551 raise child_exception_type(errno_num, err_msg, err_filename)
-> 1552 raise child_exception_type(err_msg)
   1553 
   1554 

SubprocessError: A apărut o excepție în preexec_fn.

Adăugând sudo pare să-mi rezolve parțial problema ca operatie nepermisa nu mai apar afirmatii:

! sudo chown -R daemon:daemon elasticsearch-7.9.2

Însă SubprocessError ramane urmarirea.


Cum pot acorda permisiuni Python sau nucleului sau AWS SageMaker root?

raj avatar
drapel cn
raj
Se pare că schimbați UID-ul în codul dvs. folosind `os.setuid()`, și acesta este locul în care este indicată eroarea. Pentru a schimba UID-ul, codul trebuie să ruleze ca root. Funcționează cu permisiuni root? BTW. Nu văd cum te-ar putea ajuta modificarea atributului imuabil (`chattr -i`).
StressedBoi69420 avatar
drapel th
Acesta rulează pe **AWS SageMaker Jupyter Labs**. Este o perspectivă bună pe care ai făcut-o @raj
StressedBoi69420 avatar
drapel th
Am eliminat referința la utilizarea `chattr -i` ca soluție din postare.
Puncte:0
drapel cn
raj

Există două posibilități de a rula un program sau un script cu permisiuni root.

  1. rulează-l cu sudo: în loc de /path/to/your/script.py, utilizare sudo /path/to/your/script.py. Ar putea ajuta la configurare sudo astfel încât să nu ceară parola pentru acest fișier special. Puteți face asta introducând un fișier (cu orice nume). /etc/sudoers.d director cu următorul conținut:

    ALL ALL=(rădăcină) NOPASSWD: /path/to/your/script.py
    
  2. folosește o setuid bit. Această metodă este folosită mai ales pentru programe binare, deoarece pentru scripturi (cum ar fi scriptul dvs. Python), Linux din motive de securitate ignoră bitul setuid. Cu toate acestea, este posibil să rulați scriptul prin a înveliș binar, adică. program binar foarte mic care nu face altceva decât să apeleze scriptul. Atunci ar trebui chown programul dvs. binar să rooteze și să setați bitul setuid folosind chmod u+s /cale/la/tau/binar. Programul cu un bit setuid rulează cu permisiunile proprietarului său - adică. în acest caz rădăcină.

    Programul wrapper poate fi scris de exemplu în C, astfel:

    #include <stdio.h>
    #include <stdlib.h>
    #include <sys/types.h>
    #include <unistd.h>
    #include <sys/wait.h>
    
    int main()
    {
      int rc;
      setuid(0);
      rc=WEXITSTATUS(system( "/calea/la/dvs./script.py" ));
      ieșire(rc);
    }
    

    (Pentru a compila un program C, trebuie să instalați construi-esențial pachet, deoarece compilatorul C nu este instalat implicit pe Ubuntu).

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.