forked from ungleich-public/cdist
		
	[__acl] remove deprecated parameters, fix some bugs and improve manual
This commit is contained in:
		
					parent
					
						
							
								2885c6a248
							
						
					
				
			
			
				commit
				
					
						e3d906a85f
					
				
			
		
					 11 changed files with 26 additions and 75 deletions
				
			
		|  | @ -1,39 +0,0 @@ | ||||||
| #!/bin/sh -e |  | ||||||
| # |  | ||||||
| # 2019 Ander Punnar (ander-at-kvlt-dot-ee) |  | ||||||
| # |  | ||||||
| # This file is part of cdist. |  | ||||||
| # |  | ||||||
| # cdist is free software: you can redistribute it and/or modify |  | ||||||
| # it under the terms of the GNU General Public License as published by |  | ||||||
| # the Free Software Foundation, either version 3 of the License, or |  | ||||||
| # (at your option) any later version. |  | ||||||
| # |  | ||||||
| # cdist is distributed in the hope that it will be useful, |  | ||||||
| # but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
| # GNU General Public License for more details. |  | ||||||
| # |  | ||||||
| # You should have received a copy of the GNU General Public License |  | ||||||
| # along with cdist. If not, see <http://www.gnu.org/licenses/>. |  | ||||||
| # |  | ||||||
| 
 |  | ||||||
| # TODO check if filesystem has ACL turned on etc |  | ||||||
| 
 |  | ||||||
| if [ -f "$__object/parameter/acl" ] |  | ||||||
| then |  | ||||||
|     grep -E '^(default:)?(user|group):' "$__object/parameter/acl" \ |  | ||||||
|     | while read -r acl |  | ||||||
|     do |  | ||||||
|         param="$( echo "$acl" | awk -F: '{print $(NF-2)}' )" |  | ||||||
|         check="$( echo "$acl" | awk -F: '{print $(NF-1)}' )" |  | ||||||
| 
 |  | ||||||
|         [ "$param" = 'user' ] && db=passwd || db="$param" |  | ||||||
| 
 |  | ||||||
|         if ! getent "$db" "$check" > /dev/null |  | ||||||
|         then |  | ||||||
|             echo "missing $param '$check'" >&2 |  | ||||||
|             exit 1 |  | ||||||
|         fi |  | ||||||
|     done |  | ||||||
| fi |  | ||||||
							
								
								
									
										4
									
								
								cdist/conf/type/__acl/explorer/getent
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										4
									
								
								cdist/conf/type/__acl/explorer/getent
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,4 @@ | ||||||
|  | #!/bin/sh -e | ||||||
|  | 
 | ||||||
|  | getent passwd | awk -F: '{print "user:"$1}' | ||||||
|  | getent group | awk -F: '{print "group:"$1}' | ||||||
|  | @ -22,8 +22,8 @@ file_is="$( cat "$__object/explorer/file_is" )" | ||||||
| 
 | 
 | ||||||
| if [ "$file_is" = 'missing' ] \ | if [ "$file_is" = 'missing' ] \ | ||||||
|     && [ -z "$__cdist_dry_run" ] \ |     && [ -z "$__cdist_dry_run" ] \ | ||||||
|     && \( [ ! -f "$__object/parameter/file" ] \ |     && [ ! -f "$__object/parameter/file" ] \ | ||||||
|         || [ ! -f "$__object/parameter/directory" ] \) |     && [ ! -f "$__object/parameter/directory" ] | ||||||
| then | then | ||||||
|     exit 0 |     exit 0 | ||||||
| fi | fi | ||||||
|  | @ -47,28 +47,26 @@ then | ||||||
| elif [ -f "$__object/parameter/entry" ] | elif [ -f "$__object/parameter/entry" ] | ||||||
| then | then | ||||||
|     acl_should="$( cat "$__object/parameter/entry" )" |     acl_should="$( cat "$__object/parameter/entry" )" | ||||||
| elif [ -f "$__object/parameter/acl" ] |  | ||||||
| then |  | ||||||
|     acl_should="$( cat "$__object/parameter/acl" )" |  | ||||||
| elif |  | ||||||
|     [ -f "$__object/parameter/user" ] \ |  | ||||||
|         || [ -f "$__object/parameter/group" ] \ |  | ||||||
|         || [ -f "$__object/parameter/mask" ] \ |  | ||||||
|         || [ -f "$__object/parameter/other" ] |  | ||||||
| then |  | ||||||
|     acl_should="$( for param in user group mask other |  | ||||||
|     do |  | ||||||
|         [ ! -f "$__object/parameter/$param" ] && continue |  | ||||||
| 
 |  | ||||||
