сделать программу python с моим UID для модификации файла - PullRequest
0 голосов
/ 14 апреля 2020

Итак, вкратце, я создал скрипт (с именем main.py), в котором был момент, когда я записывал в файл. Это сработало хорошо. Однако разрешения для этого файла должны были быть rwxrwxrw - и, следовательно, любой мог изменить файл на сервере. Это не то, что я хотел. Поэтому я изменил права доступа на rwxrwxr--, а затем изменил код main.py:

#!/usr/bin/python
import subprocess
text = "I want this text to appear in my file"
command = subprocess.Popen(["python", "modificateFile.py", str('"')+text+str('"')], stderr=subprocess.PIPE, stdout=subprocess.PIPE) #I run another file that will do the task
for i in command.stderr:
    print(i.decode("utf-8")) #check if there is any error

код modificateFile.py

#!/usr/bin/python
import platform
import os
import sys

UID = 1080 #my UID.. I don't really know if it's the right way to program this

if __name__ == "__main__":
    system = platform.system()
    if system == "Linux": #ok it may be useless
        os.setuid(UID) #            /!\ I THINK THAT'S WHERE THE PROBLEM IS /!\
        if len(sys.argv) > 1:
            with open("file.txt", "w", encoding="utf-8") as f:
                f.write(sys.argv[1])
        else:
            sys.stderr.write("not enough parameters to work") #didn't know which error I could raise.. 
#so as I already imported sys, I used this function
            exit(-1)
    else:
        sys.stderr.write("wrong OS : program only work on linux")
        exit(-1)

Когда я создал это, я не сделал честно говоря, я не знаю, что я делал, я учусь программированию. Сообщение об ошибке:

Traceback (последний вызов был последним): файл "modificateFile.py", строка 11, в os.setuid (UID) PermissionError: [Errno 1] Операция не разрешена

Я слышал о SUID ... но у меня нет root разрешений.

Может кто-нибудь объяснить, что не так и что я могу сделать? (если вам нужно больше элементов, скажите мне)

1 Ответ

0 голосов
/ 17 апреля 2020

хорошо .... Я думал, что SUID был доступен только для root программ ... Я уже тестировал его для этой программы, но он не работал. Однако после этого я узнал, что SUID недоступен для программ с шебангом в начале ... Итак, для этого я создал код в C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...