![无法授权通过 ssh 在 shell 中执行的 tacacs+ 服务器命令](https://linux22.com/image/788309/%E6%97%A0%E6%B3%95%E6%8E%88%E6%9D%83%E9%80%9A%E8%BF%87%20ssh%20%E5%9C%A8%20shell%20%E4%B8%AD%E6%89%A7%E8%A1%8C%E7%9A%84%20tacacs%2B%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%91%BD%E4%BB%A4.png)
我已经在这里设置了一个 tacacs+ 服务器和一个 PAM tacacs 客户端-https://github.com/kravietz/pam_tacplus/tree/main。
当用户通过 ssh 进入 tacacs 客户端机器时,我希望从 tacacs+ 服务器进行身份验证,并且只允许执行 tacacs+ 服务器配置中允许的 shell 命令。
身份验证有效,但我无法使 shell 命令授权起作用。
为了实现这个目的我需要做哪些改变?
这是 tacacs+ 服务器配置,我只允许 ls 命令:
key = testkey123
user = testuser1 {
cmd = ls {
permit .*
}
global = cleartext "testpass123"
service = ppp protocol = ip {
addr=1.2.3.4
}
}
我还在客户端上创建了一个本地用户,其凭据与服务器配置中相同。
这是我在 /etc/pam.d 中定义的 PAM 测试模块:
#%PAM-1.0
auth sufficient /lib/security/pam_tacplus.so server=127.0.0.1 secret=testkey123
account sufficient /lib/security/pam_tacplus.so server=127.0.0.1 secret=testkey123 service=ppp protocol=ip
session sufficient /lib/security/pam_tacplus.so server=127.0.0.1 secret=testkey123 service=ppp protocol=ip
在 /etc/pam.d 中的 PAM sshd 模块中我添加了:
auth include test
account include test
session include test
在 tacacs+ 配置中,我只允许“ls”命令,但所有命令都可以执行。客户端似乎没有授权服务器允许的命令。