如何查找“ / etc / passwd”中存在但“ / etc / group”中不存在的组的列表?

时间:2018-08-23 02:17:56

标签: bash awk sed grep

我想找到/etc/passwd中存在但不在/etc/group中的组列表

到目前为止,我已经编写了以下命令

for user in $(getent passwd | cut -d: -f1); do
    printf "%s: %s\n" $user "$(id -nG $user)"
done

3 个答案:

答案 0 :(得分:2)

$ id -Gz | cat -v
197121^@114^@197610^@544^@545^@4^@66049^@11^@15^@113^@4095^@66048^@262154^@405504^@$

$ getent passwd | tr '[:alpha:]' '#'
########:*:197609:197121:#-#######53\########,#-1-5-21-2486228713-2700429697-662227502-1001:/####/########:/###/####
##############:*:544:544:#-#######\##############,#-1-5-32-544:/:/####/#######
######:*:18:18:#-## #########\######,#-1-5-18:/####/######:/###/####
##### #######:*:19:19:#-## #########\##### #######,#-1-5-19:/:/####/#######
####### #######:*:20:20:#-## #########\####### #######,#-1-5-20:/:/####/#######
##############:*:544:544:#-#######\##############,#-1-5-32-544:/:/####/#######
## #######+################:*:328384:328384:#-## #######\################,#-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464:/:/####/#######

$ awk 'NR==FNR{grps[$0];next} !($3 in grps){print $3}' RS='\0' <(id -Gz) RS='\n' FS=':' <(getent passwd)
197609
18
19
20
328384

答案 1 :(得分:0)

请尝试以下操作,它将给出/etc/passwd中出现的组名的条目,而/etc/group中没有出现的组名。

awk -F':' 'FNR==NR{a[$5]=$0;next} ($1 in a){delete a[$1]} END{for(i in a){print a[i]}}' /etc/passwd  /etc/group

答案 2 :(得分:0)

var myApp = angular.module('myApp', ['ngCookies']); myApp.filter('range', function () { return function (input, total) { total = parseInt(total); for (var i = 0; i < total; i++) { input.push(i); } return input; }; }); function selectController($scope, $http, $cookieStore) { $scope.selectValue = function (value) { $scope.selectValue = value; $cookieStore.put("selectValue", $scope.selectValue); console.log("selectValue" + $scope.selectValue); console.log($cookieStore.get("selectValue")); } }

grep/cut