SUDOERS /etc/sudoers Configuration¶
TODO: Combine best recommendations to one.
sudo su - sudo -i
CENTOS
Defaults !visiblepw
Defaults always_set_home
Defaults match_group_by_gid
Defaults always_query_group_plugin
Defaults env_reset
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS"
Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
root ALL=(ALL) ALL
%wheel ALL=(ALL) ALL
OPENSUSE
Defaults always_set_home
Defaults secure_path="/usr/sbin:/usr/bin:/sbin:/bin"
Defaults env_reset
Defaults env_keep = "LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE LC_ATIME LC_ALL LANGUAGE LINGUAS XDG_SESSION_COOKIE"
Defaults !insults
Defaults targetpw # ask for the password of the target user i.e. root
ALL ALL=(ALL) ALL # WARNING! Only use this together with 'Defaults targetpw'!
root ALL=(ALL) ALL
MYPERSONAL
Defaults !visiblepw
Defaults !insults
Defaults always_set_home
Defaults match_group_by_gid
Defaults always_query_group_plugin
Defaults env_reset
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS"
Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
Defaults editor = /bin/vim
Defaults logfile=/var/log/sudo.log
Defaults loglinelen=0
Defaults log_year
Defaults log_host
Defaults log_output
Defaults!/usr/bin/sudoreplay !log_output
Defaults!/sbin/reboot !log_output
Defaults ignore_dot
Cmnd_Alias USER_WRITEABLE = /home/*, /tmp/*, /var/tmp/*
# Deny all users to run any sudo command
ALL ALL = (ALL) PASSWD: !ALL
# root can run any command as root
root ALL=(ALL) ALL
# wheel group can run all commands as run, but not from insecure directories
%wheel ALL=(root) PASSWD: ALL, !USER_WRITEABLE
#includedir /etc/sudoers.d
We can restrict access to “/bin/su” so only group “wheel” can only execute “su” command.
Modify file permission of the SGID file to prevent “others/worldwide” execute “/bin/su”
Modify/Add file extended file ownership to the group “wheel”
# sudo chmod 4750 /bin/su
# sudo setfacl -m g:wheel:rx /bin/su
# getfacl: Removing leading '/' from absolute path names
# file: bin/su
# owner: root
# group: root
# flags: s--
user::rwx
group::r-x
group:wheel:r-x
mask::r-x
other::---
[kalle@xwiki ~]$ /bin/su
-bash: /bin/su: Permission denied
We can restrict access to “/bin/sudo” so only group “wheel” can execute “sudo” command.
We can restrict any “sudo” execution for normal users as well in similar manner, e.g. block “sudo -l”.
# sudo chmod 4750 /bin/sudo
# sudo setfacl -m g:wheel:rx /bin/sudo
# getfacl: Removing leading '/' from absolute path names
# file: bin/sudo
# owner: root
# group: root
# flags: s--
user::rwx
group::r-x
group:wheel:r-x
mask::r-x
other::---
[kalle@xwiki ~]$ /bin/sudo
-bash: /bin/sudo: Permission denied