The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Безопасное изменение uid-а пользователя, !*! phpcoder, 17-Июл-07, 17:06  [смотреть все]
Здравствуйте!

Есть пользователь admin, у которого в данный момент uid == 0, т.е. по сути это тот же рут. Хочу понизить этого пользователя сделав его обычным, а все операции, которые он делает производить через sudo.

Одним из условий изменения uid'а admin'у является сделать это в автоматическом режиме, т.е. без ручного вмешательства и без перезагрузки/релогина. Это возможно?

Если я работаю под пользователем админ с uid==0. Запускаю скрипт, который делает userdel admin. Что в таком случае будет? Я буду продолжать работать в системе? Что будет со скриптом? А потом этот скрипт сделает useradd admin с другим uid'ом. Опять же хочется узнать что будет с уже залогинившимся пользователем? На него это не повлияет, ведь по uid'у он root.. Да? И уже после релогина admin станет непривелигированным пользователем, я правильно понимаю?

Кто-нибудь подобное уже делал? Какие могут быть проблемы?

Буду рад услышать ответы/советы. Спасибо!

  • Безопасное изменение uid-а пользователя, !*! vic, 17:56 , 17-Июл-07 (1)
    Это переименованный root или второй юзер с uid = 0?
    Дальше все зависит от этого.
    • Безопасное изменение uid-а пользователя, !*! phpcoder, 10:52 , 18-Июл-07 (2)
      >Это переименованный root или второй юзер с uid = 0?

      Второй user с uid == 0


      • Безопасное изменение uid-а пользователя, !*! vic, 16:04 , 19-Июл-07 (3)
        >>Это переименованный root или второй юзер с uid = 0?
        >
        >Второй user с uid == 0

        Попробую ответить. Если че навру, то думаю что меня поправят :)

        Юзер это (по большому счету) запись в конфиге системы, т.е. когда юзер логинится, то для него запускается либо шелл, либо сразу какая-нить программа (и то и другое - просто процесс) со сменой UID на тот что ассоциирован с этим юзером в конфиге (passwd).

        Вторая запись с uid 0 в конфиге - просто вторая запись, то есть для системы это все же тот же рут, т.е. ее вроде бы можно безболезненно удалить (однако есть нюансы если у него группа другая). Все равно для системы все что запущенно этим пользователем - рутовые процессы.

        Удаление записи из конфига никак не влияет на текущие процессы, т.к. ядро не будет заниматься мониторингом /etc/passwd на предмет а не потерли ли юзера. Сюрпризы начинаются только в тот момент когда процесс запущенный удаленным юзером пытается делать системные вызовы или другие операции требующие проверки permissions. Если все проверки сводятся к проверке UID, то ничего не изменится (т.к. root:)). Иначе либо спам в логах либо core dump   конкретного процесса (это уже зависит от того насколько программист часто делает проверки в коде).

        Нельзя изменить uid _работающему_ процессу из вне, это может только он сам функцией setuid(). Т.е. для конкретного процесса потребуется перезапуск от имени нового уже непривилегированного admin.

        Скрипт (в топике упоминается скрипт) это набор процессов, запускающие друг друга, они наследуют uid родительского процесса (не пользователя), таким образом системе вообще пофик на наличие юзера в конфиге. Вы можете даже с помощью функции setuid() поменять процессу uid на число не присутствующее в /etc/passwd :) Т.е. скрипт продолжит работать (с нюансами).

        После смены uid в конфиге заново залогинившийся admin будет уже непривилегированным юзером (uid!=0). При надо помнить что все что натворил предыдущий юзер admin (файлы и т.п.) будет иметь uid=0 и новый юзер admin обломается при доступе к ним ибо он уже не рут, т.е. надо будет делать chown и возможно chmod.

        Заводить две записи с одним uid - плохая практика лучше так не делать.

        Главный вопрос - будут ли проблемы? Вероятно да. Во-первых, неизвестно какая ОС и какие доп средства используются (selinux, capabilities, nis'ы, стоят ли электронные замки :), и т.п.). Доп. средства могут породить какие-то свои проблемы. Во-вторых, современные никсы и линух уже довольно далеко ушли от канонических юниксов, и могут содержать дополнительные проверки на руткиты и т.п. что может стать сюрпризом в данном случае. В-третьих неизвестно чем занимается скрипт и что он запускает в свою очередь - у этих процессов/программ могут быть свои заморочки (кто знает что там программисты могли понаписать).

        Уф-ф, надеюсь поможет :)

        • Безопасное изменение uid-а пользователя, !*! phpcoder, 16:34 , 19-Июл-07 (4)
          >Уф-ф, надеюсь поможет :)

          Спасибо!

          Я уже второй день тут пробую да экспериментирую. В частности вместо userdel/useradd я решил использовать usermod -  из плюсов, как минимум, то, что пароль у пользователя останется тем же.

          Уже столкнулся с проблемами: usermod -u newuid также изменяет права файлов, которыми владеет пользователь, на новые в домашнем каталоге. Грабля в том, что у меня, в качестве, домашнего каталога пользователя admin стоит корень. В итоге... короче тестовую систему пришлось с нуля после этого переливать :)

          P.S. Система: CentOS 4.3

          • Безопасное изменение uid-а пользователя, !*! vic, 16:47 , 19-Июл-07 (5)
            >>Уф-ф, надеюсь поможет :)
            >
            >Спасибо!
            >
            >Я уже второй день тут пробую да экспериментирую. В частности вместо userdel/useradd
            >я решил использовать usermod -  из плюсов, как минимум, то,
            >что пароль у пользователя останется тем же.

            Если нужно больше контроля над операциями можно и и без утилит обойтись, просто поправив файл passwd, для этого есть vipw (vi for passwd), хотя суровые челябинские одмины юзают чисто vi :) Остальное необходимые изменения также ввести самому. Делая такие действия надо понимать что делаешь и быть очень аккуратным.

            >
            >Уже столкнулся с проблемами: usermod -u newuid также изменяет права файлов, которыми
            >владеет пользователь, на новые в домашнем каталоге. Грабля в том, что
            >у меня, в качестве, домашнего каталога пользователя admin стоит корень.

            Жесть, в таком случае утилиты могут стать опасными.. Раньше так и было - рутовый каталог и домашний каталог рута совпадали, ох уж и веселился иногда народ :)

            >
            >P.S. Система: CentOS 4.3

            Ну вроде без резко нестандартных доп. средств.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру