Monday Dec 18, 2006
Monday Dec 18, 2006
Another network feature that won't work in a non-global zone in Solaris 10 3/05, 1/06, or 6/06 is the service "dhcp-server". I wondered if appropriate privileges could be assigned to a zone, using Solaris 10 11/06, in order to enable that service to work properly in a non-global zone.
But how do you know which privilege(s) are needed? Although a tool to analyze an executable (and the libraries that it uses) for necessary privileges would be very useful, I am not aware of such a tool. However, there is a tool which will analyze a running program: privdebug.
I used dhcpmgr(1M) to configure the global zone of one Solaris 10 system to be a DHCP server, and told another Solaris 10 system to be a DHCP client by creating the appropriate /etc/dhcp.<interface-name> file. Then I ran privdebug to start gathering data.
After running privdebug as:
# ./privdebug.pl -n in.dhcpd -v -fits output looked something like this (abbreviated slightly):
STAT TIMESTAMP PPID PID PRIV CMD USED 481061858324 7 1489 proc_fork in.dhcpd USED 481063008106 1489 1490 sys_resource in.dhcpd USED 481067169173 1489 1490 net_privaddr in.dhcpd USED 481067214515 1489 1490 net_privaddr in.dhcpd USED 481067261082 1489 1490 net_privaddr in.dhcpd USED 7602182665254 7 2307 proc_fork in.dhcpd USED 7602184084176 2307 2308 sys_resource in.dhcpd USED 7602195780436 1 2308 net_privaddr in.dhcpd USED 7602195826717 1 2308 net_privaddr in.dhcpd USED 7602195874362 1 2308 net_privaddr in.dhcpd USED 7617671777513 1 2308 net_icmpaccess in.dhcpd USED 7618028208673 1 2308 sys_net_config in.dhcpd USED 7618028224029 1 2308 sys_net_config in.dhcpd USED 7618028622618 1 2308 sys_net_config in.dhcpd USED 7618937845453 1 2308 sys_net_config in.dhcpd USED 7618937861126 1 2308 sys_net_config in.dhcpd USED 7786427652239 1 2308 net_icmpaccess in.dhcpd USED 7786782253121 1 2308 sys_net_config in.dhcpd USED 7786782266742 1 2308 sys_net_config in.dhcpd USED 7786782417242 1 2308 sys_net_config in.dhcpdWith that list, it was easy to check each of the privileges that in.dhcpd used against the list of privileges that are allowed in a non-global zone.
Although proc_fork, sys_resource, net_privaddr and net_icmpaccess are in a non-global zone's default list of privileges, sys_net_config is not allowed in a non-global zone. Because of that, a non-global zone cannot be a DHCP server using Solaris 10 11/06.
That was a fun experiment, but in order to make a non-global zone a DHCP server we must wait for the Crossbow project to add sufficient IP instance functionality, along with its new sys_ip_config privilege. The latter will be allowed in a non-global zone.
Posted by Brian Utterback on February 01, 2007 at 06:08 PM EST #