LINUX.ORG.RU

Проверка прав пользователя


0

1

Хочу использовать в веб-приложении локальных пользователей. (Зачем - неважно :)

При этом система нулевая, т.е. аутентификация только через стандартный логин (/etc/passwd, нувыпонели), авторизация через права и группы.

Как бы вы проверили, является ли комбинация логин-пароль локальным пользователем?

Как бы вы проверили, есть ли у пользователя права на доступ к ресурсу?

★★★★☆

>Как бы вы проверили, является ли комбинация логин-пароль локальным пользователем?

Как бы вы проверили, есть ли у пользователя права на доступ к ресурсу?

man 3 crypt не то?

drBatty ★★
()

NTLMа неправославного захотелось?
В вебмине вроде былa реализация.

zJes ★★
()

> аутентификация только через стандартный логин

на сервере

Если я правильно понял, то это очень неправильно.

CYB3R ★★★★★
()
Ответ на: комментарий от CYB3R

у меня нечто вроде Вебмина. Всё в порядке.

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от stevejobs

>т.е. ты предлагаешь распарсить файлы с паролями?

угу. А как иначе-то? Если уж «нужно системных». Но я-бы не рискнул такое реализовывать. ИМХО это как-то неправильно... Сама идея неправильная.

drBatty ★★
()

с комстроки членство в группах можно добыть:

getent group wheel
или
id user
и парсить вывод. или через апи оно же доступно. в пыхе, например, все эти фунцкции доступны в модуле posix. чтоб логин-пароль проверить наверное удобнее через pam аутентификацию настроить а потом уже проверять, хотя вся равно в /etc/shadow не добраться без привелегий.

dab18
()
Ответ на: комментарий от drBatty

ну как.. можно попробовать честно залогиниться башем, например. Или по ssh. Можно сразу отключиться, а можно и выполнить какую-нибудь безобидную команду типа uname -a и expect'ом распарсить ее вывод. Или по-быстрому сконпелять LDAP, скриптами перегнать туда пользователей и лезать уже LDAP'ом. Или пользователям поднять вебсервисы для аутентификации в ~/html. Много можно чего придумать -) Так же права к ресурсам можно не считывать, а сразу ломиться и обрабатывать ошибки доступа, тоже разными способами. Отсюда и вопрос, какой способ наиболее православен с точки зрения лоровца.

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от dab18

> хотя вся равно в /etc/shadow не добраться без привелегий

предположим, что на выполнение некоторых строго определенных действий серверу можно дать привилегии рута.

е удобнее через pam аутентификацию настроить а потом уже проверять


т.е. при установке пакета с админкой, автоматом по зависимостям поставить pam, автоматически же отконфигурять и ребутнуть?

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от anonymous

а, он сразу есть. Всё равно, конфигурить pam за пользователя автоматом - какая-то совсем грустная идея. Меня могут убить.

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от stevejobs

>можно попробовать честно залогиниться башем

не получится. Надо expect'ом. Но тогда придётся держать в текстовом файле пароль в открытом виде. Несекьюрно.

Или по ssh.

а это ИМХО уже лучше, ибо пароль вводить не нужно. И хранить его не нужно.

drBatty ★★
()
Ответ на: комментарий от drBatty

> Но тогда придётся держать в текстовом файле пароль в открытом виде.

но ведь пользователь и так вводит этот пароль открытым текстом чтобы залогиниться в веб-админку -) Т.е. какое-то время этот пароль полюбас харнится в оперативке, за это время можно его прогнать экспектом. Потом на сервере делается сессия, а пользователю в куки сохраняется session token, вся коммуникация - REST с ключом session token. Одно из полей серверной сессии будет флагом, является ли этот пользователь «системным» или нет.

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от stevejobs

>но ведь пользователь и так вводит этот пароль открытым текстом чтобы залогиниться в веб-админку

Но зачем-же его хранить? Для вебсервера пароль не нужен, ему только хеш нужен, который можно как можно быстрее посчитать. Для su тоже пароль не нужно знать. А вот expect'у он таки нужен. Надо какую-то сложную схему создавать, что-бы этот пароль надёжно удалить. Короче - не секьюрно ИМХО.

drBatty ★★
()
Ответ на: комментарий от drBatty

А вот expect'у он таки нужен.

он ему разве не один раз нужен - для проверки пользователя в момент логина?

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от stevejobs

>он ему разве не один раз нужен - для проверки пользователя в момент логина?

один. Я же не говорю, что это невозможно, я говорю что это потенциально более опасно.

drBatty ★★
()

Как бы вы проверили, является ли комбинация логин-пароль локальным пользователем?

Написал бы suid'ный testlogin, который в параметры или на stdin принимает логин и пароль, и который пытается сделать нормальную процедуру login через PAM, а на выходе возвращает 0 (найден) или 1 (не найден).

Или вообще засунул бы юзеров в LDAP и делал ldap_bind.

no-dashi ★★★★★
()

Почитай как работает qmail checkpassword. Можешь прям его и использовать.

cdslow ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.