Как выполнять манипуляции с файлами / каталогами с учетом прав пользователя?

У меня есть серверное приложение, которое будет работать под системной учетной записью, потому что в любой момент времени оно будет обрабатывать запросы от имени любого пользователя в системе. Эти запросы состоят из инструкций по управлению файловой системой.

Вот уловка: программа должна помнить о привилегиях этого конкретного пользователя при выполнении действий. Например, joe не должен иметь возможность изменять / home / larry , если его права доступа 755 .

В настоящее время моя стратегия такова:

  • Получить владельца / группу файла
  • Сравнить его с идентификатором пользователя / идентификатором группы пользователя, пытающегося выполнить действие
  • Если совпадают (или нет совпадений) ) используйте соответствующую часть поля разрешений в файле, чтобы разрешить или запретить действие

Это разумно? Есть ли более простой способ сделать это?

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

8
задан Nathan Osman 31 January 2011 в 04:57
поделиться