@@ -16,7 +16,7 @@ import (
16
16
"github.com/aws/aws-sdk-go/aws/session"
17
17
"github.com/aws/aws-sdk-go/service/iam"
18
18
"github.com/hamstah/awstools/common"
19
-
19
+ log "github.com/sirupsen/logrus"
20
20
kingpin "gopkg.in/alecthomas/kingpin.v2"
21
21
)
22
22
@@ -168,35 +168,42 @@ func LocalUsers() ([]*user.User, error) {
168
168
return users , err
169
169
}
170
170
171
- func LockLocalUser ( username string ) error {
172
- cmd := exec .Command ("/usr/sbin/usermod" , "-L" , username )
173
- err := cmd .Run ()
171
+ func RunCommand ( command string , args ... string ) error {
172
+ cmd := exec .Command (command , args ... )
173
+ output , err := cmd .CombinedOutput ()
174
174
if err != nil {
175
+ log .WithFields (log.Fields {
176
+ "exit_code" : cmd .ProcessState .ExitCode (),
177
+ }).Error (fmt .Sprintf ("Failed to run command %s: %s" , command , string (output )))
175
178
return err
176
179
}
177
-
178
180
return nil
179
181
}
180
182
181
- func UnlockLocalUser (username string ) error {
182
- cmd := exec . Command ( "/usr/sbin/usermod " , "-U" , username )
183
- err := cmd . Run ( )
183
+ func LockLocalUser (username string ) error {
184
+ log . WithField ( "username " , username ). Info ( "Locking user" )
185
+ err := RunCommand ( "/usr/sbin/usermod" , "-L" , username )
184
186
if err != nil {
185
187
return err
186
188
}
187
189
188
190
return nil
189
191
}
190
192
191
- func syncUserGroups (iamUser * IAMUser ) error {
192
-
193
- cmd := exec .Command ("/usr/sbin/usermod" , "-G" , strings .Join (iamUser .Groups , "," ), iamUser .Username )
194
- err := cmd .Run ()
193
+ func UnlockLocalUser (username string ) error {
194
+ log .WithField ("username" , username ).Info ("Unlocking user" )
195
+ err := RunCommand ("/usr/sbin/usermod" , "-U" , username )
195
196
if err != nil {
196
197
return err
197
198
}
198
199
199
- return nil
200
+ func syncUserGroups (iamUser * IAMUser ) error {
201
+ groupsStr := strings .Join (iamUser .Groups , "," )
202
+ log .WithFields (log.Fields {
203
+ "username" : iamUser .Username ,
204
+ "groups" : groupsStr ,
205
+ }).Info ("Setting user groups" )
206
+ return RunCommand ("/usr/sbin/usermod" , "-G" , groupsStr , iamUser .Username )
200
207
}
201
208
202
209
func syncUserSudo (iamUser * IAMUser , defaultSudo bool ) error {
@@ -211,21 +218,22 @@ func syncUserSudo(iamUser *IAMUser, defaultSudo bool) error {
211
218
if hasSudo {
212
219
return nil
213
220
}
214
-
221
+ log . WithField ( "username" , iamUser . Username ). Info ( "Adding sudo to user" )
215
222
return ioutil .WriteFile (sudoFilename , []byte (fmt .Sprintf ("%s ALL=(ALL) NOPASSWD:ALL\n " , iamUser .Username )), 0644 )
216
223
} else {
217
224
// nothing to do
218
225
if ! hasSudo {
219
226
return nil
220
227
}
221
228
229
+ log .WithField ("username" , iamUser .Username ).Info ("Removing sudo from user" )
222
230
return os .Remove (sudoFilename )
223
231
}
224
232
}
225
233
226
234
func createUser (iamUser * IAMUser ) error {
227
- cmd := exec . Command ( "/usr/sbin/adduser " , iamUser .Username )
228
- err := cmd . Run ( )
235
+ log . WithField ( "username " , iamUser .Username ). Info ( "Creating user" )
236
+ err := RunCommand ( "/usr/sbin/adduser" , iamUser . Username )
229
237
if err != nil {
230
238
return err
231
239
}
0 commit comments