Ask for admin password in ipa-adtrust-install

The credentials of the admin user will be used to obtain Kerberos ticket before
configuring  cross-realm  trusts  support and afterwards, to ensure that the
ticket contains MS-PAC information required to actually add a trust with Active
Directory domain via 'ipa trust-add --type=ad' command.

https://fedorahosted.org/freeipa/ticket/2852
This commit is contained in:
Alexander Bokovoy
2012-08-24 16:16:58 +03:00
parent 1328f984d0
commit 191f514640
2 changed files with 46 additions and 0 deletions
+37
View File
@@ -55,6 +55,12 @@ def parse_options():
"UIDs and GIDs to RIDs") "UIDs and GIDs to RIDs")
parser.add_option("-U", "--unattended", dest="unattended", action="store_true", parser.add_option("-U", "--unattended", dest="unattended", action="store_true",
default=False, help="unattended installation never prompts the user") default=False, help="unattended installation never prompts the user")
parser.add_option("-a", "--admin-password",
sensitive=True, dest="admin_password",
help="admin user kerberos password")
parser.add_option("-A", "--admin-name",
sensitive=True, dest="admin_name", default='admin',
help="admin user principal")
options, args = parser.parse_args() options, args = parser.parse_args()
safe_options = parser.get_safe_opts(options) safe_options = parser.get_safe_opts(options)
@@ -85,6 +91,21 @@ def read_netbios_name(netbios_default):
return netbios_name return netbios_name
def read_admin_password(admin_name):
print "Configuring cross-realm trusts for IPA server requires password for user '%s'." % (admin_name)
print "This user is a regular system account used for IPA server administration."
print ""
admin_password = read_password(admin_name, confirm=False, validate=None)
return admin_password
def ensure_admin_kinit(admin_name, admin_password):
try:
ipautil.run(['kinit', admin_name], stdin=admin_password+'\n')
except ipautil.CalledProcessError, e:
print "There was error to automatically re-kinit your admin user ticket."
return False
return True
def main(): def main():
safe_options, options = parse_options() safe_options, options = parse_options()
@@ -193,6 +214,16 @@ def main():
if not options.unattended and ( not netbios_name or not options.netbios_name): if not options.unattended and ( not netbios_name or not options.netbios_name):
netbios_name = read_netbios_name(netbios_name) netbios_name = read_netbios_name(netbios_name)
admin_password = options.admin_password
if not (options.unattended or admin_password):
admin_password = read_admin_password(options.admin_name)
admin_kinited = None
if admin_password:
admin_kinited = ensure_admin_kinit(options.admin_name, admin_password)
if not admin_kinited:
print "Proceeding with credentials that existed before"
try: try:
ctx = krbV.default_context() ctx = krbV.default_context()
ccache = ctx.default_ccache() ccache = ctx.default_ccache()
@@ -252,6 +283,12 @@ You may want to choose to REJECT the network packets instead of DROPing
them to avoid timeouts on the AD domain controllers. them to avoid timeouts on the AD domain controllers.
============================================================================= =============================================================================
"""
if admin_password:
admin_kinited = ensure_admin_kinit(options.admin_name, admin_password)
if not admin_kinited:
print """
WARNING: you MUST re-kinit admin user before using 'ipa trust-*' commands WARNING: you MUST re-kinit admin user before using 'ipa trust-*' commands
family in order to re-generate Kerberos tickets to include AD-specific family in order to re-generate Kerberos tickets to include AD-specific
information""" information"""
+9
View File
@@ -41,6 +41,15 @@ Do not create DNS service records for Windows in managed DNS server
.TP .TP
\fB\-U\fR, \fB\-\-unattended\fR \fB\-U\fR, \fB\-\-unattended\fR
An unattended installation that will never prompt for user input An unattended installation that will never prompt for user input
.TP
\fB\-A\fR, \fB\-\-admin\-name\fR=\fIADMIN_NAME\fR
The name of the user with administrative privileges for this IPA server. Defaults to 'admin'.
.TP
\fB\-a\fR, \fB\-\-admin\-password\fR=\fIpassword\fR
The password of the user with administrative privileges for this IPA server. Will be asked interactively if \fB\-U\fR is not specified.
.TP
The credentials of the admin user will be used to obtain Kerberos ticket before configuring cross-realm trusts support and afterwards, to ensure that the ticket contains MS-PAC information required to actually add a trust with Active Directory domain via 'ipa trust-add --type=ad' command.
.TP
.SH "EXIT STATUS" .SH "EXIT STATUS"
0 if the installation was successful 0 if the installation was successful