|         echo "$param" | grep -Eq 'mask|other' && sep=:: || sep=: |  | ||||||
| 
 |  | ||||||
|         echo "$param$sep$( cat "$__object/parameter/$param" )" |  | ||||||
|     done )" |  | ||||||
| else | else | ||||||
|     echo 'no parameters set' >&2 |     echo 'no parameters set' >&2 | ||||||
|     exit 1 |     exit 1 | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
|  | # instead of setfacl's non-helpful message "Option -m: Invalid argument near character X" | ||||||
|  | # let's check if target has necessary users and groups, since mistyped or missing | ||||||
|  | # users/groups in target is most common reason. | ||||||
|  | echo "$acl_should" \ | ||||||
|  |     | grep -Po '(user|group):[^:]+' \ | ||||||
|  |     | sort -u \ | ||||||
|  |     | while read -r l | ||||||
|  |     do | ||||||
|  |         if ! grep "$l" -Fxq "$__object/explorer/getent" | ||||||
|  |         then | ||||||
|  |             echo "no $l' in target" | sed "s/:/ '/" >&2 | ||||||
|  |             exit 1 | ||||||
|  |         fi | ||||||
|  |     done | ||||||
|  | 
 | ||||||
| if [ -f "$__object/parameter/default" ] | if [ -f "$__object/parameter/default" ] | ||||||
| then | then | ||||||
|     acl_should="$( echo "$acl_should" \ |     acl_should="$( echo "$acl_should" \ | ||||||
|  |  | ||||||
|  | @ -12,11 +12,14 @@ Fully supported and tested on Linux (ext4 filesystem), partial support for FreeB | ||||||
| 
 | 
 | ||||||
| See ``setfacl`` and ``acl`` manpages for more details. | See ``setfacl`` and ``acl`` manpages for more details. | ||||||
| 
 | 
 | ||||||
|  | One of ``--entry`` or ``--source`` must be used. | ||||||
| 
 | 
 | ||||||
| REQUIRED MULTIPLE PARAMETERS | 
 | ||||||
|  | OPTIONAL MULTIPLE PARAMETERS | ||||||
| ---------------------------- | ---------------------------- | ||||||
| entry | entry | ||||||
|    Set ACL entry following ``getfacl`` output syntax. |    Set ACL entry following ``getfacl`` output syntax. | ||||||
|  |    Must be used if ``--source`` is not used. | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| OPTIONAL PARAMETERS | OPTIONAL PARAMETERS | ||||||
|  | @ -25,6 +28,7 @@ source | ||||||
|    Read ACL entries from stdin or file. |    Read ACL entries from stdin or file. | ||||||
|    Ordering of entries is not important. |    Ordering of entries is not important. | ||||||
|    When reading from file, comments and empty lines are ignored. |    When reading from file, comments and empty lines are ignored. | ||||||
|  |    Must be used if ``--entry`` is not used. | ||||||
| 
 | 
 | ||||||
| file | file | ||||||
|    Create/change file with ``__file`` using ``user:group:mode`` pattern. |    Create/change file with ``__file`` using ``user:group:mode`` pattern. | ||||||
|  | @ -48,12 +52,6 @@ remove | ||||||
|    ``mask`` and ``other`` entries can't be removed, but only changed. |    ``mask`` and ``other`` entries can't be removed, but only changed. | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| DEPRECATED PARAMETERS |  | ||||||
| --------------------- |  | ||||||
| Parameters ``acl``, ``user``, ``group``, ``mask`` and ``other`` are deprecated and they |  | ||||||
| will be removed in future versions. Please use ``entry`` parameter instead. |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| EXAMPLES | EXAMPLES | ||||||
| -------- | -------- | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1 +0,0 @@ | ||||||
| see manual for details |  | ||||||
|  | @ -1 +0,0 @@ | ||||||
| see manual for details |  | ||||||
|  | @ -1 +0,0 @@ | ||||||
| see manual for details |  | ||||||
|  | @ -1 +0,0 @@ | ||||||
| see manual for details |  | ||||||
|  | @ -1 +0,0 @@ | ||||||
| see manual for details |  | ||||||
|  | @ -1,5 +1,3 @@ | ||||||
| mask |  | ||||||
| other |  | ||||||
| source | source | ||||||
| file | file | ||||||
| directory | directory | ||||||
|  |  | ||||||
|  | @ -1,4 +1 @@ | ||||||
| entry | entry | ||||||
| acl |  | ||||||
| user |  | ||||||
| group |  | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue