Skip to content

Commit 458a6e7

Browse files
committed
feat: add control to check if system user are non-login
System users should be prevented from login with exceptions for applications that are non-interactive. Signed-off-by: Claudius Heine <ch@denx.de>
1 parent b1fa8c1 commit 458a6e7

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

controls/os_spec.rb

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,14 @@
2525
login_defs_passmindays = attribute('login_defs_passmindays', value: '7', description: 'Default password mindays to set in login.defs')
2626
login_defs_passwarnage = attribute('login_defs_passwarnage', value: '7', description: 'Default password warnage (days) to set in login.defs')
2727

28+
system_users = passwd.params ? passwd.params.select { |x| x['uid'].to_i < login_defs.UID_MIN.to_i && x['uid'].to_i.positive? } : []
29+
30+
system_users_non_login_permitlist = attribute(
31+
'system_users_non_login_permitlist',
32+
value: %w[sync halt shutdown],
33+
description: 'List of system users which are allowed to log in'
34+
)
35+
2836
shadow_group = 'root'
2937
shadow_group = 'shadow' if os.debian? || os.suse? || os.name == 'alpine'
3038
container_execution = begin
@@ -291,3 +299,16 @@
291299
its('users') { should be_empty }
292300
end
293301
end
302+
303+
control 'os-15' do
304+
impact 1.0
305+
title 'All system users are non-login'
306+
desc 'The login of system users should be disabled'
307+
system_users.each do |user|
308+
next if system_users_non_login_permitlist.include? user['user']
309+
310+
describe OpenStruct.new(user) do
311+
its('shell') { should be_in ['/bin/false', '/sbin/nologin', '/usr/bin/false', '/usr/sbin/nologin'] }
312+
end
313+
end
314+
end

0 commit comments

Comments
 (0)