github.com/coreos/mantle@v0.13.0/kola/tests/misc/users.go (about) 1 // Copyright 2016 CoreOS, Inc. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package misc 16 17 import ( 18 "strings" 19 20 "github.com/coreos/mantle/kola/cluster" 21 "github.com/coreos/mantle/kola/register" 22 ) 23 24 func init() { 25 register.Register(®ister.Test{ 26 Run: CheckUserShells, 27 ClusterSize: 1, 28 ExcludePlatforms: []string{"gce"}, 29 Name: "cl.users.shells", 30 Distros: []string{"cl"}, 31 }) 32 } 33 34 func CheckUserShells(c cluster.TestCluster) { 35 m := c.Machines()[0] 36 var badusers []string 37 38 ValidUsers := map[string]string{ 39 "root": "/bin/bash", 40 "sync": "/bin/sync", 41 "shutdown": "/sbin/shutdown", 42 "halt": "/sbin/halt", 43 "core": "/bin/bash", 44 } 45 46 output := c.MustSSH(m, "getent passwd") 47 48 users := strings.Split(string(output), "\n") 49 50 for _, user := range users { 51 userdata := strings.Split(user, ":") 52 if len(userdata) != 7 { 53 badusers = append(badusers, user) 54 continue 55 } 56 57 username := userdata[0] 58 shell := userdata[6] 59 if shell != ValidUsers[username] && shell != "/sbin/nologin" { 60 badusers = append(badusers, user) 61 } 62 } 63 64 if len(badusers) != 0 { 65 c.Fatalf("Invalid users: %v", badusers) 66 } 67 }