The OpenNET Project / Index page

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

Изменение UID работающего процесса в Solaris 10
В утилите pcred из комплекта Solaris 10 появилась возможность на лету менять 
идентификатор владельца уже запущенного процесса:

   # ps -ef | grep sleep
   vasya 4088 4081 0 09:50:53 pts/11 0:00 sleep 10000000

   # pcred -u 123 4088

   # ps -ef | grep sleep
   kolya 4088 4081 0 09:50:53 pts/11 0:00 sleep 10000000
 
22.11.2008 , Автор: ikorolev , Источник: http://www.unixpin.com/wordpress/20...
Ключи: solaris, proccess, uid, pcred / Лицензия: CC-BY
Раздел:    Корень / Администратору / Система / Solaris специфика

Обсуждение [ Линейный режим | Показать все | RSS ]
 
  • 1.1, guest, 23:42, 21/11/2008 [ответить] [смотреть все]
  • +/
    Зачем?
     
     
  • 2.2, ., 23:45, 21/11/2008 [^] [ответить] [смотреть все]
  • +/
    чтобы хаксорам было проще заметать следы
     
  • 2.3, Руслан, 00:34, 22/11/2008 [^] [ответить] [смотреть все]
  • +/
    Чтобы данные, к которым процесс имеет доступ при запуске, перестали быть доступны процессу во время его работы.

    Первый пример, который мне в голову пришел - чтение файла с паролем ключа SSL и дальнейшее забывание того, как его прочесть снова.

     
     
  • 3.4, ezhik, 03:29, 22/11/2008 [^] [ответить] [смотреть все]
  • +/
    а процесс сам не может сделать setuid после открытия файла и закрыть его после чтения?
     
     
  • 4.11, BigAlex, 11:29, 24/11/2008 [^] [ответить] [смотреть все]
  • +/
    ну это еще программа должна быть правильная.
    далеко не все программы правильные...
     
  • 1.5, ezhik, 03:32, 22/11/2008 [ответить] [смотреть все]  
  • +/
    в Linux это через capability реализовано. Достаточно давно.
     
     
  • 2.7, аноним, 11:23, 23/11/2008 [^] [ответить] [смотреть все]  
  • +/
    А подробнее, как это сделать ?
     
  • 2.8, Анониум, 16:07, 23/11/2008 [^] [ответить] [смотреть все]  
  • +/
    расскажите, интересно же !
     
     
  • 3.10, vitek, 23:49, 23/11/2008 [^] [ответить] [смотреть все]  
  • +/
    $ man capabilities (или http://linux.die.net/man/7/capabilities )
    ....
    CAP_SETUID
        Allow arbitrary manipulations of process UIDs (setuid(2), setreuid(2), setresuid(2), setfsuid(2)); allow forged UID when passing socket credentials via Unix domain sockets.
    .....
    по русски здесь же - http://www.opennet.ru/man.shtml?topic=capabilities&category=7&russian=0
    ...
    CAP_SETUID
        Разрешить произвольные манипуляции UID процессов (setuid(2), etc.); разрешить ложные UID при прохождении параметров сокетов через доменные сокеты Unix.

    подробнее здесь - http://en.wikipedia.org/wiki/Capability-based_security
    p.s.:
    к сожалению они так и не стали стандартом POSIX (но в линух реализованы). отсюда имеем эту статью, т.е. "кто в лес, кто по дрова"...
     
     
  • 4.12, const, 13:24, 24/11/2008 [^] [ответить] [смотреть все]  
  • +/
    Разница с солярисной фичей в том, что линуксовый процесс может менять setuid'ом только свой uid, а в солярисе один процесс может поменять uid другого.

    В POSIX нет ничего, что требует прав администратора. И в этом есть определённый смысл. Для таких вещей можно было бы придумать отдельную спецификацию, но они всё же сильно зависимы от ОС...

     
     
  • 5.13, vitek, 14:46, 24/11/2008 [^] [ответить] [смотреть все]  
  • +/
    >Разница с солярисной фичей в том, что линуксовый процесс может менять setuid'ом только свой uid, а в солярисе один процесс может поменять uid другого.

    да. я именно это и имел в виду.
    и честно говоря не могу представить себе зачем бы мне это понадобилось.
    особенно не понятно, что будет с уже открытыми файловыми дескрипторами (и не только) в ходе такого изменения, но попробую.

     
     
  • 6.14, ezhik, 16:02, 27/11/2008 [^] [ответить] [смотреть все]  
  • +/
    вообще писал про это
    CAP_SETPCAP
      If  file  capabilities are not supported: grant or remove any capability in the caller's
      permitted capability set to or from any other process.  (This property of CAP_SETPCAP is
      not available when the kernel is configured to support file capabilities, since CAP_SET‐
      PCAP has entirely different semantics for such kernels.)

      If file capabilities are supported: add any capability from the calling thread's  bound‐
      ing  set  to  its inheritable set; drop capabilities from the bounding set (via prctl(2)
      PR_CAPBSET_DROP); make changes to the securebits flags.

    Возможно, не совсем реализована. И разница в том, что процесс может дать другому процессу cap_setuid. Только вряд ли сможет контроллировать, на какой UID тот сделает set.

     
  • 1.6, User294, 22:54, 22/11/2008 [ответить] [смотреть все]  
  • +/
    Типа, все на благо хацкера? =)
     
     
  • 2.9, PereresusNeVlezaetBuggy, 17:04, 23/11/2008 [^] [ответить] [смотреть все]  
  • +/
    >Типа, все на благо хацкера? =)

    Угу. Осталось только в motd прописать рутовый пароль ;)

    Теоретически, конечно, может быть нужно для кривых прог, которые не умеют дропать привелегии и содержат в себе проверку на запуск из-под рута - но я бы побоялся использовать такое г... изначально.

     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:



      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor