The OpenNET Project / Index page

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

Изменение 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
Раздел:    Корень / Администратору / Система / 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.
    .....
    по русски здесь же - https://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 (ok), 22:54, 22/11/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Типа, все на благо хацкера? =)
     
     
  • 2.9, PereresusNeVlezaetBuggy (ok), 17:04, 23/11/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Типа, все на благо хацкера? =)

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

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

     

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




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

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