lib/specinfra/command/base/user.rb in specinfra-2.82.13 vs lib/specinfra/command/base/user.rb in specinfra-2.82.14
- old
+ new
@@ -1,17 +1,19 @@
class Specinfra::Command::Base::User < Specinfra::Command::Base
class << self
def check_exists(user)
- "id #{escape(user)}"
+ "getent passwd #{escape(user)}"
end
def check_belongs_to_group(user, group)
- "id #{escape(user)} | sed 's/ context=.*//g' | cut -f 4 -d '=' | grep -- #{escape(group)}"
+ "groups #{escape(user)} | grep -- #{escape(group)}"
end
def check_belongs_to_primary_group(user, group)
- "id -gn #{escape(user)}| grep ^#{escape(group)}$"
+ pgid = "getent passwd #{escape(user)} | cut -f 4 -d ':'"
+ ggid = "getent group #{escape(group)} | cut -f 3 -d ':'"
+ %Q|test "#{escape(pgid)}" -eq "#{escape(ggid)}"|
end
def check_is_system_user(user)
exists = "getent passwd #{escape(user)} > /dev/null 2>&1"
uid = "getent passwd #{escape(user)} | cut -f 3 -d ':'"
@@ -19,12 +21,12 @@
sys_uid_max = "awk 'BEGIN{sys_uid_max=0;uid_min=1000} {if($1~/^SYS_UID_MAX/){sys_uid_max=$2}if($1~/^UID_MIN/){uid_min=$2}} END{if(sys_uid_max!=0){print sys_uid_max}else{print uid_min-1}}' /etc/login.defs"
%Q|#{exists} && test "$(#{uid})" -ge "$(#{sys_uid_min})" && test "$(#{uid})" -le "$(#{sys_uid_max})"|
end
def check_has_uid(user, uid)
- regexp = "^uid=#{uid}("
- "id #{escape(user)} | grep -- #{escape(regexp)}"
+ auid = "getent passwd #{escape(user)} | cut -f 3 -d ':'"
+ %Q| test "#{escape(uid)}" -eq "#{escape(auid)}"|
end
def check_has_home_directory(user, path_to_home)
"getent passwd #{escape(user)} | cut -f 6 -d ':' | grep -w -- #{escape(path_to_home)}"
end
@@ -45,14 +47,14 @@
def get_maximum_days_between_password_change(user)
"chage -l #{escape(user)} | sed -n 's/^Maximum.*: //p'"
end
def get_uid(user)
- "id -u #{escape(user)}"
+ "getent passwd #{escape(user)} | cut -f 3 -d ':'"
end
def get_gid(user)
- "id -g #{escape(user)}"
+ "getent passwd #{escape(user)} | cut -f 4 -d ':'"
end
def get_home_directory(user)
"getent passwd #{escape(user)} | cut -f 6 -d ':'"
end