Я хотел бы получить несколько предложений о том, как можно настроить разрешения в Windows-2012 для следующего варианта использования:
- Каждый пользователь (назовем его
bob
) запускает приложение (назовем егоmyapp
). myapp
требуются разрешения на чтение/запись для всех файлов и папок вc:\Users\bob\myapp
(1)bob
требуются разрешения на чтение/запись вc:\Users\bob\myapp\templates
.bob
не могу прочитать папкуc:\Users\bob\myapp\logs
- По умолчанию и если не указано иное в пунктах 3 и 4,
bob
можно читать любые файлы и папки вc:\Users\bob\myapp\
Я работаю с Linux и не совсем понимаю, как организовать это на Windows Server.
Буду признателен, если кто-нибудь укажет мне правильное направление!
(1) Я придумал путь. Он будет где-то в окнах. (Я не думаю, что это важно, но если так, поделитесь своими знаниями!)
EDIT: Решение под Linux
- Приложение работает под пользователем
bobapp
, группойbobapp
. - Пользователь работает под пользователем
bob
, который является частью группыbobapp
- Все файлы и папки в этом разделе
/users/bob/myapp
принадлежат пользователюbobapp
, группеbobapp
- В разделе
/users/bob/
папки имеют разрешения750
(чтение/запись/выполнение для владельца, чтение/выполнение для группы, нет для всех) и обычные файлы640
(чтение/запись для владельца, чтение для группы, нет для всех), исполняемые файлы750
(чтение/запись/выполнение для владельца, чтение/выполнение для группы, нет для всех) /users/bob/myapp/logs
имеет разрешения 700 (чтение/запись/исполнение для владельца, нет для группы и нет для всех остальных)
Примечание 1: Отображение графического приложения, работающего bobapp
в bob
сеансе, может стать еще одной проблемой, но существует множество вариантов, позволяющих сеансу видеть графическое приложение bob
и взаимодействовать с ним .bobapp
Примечание 2:
sudo
будет использоваться в случае, если bob
требуется запустить myapp
, так как для запуска приложения необходимо временно получить разрешения. sudo
будет очень ограниченным и позволит bob
запустить программу только от имени bobapp
пользователя.
Примечание 3: Когда приложение или пользователь создает новые файлы и папки, вам нужно быть внимательным к разрешениям по умолчанию, которые будут унаследованы при создании новых файлов и папок (несколько вариантов, вероятно, я бы использовал что-то вродеэтот)
решение1
Как бы вы решили эту проблему в системах Linux?
Поскольку приложение работает в контексте пользователя, разрешения на чтение и запись одинаковы.
Вы можете установить разрешения для каталога с помощью Cacls
или через процедуру установки.
Вероятно, вы бы сделали главный каталог c:\Users\bob\myapp
доступным для чтения и записи.
Наследуйте эти разрешения для всех подкаталогов, кроме c:\Users\bob\myapp\logs
.
Вы упомянули sudo
в баунти, поэтому я предполагаю, что вы видите ту же проблему. Вы не можете применять ограничения, когда приложение работает в том же контексте. Поэтому вам нужно будет либо запустить приложение в другом контексте пользователя, либо найти другое решение для каталога logs
. Вы можете отменить разрешения, читать/писать, а затем снова установить разрешения. Поскольку пользователь является владельцем каталога, когда он его создал, вы можете изменить разрешения в любое время.
О вашем вопросе пути Windows: есть защищенные пути, такие как C:\Program Files\
или C:\Windows\
, которым нужны административные привилегии (и принадлежит TrustedInstaller). Поэтому важно, где создавать ваши каталоги.
Редактировать:
Из обновления OP ссылались sudo
. Этот инструмент нужен для запуска программы от имени другого пользователя, обычно настроенного на то, чтобы не требовался пароль для изменения контекста. Насколько мне известно, в vanilla Windows нет эквивалента.
Вы можете посмотреть обсуждениездесьо том, как получить повышенные запросы и т. д., но в основном для этого требуются права администратора и/или требуется ввести пароль, например runas
.
Кроме того "Выдать себя за клиента после аутентификации«может быть, поможет, но я никогда этим не пользовался и ничего не могу о нем сказать.