## Allows people in group tech to run somel commands
%tech ALL=/bin/mount,/bin/tar,/usr/bin/unzip,/sbin/ifconfig,/bin/cat,/usr/bin/less,/usr/bin/tail,/usr/bin/tailf,/bin/touch,/usr/bin/yum,/bin/kill,/usr/bin/killall,/usr/bin/nohup,/bin/mv,/bin/chmod,/bin/chown,/bin/chgrp,/usr/bin/vim,/bin/vi,/bin/rm,/bin/cp ALL
同时我们还需要记录sudo 用户的日志,大体步骤如下:
1. 在 /var/log/ 下面创建sudo.log 日志空文件
# touch /var/log/sudo.log
2. 修改/etc/syslog.conf 配置文件,在最后添加
local2.* /var/log/sudo.log
3. 修改/etc/sudoers 配置文件,在最后添加
Defaults logfile=/var/log/sudo.log
最后重启syslog 服务
在这儿我们看见,我们把sudo 日志记录文件放在/var/log/sudo.log 这儿,但是为了日常办公用我们允许了rm命令执行,故sudo用户发现后能够删除,故我们在给这个文件加一些权限,防止删除
chattr +a /var/log/sudo.log
chattr +i /etc/syslog.conf
chattr +i /etc/sudoers
这样这个日志文件就只能追加,但是不能删除,而且要删除就需要执行 chattr -a /var/log/sudo.log 所以,保证了日志文件的安全.
sudo的安全策略:阻止/允许用户执行特定命令
添加新用户
adduser shi
按照提示一步一步操作
安装sudo
apt-get update
apt-get install sudo -y
配置sudo
首先,将用户移除sudo用户组(如果原来在的话)
然后,确认/etc/sudoers配置策略
要使用visudo来编辑,默认该文件带有描述:“This file MUST be edited with the ‘visudo’ command as root”。如果没有改动过该文件,其大致如下:
# User privilege specification
root ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
最后,编辑用户安全策略配置
在/etc/sudoers.d/目录下建立与用户同名的策略文件,比如:
visudo -f /etc/sudoers.d/shi #其中“shi”为测试建立的用户名
比如,我们期望用户test 可以以管理员权限执行/usr/bin、/bin下的所有命令,但是不能修改其他用户密码以及kill其他用户进程,可以配置如下:
shi ALL=/usr/bin/, !/usr/bin/passwd, /bin/, !/bin/kill
测试一下,会发现passwd被阻止了:
$ sudo passwd
[sudo] password for shi:
Sorry, user shi is not allowed to execute '/usr/bin/passwd'
在策略文件中配置:!/usr/bin/passwd user_name
,该策略可以阻止修改特定用户的密码。也可以得知,该策略可以阻止特定参数的命令
参考资料:
--------------------------
关于 sudo 的一些事
SRC:https://wiki.debian.org/sudo
Sudo(Super-user do) 是被设计为让系统管理员允许普通用户作为超级用户或另一用户来执行某些命令的工具。基本理念是尽可能少地提供特权,但仍然允许人们完成他们的工作,Sudo 也是记录谁允许哪些命令以及何时运行的有效方法。
1 为何选择sudo?
使用sudo比以root身份打开会话更好(更安全),原因有很多,其中包括:
- 没有人需要知道root密码(sudo提示输入当前用户的密码)。可以临时授予个人用户额外的权限,然后在不需要更改密码的情况下将其删除。
- 通过sudo可以运行需要特殊权限的命令; 作为普通用户,可以减少了错误导致的系统危害。
- 审计/日志记录:执行sudo命令时,将记录原始用户名和命令。
由于上述原因,通常不推荐使用sudo -i (或sudo su) 切换到root,因为它取消了上述功能。
2 用户和sudo
为了让用户运行sudo,用户必须属于group = sudo。
2.1 验证sudo会员资格
以用户身份登录后,您可以使用id或groups命令验证用户是否属于group = sudo。例如,id = foo的用户应该看到输出
groups
foot sudo
如果输出中不存在sudo,则用户不属于该组。类似地,来自command=id的更复杂和可变的输出应该类似于
uid = 1001(foo)gid = 1001(foo)groups = 1001(foo),27(sudo)
从命令行添加现有用户,比如,要将id = foo的现有用户添加到group = sudo:
sudo adduser foo sudo
或者,你可以先获得root(例如,sudo su -),然后运行相同的命令,不带prefix = sudo:
adduser foo adduser foo sudo
添加到新组后,用户必须注销然后再次重新登录才能使新组生效。组仅在登录时分配给用户。最常见的混淆源是人们将自己添加到一个新组,但之后不再注销并重新登录,然后因为没有分配组而出现问题; 一定要验证组成员身份。
3 使用sudo创建用户
您还可以使用sudo成员身份创建新用户:
安装OS时创建新用户 从DebianSqueeze开始,如果你在安装过程中给root一个空密码,sudo将被安装,第一个用户将能够使用它获得root访问权限(目前,用户将被添加到sudo组)。系统还将配置gksu和aptitude以使用sudo。以安装的用户身份登录后,您仍应验证组成员身份。
从命令行创建新用户 已经拥有sudo的用户可以使用命令行中的sudo组成员身份创建另一个用户(例如id = foo):
sudo adduser foo sudo adduser foo sudo
然后,您应该以新用户身份登录并验证组成员身份。
4 配置概述
现在,如果您想允许某些用户执行某些程序,这里有一个简单的例子(有关更多信息,请阅读详细手册)。
# /etc/sudoers # # This file MUST be edited with the 'visudo' command as root. # # See the man page for details on how to write a sudoers file. # Defaults env_reset Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" # Host alias specification User_Alias MYADMINS = jdoe # User alias specification # Cmnd alias specification Cmnd_Alias SHUTDOWN = /sbin/reboot, /sbin/poweroff Cmnd_Alias PKGMGMT = /usr/bin/dpkg, /usr/bin/apt-get, /usr/bin/aptitude # User privilege specification # Users listed above (MYADMINS) can run package managers and reboot the system. MYADMINS ALL = PKGMGMT, SHUTDOWN # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL #Default rule for root. root ALL=(ALL) ALL #includedir /etc/sudoers.d
5 需要root密码
如果您想要使用root密码来使用sudo而不是用户密码,请添加以下行:
Defaults rootpw