Как usermod позволяет вам обойти sudo?

Недавно у моей команды было шоу-шоу, и я представил свои выводы на Докере . Я объяснил, как вы можете установить Docker с помощью:

curl -sSL https://get.docker.com/ | sh

Затем я объяснил, что при этой установке вам нужно ставить перед всеми командами Docker префикс sudo (например, sudo docker info), если вы не запускаете:

sudo usermod -aG docker myUser

Как только вы это сделаете, вы можете просто запустить, скажем, docker info.

Другой младший инженер спросил меня, как работает эта команда usermod, и я объяснил это, как я понимаю пользователей / группы Linux:

  • Все двоичные файлы Docker установлены в системе, принадлежащей группе named docker
  • Так как myUser по умолчанию не является членом docker, у него нет прав rwx, чтобы что-либо делать с двоичными файлами Docker
  • Так что решение состоит в том, чтобы использовать либо sudo, который дает вам разрешение root для данной команды или дает myUser членство в группе docker

Когда я объяснил это так, старший инженер очень резко сказал мне, что я неправильно, и что « это немного сложнее, чем это. »

Поэтому я спрашиваю: не понимаю ли я здесь модель безопасности Linux, и правильный ли старший инженер? Если так, что я пропускаю (и что, черт возьми, "так сложно")? Или я прав, и в этом случае кто-то может указать мне какую-то убедительную документацию, чтобы доказать это?

-1
задан 30 September 2015 в 02:59

2 ответа

Все двоичные файлы Докера установлены в системе, принадлежащей группе, названной докером

Неправильный. docker двоичный файл принадлежит root:root:

$ stat `which docker`
  File: ‘/usr/bin/docker’
  Size: 16296881    Blocks: 31832      IO Block: 4096   regular file
Device: fc00h/64512d    Inode: 143202      Links: 1
Access: (0755/-rwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)

Так как myUser не является по умолчанию членом докера, он не имеет никаких rwx полномочий сделать что-либо с двоичными файлами Докера

Двоичные файлы читаемы и исполняемы всеми.

Таким образом, решение состоит в том, чтобы или использовать sudo, который дает Вам корневое разрешение для данной команды, или дать myUser членство в группе докера

Услуги Докера используют сокет для прислушиваний к командам. Сокет обычно:

  • расположенный в /var/run/docker.sock
  • принадлежавший root:docker
  • и перезаписываемый группой, но не читаемый или записываемый другими:

Например:

$ stat /var/run/docker.sock
  File: ‘/var/run/docker.sock’
  Size: 0           Blocks: 0          IO Block: 4096   socket
Device: 10h/16d Inode: 13619       Links: 1
Access: (0660/srw-rw----)  Uid: (    0/    root)   Gid: (  997/  docker)

Именно поэтому будучи членом docker группа позволяет Вам работать docker команды.

Обратите внимание, что можно указать, какая группа должна привыкнуть в качестве параметра к docker сервис. От man docker:

   -G, --group=""
 Group  to assign the unix socket specified by -H when running in dae‐
   mon mode.
 use '' (the empty string) to disable setting of a group.  Default  is
   docker.

Так, это не должно быть docker, но это docker по умолчанию.

0
ответ дан 30 September 2015 в 12:59
  • 1
    @Michael Вы могли также отредактировать grub.conf, поскольку это - то, куда параметры ядра прибывают из. – Nattgew 20 December 2016 в 11:00

Если Вы говорите о том, как безопасный Linux и Уязвимость, это может иметь да. Если я понимаю то, что Вы просите достаточно ясно, чтобы ответ для Вас был да, и мое объяснение состоит в том, что Linux независимо от распределения к моему знанию может заразиться вирусами как любая другая операционная система, зависящая, что Вы устанавливаете или нет. Возьмите Flash player для примеров даже на окнах, которые он дает многим дефектам безопасности в операционной системе, делающей это более уязвимый, чем прежде, когда это было только вне поля

при выполнении Linux без рабочего стола и всего, что другое необычное полномочие он будет, если я не ошибусь быть более безопасным, чем со всеми нашими любимыми приложениями, и такой я не знаю, помог ли мой ответ, но я надеюсь, что это сделало

0
ответ дан 30 September 2015 в 12:59
  • 1
    I' m приходящийся нелегко понимающий точно, как продолжить двигаться отсюда. Я любой должен прервать процесс начальной загрузки так или иначе (это происходит действительно быстрое, настолько нажимающее правильную клавишу в точно правильное время, я предполагаю), и затем введите правильный материал для ручной начальной загрузки передачи параметров ядра, или... то, что моя единственная опция? – Michael 20 December 2016 в 10:06

Другие вопросы по тегам:

Похожие вопросы: