Пишется FTP-сервер.
Создается процесс(через fork()). Юзверь передает логин и пароль.
1) Как правильней проверить, что логин и пароль, переданны юзверем, совпадают с системными?
2) Как сменить права на процесс, чтобы они стали юзверскими(логин и пасс есть). FTP запускается не от рута, естественно.
Права на процесс
Модератор: Модераторы разделов
-
nerezus
- Сообщения: 525
- Статус: Вселенский отказник
- ОС: windoze
Права на процесс
ICQ 547097
-
serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
Re: Права на процесс
1) Сравнить хеш введенного пароля с хешем в /etc/passwd или, более вероятно на совр. системах, /etc/shadow. Получить нужную запись из passwd/shadow можно с помощью getpwnam()/getspnam(). Либо, что предпочтительнее, использовать PAM (хотя не уверен, позволяет ли он форсировать аутентификацию по паролю, если подключены какие-то другие, скажем неинтерактивные, модули аутентификации)
2) Никак. Непривилегированный пользовательский процесс не может сменить свой UID. Можно проделать следующий финт: из процесса запустить другое приложение, которое имеет бит SUID, а уже это приложение, в свою очередь, дропнет суперпользовательские привилегии в UID нужного пользователя.
За безопасность не ручаюсь. Думается, что лучше FTP-серверу использовать существующие su/sudo запуска себя же самого, но с другими привилегиями.
2) Никак. Непривилегированный пользовательский процесс не может сменить свой UID. Можно проделать следующий финт: из процесса запустить другое приложение, которое имеет бит SUID, а уже это приложение, в свою очередь, дропнет суперпользовательские привилегии в UID нужного пользователя.
За безопасность не ручаюсь. Думается, что лучше FTP-серверу использовать существующие su/sudo запуска себя же самого, но с другими привилегиями.
-
nerezus
- Сообщения: 525
- Статус: Вселенский отказник
- ОС: windoze
-
serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
-
nerezus
- Сообщения: 525
- Статус: Вселенский отказник
- ОС: windoze
Re: Права на процесс
Эм... не согласен.Обычно в серверах имеет своя база виртуальных пользователей, а все процессы FTP-сервера выполняются от имени одного и того же реального пользователя.
proftpd, vsftpd запускаются от пользователя ftp, а юзвери могут залогиниться даже от рута и выполнять операции с файлами рута.
Вот хотелось бы знать, как =\
ICQ 547097
-
serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
Re: Права на процесс
Вам виднее.
Не имел почти никакого опыта работы с серверами FTP - но предположу, что эти proftpd, vsftpd просто-напросто запускаются в среде chroot, потому и позволяют логиниться рутом.
З.Ы.: ну а если ftpd запущен под рутом, то почему бы ему не выполнять операции от рута...
-
nerezus
- Сообщения: 525
- Статус: Вселенский отказник
- ОС: windoze
Re: Права на процесс
нену а если ftpd запущен под рутом
непросто-напросто запускаются в среде chroot
ICQ 547097
-
Uncle_Theodore
- Сообщения: 3339
- ОС: Slackware 12.2, ArchLinux 64
-
serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
Re: Права на процесс
nerezus
Звучит как "я хочу чего-то, но сам не знаю чего".
Звучит как "я хочу чего-то, но сам не знаю чего".
-
nerezus
- Сообщения: 525
- Статус: Вселенский отказник
- ОС: windoze
Re: Права на процесс
ога, дайте ШОТА.Звучит как "я хочу чего-то, но сам не знаю чего".
Как оказалось, этим «что-то» является PAM. Теперь ищу, как его юзать.
ICQ 547097
-
serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
Re: Права на процесс
Найдете - сообщите "как".