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

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

Сообщение Anonymous »

Редактирование вопроса, поскольку, судя по комментариям ниже, кажется, что вопрос не понят. Первоначально я написал вопрос довольно расплывчато в надежде, что кто-то предложит решение, которое сильно отличается от того, с чего я начал, но, похоже, я просил слишком многого, поэтому переписал на основе того, что у меня есть на данный момент. Также удалил ссылку на разрешения, так как нашел ответ на этот вопрос (будет включен внизу).
Я пишу программу, намереваясь запустить ее с помощью демона/сервиса/нет- войдите в систему пользователя 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#»