C и права доступа к файлу - PullRequest
       25

C и права доступа к файлу

0 голосов
/ 02 сентября 2011

Я использую Ubuntu Lucid Lynx

возможно ли записать данные в файл с помощью программы на Си, которая имеет разрешение только на чтение.Если это невозможно, то есть ли способ предоставить sudo доступ к программе на языке C.

Для файлов без прав доступа я бы сохранил данные в виде строки.Тогда я бы открыл файл с опцией записи:

FILE *fp = fopen(file_path,"w")
fputs(string,fp);
fclose(fp);

Ответы [ 5 ]

1 голос
/ 02 сентября 2011

Если вы являетесь владельцем файла, вы можете изменить права доступа с помощью chmod .Если вы не владелец, вы можете использовать setuid bit для доступа к файлу, но этого действительно следует избегать.

1 голос
/ 02 сентября 2011

Невозможно, чтобы программа поднялась до состояния sudo во время работы. И это чертовски хорошо. Если бы это было возможно, каждый вирус мог бы захватить любую систему.

Программа должна быть запущена с правильными правами доступа с самого начала.

1 голос
/ 02 сентября 2011

Нет, вы не можете писать в файл только для чтения, что подорвало бы весь смысл только для чтения.Что касается предоставления root-доступа к программе ac, вы всегда можете запустить ее как root или как пользователь, у которого есть права на изменение файла.

0 голосов
/ 02 сентября 2011

Обычно в Unix вам нужно сделать исполняемый файл программы принадлежащим root, исполняемый файл world, а затем установить для него бит SUID.

chown root filename
chmod 4775 filename

См. chomd docs для точного значения битов, но все вместе это означает, что всякий раз, когда кто-то запускает этот исполняемый файл, он получает идентификатор пользователя исполняемого процесса, установленный на владельца (root).

0 голосов
/ 02 сентября 2011

Вы можете, но не стандартным кроссплатформенным способом.

В системах Unix используйте chmod.Он должен быть в <sys/stat.h>

См. эту ссылку .

Если вам нужна привилегия root, попробуйте:

if(fp == NULL)
    execvp("sudo", argv);
...