Bug 1039481

Summary: augeas can't parse sudoers.conf if user alias with capital letters appear
Product: Red Hat Enterprise Linux 6 Reporter: Sven Sternberger <sven.sternberger>
Component: augeasAssignee: Dominic Cleal <dcleal>
Status: CLOSED DUPLICATE QA Contact: Virtualization Bugs <virt-bugs>
Severity: medium Docs Contact:
Priority: unspecified    
Version: 6.5CC: jcpunk
Target Milestone: rc   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-12-09 09:27:38 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description Sven Sternberger 2013-12-09 09:13:41 UTC
Description of problem:
I use in my /etc/sudoers config file a line like this

ALL ALL=NOPASSWD: /path/to/command

to allow all user to execute a command as root without password.

With the update to augeas 1.0.0-5.el6 this file can't be 
parsed/produced by augeas anymore due to a bug in the related lens.
/usr/share/augeas/lenses/dist/sudoers.aug

How reproducible:

Steps to Reproduce:
1. Enter a line like this to /etc/sudoers
ALL ALL=NOPASSWD: /path/to/command
2. Call augtool
3. in augtool>
print /files/etc/sudoers
print /augeas/files/etc/sudoers/error/

Actual results:
The file /etc/sudoers isn't loaded by augtool, errors appear

Expected results:
The file /etc/sudoers is loaded by augtool

Additional info:
The problem is that user aliases with capital letters are not
allowed (in the example "ALL")

it is easy to find in the source

1.0.0-5.el6 version (buggy):
----------------------------
let sto_to_com_user =
      let nis_re = /([A-Z]([-A-Z0-9]|(\\\\[ \t]))*+\\\\\\\\)/
   in let user_re = /[%+@a-z]([-a-z0-9]|(\\\\[ \t]))*/
   in store (nis_re? . user_re)


1.1 version (correct): 
----------------------
let sto_to_com_user =
      let nis_re = /([A-Z]([-A-Z0-9]|(\\\\[ \t]))*+\\\\\\\\)/
   in let user_re = /[%+@a-z]([-a-z0-9._]|(\\\\[ \t]))*/
   in let alias_re = /[A-Z_]+/
   in store ((nis_re? . user_re) | alias_re)

Version-Release number of selected component (if applicable):
augeas-1.0.0-5.el6.x86_64

Comment 1 Dominic Cleal 2013-12-09 09:27:38 UTC

*** This bug has been marked as a duplicate of bug 1016904 ***