** Description changed: [ Impact ] The MOTD policy sets the message of the day text for domain joined linux computers to which the policy applies. The message can be set with "samba-tool gpo manage motd set", but due to this bug, it can only be set once, and not updated again (unless removed, and recreated). If an attempt is made to try to update an existing MOTD policy, with samba-tool, it will crash. [ Test Plan ] Deploy samba active directory controller in noble. Here[1] is a how-to guide. Next, run this test command, twice. With the bug, it will always crash after the first run (update the password with whatever password your Administrator user has): ubuntu@o-ad:~$ sudo samba-tool gpo manage motd set {31B2F340-016D-11D2-945F-00C04FB984F9} "Welcome" -U Administrator%Passw0rd WARNING: Using passwords on command line is insecure. Installing the setproctitle python module will hide these from shortly after program start. ubuntu@o-ad:~$ sudo samba-tool gpo manage motd set {31B2F340-016D-11D2-945F-00C04FB984F9} "Welcome" -U Administrator%Passw0rd WARNING: Using passwords on command line is insecure. Installing the setproctitle python module will hide these from shortly after program start. ERROR(<class 'UnboundLocalError'>): uncaught exception - cannot access local variable 'data' where it is not associated with a value File "/usr/lib/python3/dist-packages/samba/netcmd/__init__.py", line 285, in _run return self.run(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/samba/netcmd/gpo.py", line 3837, in run text = ET.SubElement(data, 'text') ^^^^ With the fixed version, the second and subsequent runs won't crash, allowing the MOTD text to be updated. And finally, confirm with the command below that the motd text was set as expected. In our examples so far, that would be the word "Welcome": $ sudo samba-tool gpo manage motd list {31B2F340-016D-11D2-945F-00C04FB984F9};echo Welcome - - 1. https://documentation.ubuntu.com/server/how-to/samba/provision-samba-ad-controller/ + 1. https://documentation.ubuntu.com/server/how-to/samba/provision-samba- + ad-controller/ [ Where problems could occur ] This is changing the code that deals specifically with the MOTD GPO, nothing else, so regressions there could manifest themselves in failures to apply that policy, or even syntax errors in the policy file (given this is XML after all). - I suspect the GPO code in general, in samba-tool, has not seen much use so far, because while trying to reproduce - This bug was found while trying to reproduce https://bugs.launchpad.net/ubuntu/+source/samba/+bug/2078854 (bug 1), this bug here was found, and yet another one at https://bugs.launchpad.net/ubuntu/+source/samba/+bug/2088094 (bug 2). So a simple attempt at using "samba-tool gpo" uncovered 3 bugs in total, and I wouldn't be surprised if more are found. It's one of those cases where when you fix one bug, the tool advances another step and might uncover another bug, and so on. But we are making progress. + This bug was found while trying to reproduce + https://bugs.launchpad.net/ubuntu/+source/samba/+bug/2078854, this bug + here was found, and yet another one at + https://bugs.launchpad.net/ubuntu/+source/samba/+bug/2088094. So a + simple attempt at using "samba-tool gpo" uncovered 3 bugs in total, and + I wouldn't be surprised if more are found. It's one of those cases where + when you fix one bug, the tool advances another step and might uncover + another bug, and so on. But we are making progress. [ Other Info ] Not at this time. [ Original Description ] When an motd policy already exists, the "set" command fails: root@n-ad:~# samba-tool gpo manage motd set $gpo "Welcome" -U Administrator%Passw0rd WARNING: Using passwords on command line is insecure. Installing the setproctitle python module will hide these from shortly after program start. ERROR(<class 'UnboundLocalError'>): uncaught exception - cannot access local variable 'data' where it is not associated with a value File "/usr/lib/python3/dist-packages/samba/netcmd/__init__.py", line 279, in _run return self.run(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/samba/netcmd/gpo.py", line 3829, in run text = ET.SubElement(data, 'text') ^^^^ Filed upstream as https://bugzilla.samba.org/show_bug.cgi?id=15774 This might be a fix (untested): diff --git a/python/samba/netcmd/gpo.py b/python/samba/netcmd/gpo.py index 96fce917f0f..fe9b7caacb2 100644 --- a/python/samba/netcmd/gpo.py +++ b/python/samba/netcmd/gpo.py @@ -3808,7 +3808,9 @@ samba-tool gpo manage motd set {31B2F340-016D-11D2-945F-00C04FB984F9} "Message f return try: - xml_data = ET.fromstring(conn.loadfile(vgp_xml)) + xml_data = ET.ElementTree(ET.fromstring(conn.loadfile(vgp_xml))) + policysetting = xml_data.getroot().find('policysetting') + data = policysetting.find('data') except NTSTATUSError as e: if e.args[0] in [NT_STATUS_OBJECT_NAME_INVALID, NT_STATUS_OBJECT_NAME_NOT_FOUND,
** Description changed: [ Impact ] The MOTD policy sets the message of the day text for domain joined linux computers to which the policy applies. The message can be set with "samba-tool gpo manage motd set", but due to this bug, it can only be set once, and not updated again (unless removed, and recreated). If an attempt is made to try to update an existing MOTD policy, with samba-tool, it will crash. [ Test Plan ] Deploy samba active directory controller in noble. Here[1] is a how-to guide. Next, run this test command, twice. With the bug, it will always crash after the first run (update the password with whatever password your Administrator user has): ubuntu@o-ad:~$ sudo samba-tool gpo manage motd set {31B2F340-016D-11D2-945F-00C04FB984F9} "Welcome" -U Administrator%Passw0rd WARNING: Using passwords on command line is insecure. Installing the setproctitle python module will hide these from shortly after program start. ubuntu@o-ad:~$ sudo samba-tool gpo manage motd set {31B2F340-016D-11D2-945F-00C04FB984F9} "Welcome" -U Administrator%Passw0rd WARNING: Using passwords on command line is insecure. Installing the setproctitle python module will hide these from shortly after program start. ERROR(<class 'UnboundLocalError'>): uncaught exception - cannot access local variable 'data' where it is not associated with a value File "/usr/lib/python3/dist-packages/samba/netcmd/__init__.py", line 285, in _run return self.run(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/samba/netcmd/gpo.py", line 3837, in run text = ET.SubElement(data, 'text') ^^^^ With the fixed version, the second and subsequent runs won't crash, allowing the MOTD text to be updated. And finally, confirm with the command below that the motd text was set as expected. In our examples so far, that would be the word "Welcome": $ sudo samba-tool gpo manage motd list {31B2F340-016D-11D2-945F-00C04FB984F9};echo Welcome 1. https://documentation.ubuntu.com/server/how-to/samba/provision-samba- ad-controller/ [ Where problems could occur ] This is changing the code that deals specifically with the MOTD GPO, nothing else, so regressions there could manifest themselves in failures to apply that policy, or even syntax errors in the policy file (given this is XML after all). This bug was found while trying to reproduce - https://bugs.launchpad.net/ubuntu/+source/samba/+bug/2078854, this bug - here was found, and yet another one at + https://bugs.launchpad.net/ubuntu/+source/samba/+bug/2078854 at first. + Then this bug here was found, and later another one at https://bugs.launchpad.net/ubuntu/+source/samba/+bug/2088094. So a simple attempt at using "samba-tool gpo" uncovered 3 bugs in total, and I wouldn't be surprised if more are found. It's one of those cases where when you fix one bug, the tool advances another step and might uncover another bug, and so on. But we are making progress. [ Other Info ] Not at this time. [ Original Description ] When an motd policy already exists, the "set" command fails: root@n-ad:~# samba-tool gpo manage motd set $gpo "Welcome" -U Administrator%Passw0rd WARNING: Using passwords on command line is insecure. Installing the setproctitle python module will hide these from shortly after program start. ERROR(<class 'UnboundLocalError'>): uncaught exception - cannot access local variable 'data' where it is not associated with a value File "/usr/lib/python3/dist-packages/samba/netcmd/__init__.py", line 279, in _run return self.run(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/samba/netcmd/gpo.py", line 3829, in run text = ET.SubElement(data, 'text') ^^^^ Filed upstream as https://bugzilla.samba.org/show_bug.cgi?id=15774 This might be a fix (untested): diff --git a/python/samba/netcmd/gpo.py b/python/samba/netcmd/gpo.py index 96fce917f0f..fe9b7caacb2 100644 --- a/python/samba/netcmd/gpo.py +++ b/python/samba/netcmd/gpo.py @@ -3808,7 +3808,9 @@ samba-tool gpo manage motd set {31B2F340-016D-11D2-945F-00C04FB984F9} "Message f return try: - xml_data = ET.fromstring(conn.loadfile(vgp_xml)) + xml_data = ET.ElementTree(ET.fromstring(conn.loadfile(vgp_xml))) + policysetting = xml_data.getroot().find('policysetting') + data = policysetting.find('data') except NTSTATUSError as e: if e.args[0] in [NT_STATUS_OBJECT_NAME_INVALID, NT_STATUS_OBJECT_NAME_NOT_FOUND, -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/2092308 Title: Backtrace when running "gpo manage motd set" to update an existing motd policy To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/samba/+bug/2092308/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs