Сервис для записи файлов с определенной группой и разрешениями C#C#

Место общения программистов C#
Ответить
Anonymous
 Сервис для записи файлов с определенной группой и разрешениями C#

Сообщение Anonymous »

Я пишу программу, намереваясь запустить ее с использованием пользователя daemon/service/no-login aaa.
Пользователь aaa является частью группыshareabc иsharedef .
Файл конфигурации этой программы будет выглядеть так:

Код: Выделить всё

{
... other config ...
"locations": [
{
"id": "workflow1",
"location": "/shr/abc",
"group": "shareabc"
},
{
"id": "workflow2",
"location": "/shr/def",
"group": "sharedef"
},
],
... other config ...
}
Если в моей программе я вызываю Directory.CreateDirectory("/shr/abc/ myfolder1");, тогда будет создан /shr/abc/myfolder1 с владельцем aaa:aaa.
Какой код C# мне использовать нужно заставить его создать папку с владелец aaa:shareabc вместо aaa:aaa?
Запуск программы от имени пользователя aaa группыshareabc не является решение, например:
  • Есть некоторые файлы, которые должны быть aaa:aaa, и есть другие, которые должны быть aaa:shareabc >. Изменение текущего пользователя/группы или изменение настроек файловой системы по умолчанию просто сдвигают проблему, а не решают ее.
  • Я столкнулся бы с той же проблемой, когда он попытается записать в папку /shr/def с использованием владельца aaa:sharedef.
Что касается настройки разрешений, кажется, они несколько лет назад обновил C# API. Я могу просто вызвать следующее, чтобы создать его с 775:

Код: Выделить всё

Directory.CreateDirectory("/shr/abc/myfolder1", UnixFileMode.UserRead | UnixFileMode.UserWrite | UnixFileMode.UserExecute | UnixFileMode.GroupRead | UnixFileMode.GroupWrite | UnixFileMode.GroupExecute | UnixFileMode.OtherRead | UnixFileMode.OtherExecute);


Подробнее здесь: https://stackoverflow.com/questions/791 ... ns-c-sharp
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»