(Windows Server 2003) Использование CACLS.EXE

У меня есть путь со следующими привилегиями:

E:\MY_PATH                  BUILTIN\Administrators:(OI)(CI)F
                            NT AUTHORITY\SYSTEM:(OI)(CI)F
                            BUILTIN\Administrators:F
                            CREATOR OWNER:(OI)(CI)(IO)F
                            BUILTIN\Users:(OI)(CI)R
                            BUILTIN\Users:(CI)(special access:)
                                              FILE_APPEND_DATA

                            BUILTIN\Users:(CI)(special access:)
                                              FILE_WRITE_DATA

По этому пути есть текстовый файл, который я не могу изменить или удалить: я могу только добавлять строки.

Я хотел бы знать, как я могу дать разрешение на запись в этот файл на некоторое время, а затем вернуться к исходным настройкам.

Это файл журнала, и он становится слишком большим, поэтому я бы хотел оставить старые строки, оставив только самые последние 1000 строк.

Но у меня нет привилегий, чтобы удалить строки или удалить файл.

Пожалуйста помоги.

Заранее спасибо.

Я только что прочитал CACLS /? но я не понял, как использовать эту команду.

1 ответ

Решение

Я не совсем уверен, как вы хотите решить проблему.
Почему бы вам просто не дать пользователю право всегда изменять журнал? Если администратору требуется изменить ACL, то почему он не редактирует файл журнала? Можно ли редактировать журнал во время работы службы / приложения ведения журнала?

Столько вопросов, теперь к моим ответам. Я бы использовал icacls, а не cacls.

Чтобы предоставить право:
icacls logfilename /grant *S-1-5-32-545:(WD)

Чтобы удалить права (это работает, только если предоставленная запись ACL является единственной для этого пользователя в этом файле!):
icacls logfilename /remove *S-1-5-32-545

Я использую SID, а не имена в вышеприведенных вызовах, потому что SID не зависят от языка ОС и работают одинаково на вашей английской Windows и моей немецкой Windows.

Если вам нужна логика сохранения-восстановления, вы можете сохранить ACL-вызов файла
icacls logfilename /save aclsavefile
и восстановить ACL, используя
icacls . /restore aclsavefile

Как видите, сохранение требует имя файла, а восстановление требует имя папки (имя файла хранится в aclsavefile и берется оттуда). Будьте осторожны: в Windows 7 восстановление ACL требует (резервная копия?) Привилегий и может быть выполнено только при запуске от имени администратора.

Другие вопросы по тегам