** Description changed:

+ === Begin SRU Template ===
+ [Impact] 
+ The only way to assign a hashed password to a user is to use passwd within a
+ users entry like this:
+  users:
+    - name: root 
+      passwd: $6$Cl....Hy$IEJciQZLxQLzkST......g.bzqf3lUl.
+    
+ But, if that user is already present on the system, cloud-init would skip
+ setting the password.  The change was to add support for providing
+ encrypted passwords to 'chpasswd' as:
+    
+  chpasswd:
+    list: |
+      user:$5$eriogqzq$Dg7PxHsKGzziuEGkZgkLvacjuEFeljJ.rLf.hZqKQLA
+    
+ [Test Case]
+ There is an integration test in cloud-init that runs though this code.
+ To run that:
+ 
+ $ git clone https://git.launchpad.net/cloud-init
+ $ cd cloud-init
+ 
+ # download the appropriate deb for cloud-init from -proposed
+ # to
+ $ rel=xenial
+ $ 
http://archive.ubuntu.com/ubuntu/pool/main/c/cloud-init/cloud-init_0.7.9-48-g1c795b9-0ubuntu1~16.04.1_all.deb
+ $ pver=$(rmadison --url=ubuntu --suite=$rel-proposed cloud-init |
+        awk '{print $3}')
+ $ fname="cloud-init_${pver}_all.deb"
+ $ wget "http://archive.ubuntu.com/ubuntu/pool/main/c/cloud-init/$fname";
+ $ ln -sf $fname cloud-init_all.$rel.deb 
+ $ tox -e citest -- run -v -n $rel --deb=cloud-init_all.$rel.deb \
+    -t tests/cloud_tests/testcases/modules/set_password_list_string.py \
+    -t tests/cloud_tests/testcases/modules/set_password_list.py
+ 
+ That will install the new cloud-init into a container and run
+ with user data to excercise this new feature.
+    
+ [Regression Potential]
+ Some user passwords provided via chpasswd and starting with '$' 
+ may be interpreted as hashed passwords.
+ Specifically, those matching: r'\$[1,2a,2y,5,6](\$.+){2}'
+ 
+ If a user hits this, they'd be unable to reach a new instance.
+  
+ [Other Info]
+    
+ === End SRU Template ===
+ 
+ 
  The only way to assign a hashed password to a user is to use passwd within a 
users entry like this:
  users:
-    - name: root
-      passwd: $6$Cl....Hy$IEJciQZLxQLzkST......g.bzqf3lUl.
+    - name: root
+      passwd: $6$Cl....Hy$IEJciQZLxQLzkST......g.bzqf3lUl.
  
  But, if that user is already present on the system, cloud-init will skip 
setting the password:
  journal: [CLOUDINIT] __init__.py[INFO]: User root already exists, skipping.
  
  You can change password with chpasswd, but that only supports clear-text
  password.
  
  Requesting that chpasswd get support for setting a hashed password to
  users.

** Description changed:

  === Begin SRU Template ===
- [Impact] 
+ [Impact]
  The only way to assign a hashed password to a user is to use passwd within a
  users entry like this:
-  users:
-    - name: root 
-      passwd: $6$Cl....Hy$IEJciQZLxQLzkST......g.bzqf3lUl.
-    
+  users:
+    - name: root
+      passwd: $6$Cl....Hy$IEJciQZLxQLzkST......g.bzqf3lUl.
+ 
  But, if that user is already present on the system, cloud-init would skip
  setting the password.  The change was to add support for providing
  encrypted passwords to 'chpasswd' as:
-    
-  chpasswd:
-    list: |
-      user:$5$eriogqzq$Dg7PxHsKGzziuEGkZgkLvacjuEFeljJ.rLf.hZqKQLA
-    
+ 
+  chpasswd:
+    list: |
+      user:$5$eriogqzq$Dg7PxHsKGzziuEGkZgkLvacjuEFeljJ.rLf.hZqKQLA
+ 
  [Test Case]
  There is an integration test in cloud-init that runs though this code.
  To run that:
  
  $ git clone https://git.launchpad.net/cloud-init
  $ cd cloud-init
  
  # download the appropriate deb for cloud-init from -proposed
  # to
  $ rel=xenial
  $ 
http://archive.ubuntu.com/ubuntu/pool/main/c/cloud-init/cloud-init_0.7.9-48-g1c795b9-0ubuntu1~16.04.1_all.deb
  $ pver=$(rmadison --url=ubuntu --suite=$rel-proposed cloud-init |
-        awk '{print $3}')
+        awk '{print $3}')
  $ fname="cloud-init_${pver}_all.deb"
  $ wget "http://archive.ubuntu.com/ubuntu/pool/main/c/cloud-init/$fname";
- $ ln -sf $fname cloud-init_all.$rel.deb 
+ $ ln -sf $fname cloud-init_all.$rel.deb
  $ tox -e citest -- run -v -n $rel --deb=cloud-init_all.$rel.deb \
-    -t tests/cloud_tests/testcases/modules/set_password_list_string.py \
-    -t tests/cloud_tests/testcases/modules/set_password_list.py
+    -t tests/cloud_tests/testcases/modules/set_password_list_string.py \
+    -t tests/cloud_tests/testcases/modules/set_password_list.py
  
  That will install the new cloud-init into a container and run
  with user data to excercise this new feature.
-    
+ 
  [Regression Potential]
- Some user passwords provided via chpasswd and starting with '$' 
+ Some user passwords provided via chpasswd and starting with '$'
  may be interpreted as hashed passwords.
  Specifically, those matching: r'\$[1,2a,2y,5,6](\$.+){2}'
  
- If a user hits this, they'd be unable to reach a new instance.
-  
+ In english, that regex is:
+   - starts with a '$'
+   - followed by '1', '2a', '2y', '5', '6'
+   - followed by a $
+   - followed by 1 or more characters
+   - followed by another $
+   - followed by 1 or more characters
+ 
+ So a total of 3 '$' and starting with one of those specific 3 or 4
+ character strings.  That could definitely happen, but it is low odds, and 
also fairly low risk.  If a user hits this, they'd be unable to reach a new 
instance.
+ 
  [Other Info]
-    
+ 
  === End SRU Template ===
- 
  
  The only way to assign a hashed password to a user is to use passwd within a 
users entry like this:
  users:
     - name: root
       passwd: $6$Cl....Hy$IEJciQZLxQLzkST......g.bzqf3lUl.
  
  But, if that user is already present on the system, cloud-init will skip 
setting the password:
  journal: [CLOUDINIT] __init__.py[INFO]: User root already exists, skipping.
  
  You can change password with chpasswd, but that only supports clear-text
  password.
  
  Requesting that chpasswd get support for setting a hashed password to
  users.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1570325

Title:
  RFE: chpasswd in cloud-init should support hashed passwords

To manage notifications about this bug go to:
https://bugs.launchpad.net/cloud-init/+bug/1570325/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to