Я переместил сценарий Windows на новую машину под управлением Windows Server 2008 R2 (с машины под управлением 2000).
Первое, что делает сценарий, - это переименовывает текстовый файл в той же папке, что и сценарий.
Рассматриваемый файл имеет текущего пользователя (который является администратором) в своем списке безопасности с установленным «полным контролем».
Когда я пытаюсь запустить сценарий, дважды щелкнув его (при входе в систему как тот же администратор с полным контролем над файлом), я получаю сообщение «Доступ запрещен» для строки, в которой файл переименован.
Если я запустил сценарий через запланированную задачу, он может выйти за пределы этой точки.
Если я запускаю сценарий косвенно, через команду runas от имени «Администратор», он проходит мимо этой точки.
Таким образом, похоже, что Windows просто игнорирует права, которые учетная запись администратора домена имеет на файл.
Incedently я также не могу сохранить какие-либо изменения в файле сценария, мне также отказано в доступе для этого.
Есть идеи, как заставить ОС игнорировать права, которые авторизованный пользователь имеет на файлы?
Редактировать: в ответ на комментарий Gnouc я стал владельцем папки, содержащей сценарий, и другого файла, который сценарий пытается переименовать. Теперь это работает. Таким образом, похоже, что для правильной работы сценария пользователь, запускающий сценарий, должен иметь «полный контроль» И быть владельцем! Кажется немного ограничительным, но я думаю, кто-то может возразить, что ОС более безопасна.
Поскольку ваша система использует NTFS, он будет сравнивать ваш SID пользователя сеанса входа в систему с SID, сгенерированным ACL Entry. Ваш скрипт использует старый ACL из старой системы, поэтому он не может оценить правильную запись ACL для вашего пользователя.
В take ownership
средства:
Разрешает или запрещает владение файлом или папкой. Владелец файла или папки всегда может изменить права доступа к нему, независимо от существующих разрешений, защищающих файл или папку.
Таким образом, теперь сам сценарий может оценивать запись ACL, давая вам необходимые права.
Подробнее о NTFS вы можете увидеть Вот
С уважением.
Во-первых, когда задача запускается с использованием Scheduled Task
метод, скрипт запускается как SYSTEM
аккаунт, который заменяет Administrator
учетная запись. Учетная запись администратора не имеет всех разрешений в Windows. Когда файл копируется пользователем, право собственности на файл и разрешения для нового файла определяются пользователем, выполняющим задачу. В этом случае SYSTEM
учетная запись.
У вас есть 2 возможных решения: