Итак, вкратце, я создал скрипт (с именем 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 разрешений.
Может кто-нибудь объяснить, что не так и что я могу сделать? (если вам нужно больше элементов, скажите мне)