И снова выступлю с предупреждением о возможности возникновения проблемы там, где её совсем не ждали.
Предположим, Вы уже настроили RBAC для предоставления доступа пользователей в их зоны. И, соответственно, Вашим пользователям назначен профиль Zone Management, без которого попать в свою зону без ввода пароля они не могут. Но в Вашей сети на системах используется не только Solaris 11, но и Solaris 10, и для всем систем под Solaris используются общая база пользователей в LDAP.
Вроде бы всё хорошо, нужным пользователям разрешён доступ в их зоны, все довольны и ничего не предвещало беды. Пока не понадобилось создать еще несколько зон уже на Solaris 10 и выдать доступ к ним другим пользователям. Тут то и выяснилось, что в Solaris 10 нет возможности назначить права доступа пользователю в конкретную зону, только всё или ничего. Но еще более страшное открылось при изучени на Solaris 10 файла /etc/security/exec_attr
, в котором оказались следующие строки:
Zone Management:solaris:cmd:::/usr/sbin/txzonemgr:uid=0
Zone Management:solaris:cmd:::/usr/sbin/zlogin:uid=0
Zone Management:solaris:cmd:::/usr/sbin/zoneadm:uid=0
Zone Management:solaris:cmd:::/usr/sbin/zonecfg:uid=0
В Solaris 11 для выполнения выполнения команды zonecfg
необходимо иметь профиль Zone Security. А вот в Solaris 10 все пользователи, имеющие профиль Zone Management, могут работать с командой zonecfg
, а значит могут создавать, изменять и удалять зоны. К чему это может привести в понимающих руках догадаться не сложно:
$ pfexec zonecfg -z test
zonecfg:test> create
zonecfg:test> set zonepath=/export/zones/test
zonecfg:test> set autoboot=false
zonecfg:test> add fs
zonecfg:test:fs> set dir=/global
zonecfg:test:fs> set special=/etc
zonecfg:test:fs> set type=lofs
zonecfg:test:fs> end
zonecfg:test> commit
$ zoneadm -z test install
$ zoneadm -z test boot
$ zlogin test
# grep -c root /global/shadow
1
Для решения данной проблемы на имеющихся системах под управлением Solaris 11 был создан новый профиль Zone Login, для чего был создан новый файл /etc/security/prof_attr.d/zonelogin
со следущим содержимым:
Zone Login:RO::\
Zones Virtual Application Environment Login:\
help=RtZoneMngmnt.html
Назначено этому профилю разрешение запускать zlogin
, создав файл /etc/security/exec_attr.d/zonelogin
с содержимым:
Zone Login:solaris:cmd:RO::/usr/sbin/zlogin:euid=0
И поменян всем имевшим доступ к зонам пользователям профиль на Zone Login. Заодно запретив тем самым этим пользователям переустанавливать зоны.
А вот на Solaris 10 пришлось генерировать пароли для пользователей в зонах и предоставлять доступ по ssh.