Включить Intr anet, чтобы проверить доступ пользователя к общим файлам - PullRequest
0 голосов
/ 01 февраля 2020

Windows Редакция: Windows Сервер 2016 Standard
XAMPP Версия 7.4.1
PHP Версия 7.4.1
Использование LDAP / TLS для входа в систему пользователя

Цель: Я строю локальный int anet, чтобы позволить сотрудникам компании получать доступ к общим файлам через веб-портал intr anet. У меня уже есть системные ссылки, чтобы пользователь мог открыть эти общие файлы. Теперь я пытаюсь убедиться, что обычные пользователи не могут получить доступ к файлам, которые должны быть зарезервированы для выставления счетов, работы с персоналом и т. Д. c.

Проблема: я не могу напрямую сравнить группу безопасности пользователя (из LDAP) в PHP Ответ разрешения (от fileperms($path)), чтобы увидеть, совпадают ли они, перед открытием папки.

Через LDAP я могу получить список групп безопасности пользователя, когда они регистрируются вход, который выглядит следующим образом:

Безопасность пользователя:

  • Группа A (обычный доступ)
  • Группа B (биллинговый доступ)
  • Группа C (доступ к бухгалтерии)
  • Et c.

Однако, когда я пытаюсь получить доступ к указанным c разрешениям папки, я могу получить только разрешения для папки согласно к уровню доступа PHP, а не пользователю.

Например: fileperms ($ path) =

  • Владелец: rwx
  • Группа: rwx
  • World: rwx

Я мог бы также извлечь это в восьмеричной форме (например, "0777", et c), но я бы все еще есть та же проблема. Они не «совпадают».

Теперь компания этого клиента довольно маленькая, поэтому я мог бы просто go и кодировать профиль доступа для каждого пользователя, к которому относится intr anet, когда они пытаются для доступа к общим дискам, но следующая компания намного больше, поэтому я ищу способ автоматизировать этот процесс проверки привилегий.

Я подумал об использовании расширения PHP POSIX для улучшения взаимодействия с файлами, но, насколько я понимаю, он не будет работать в системе Windows.

Я рассмотрел возможность запуска "запустить как" из командной строки (через PHP shell_ex ($ path) с именем пользователя и паролем пользователя, но я не хочу запускать каждый файл в папке, просто чтобы посмотреть, есть ли у пользователя доступ!

Есть ли строка cmd, эквивалентная PHP 'is_writable () ", но с учетом учетных данных пользователя?

Что-то вроде:" is_writable newFolder' username '' password '"

Что даст логический ответ" true "если доступно и" false "если нет?

...