sudo需求,公司程序员某些数据同步后需重启服务,给予root免登录权限固然简单,但存在太大的风险;所以我做了sudo限制,只允许用户从固定IP连接执行指定的命令,不需输入用户名 密码
技术要点:sudo ssh远程执行命令 ssh免登录
1.useradd wang 创建用户并设置密码
passwd wang
2.visudo 或 vim /etc/sudoers
写下如下内容,我用了wang这个用户,让他可以从远程执行 useradd userdel 命令
#Defaults requiretty Defaults env_reset Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR \ LS_COLORS MAIL PS1 PS2 QTDIR USERNAME \ LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC \ LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS \ _XKB_CHARSET XAUTHORITY" root ALL=(ALL) ALL wang localhost,192.168.200.99,192.168.200.245= NOPASSWD:/usr/sbin/useradd,/usr/sbin/userdel
注释:
#Defaults requiretty 该行需注释,否则会报如下错误
sudo: sorry, you must have a tty to run sudo
wang(用户名) localhost,192.168.200.99,192.168.200.245(允许的IP)= NOPASSWD:/usr/sbin/useradd,/usr/sbin/userdel 执行sudo命令不用输入用户密码
该行的意思是 允许wang这个用户从本地和245这些服务器执行 useradd 和userdel命令localhost,192.168.200.99是本机, 不知道为什么只使用localhost时sudo没有生效
3.测试
IP:192.168.200.99 添加用户名
sudo /usr/sbin/useradd user1 执行成功
IP:192.168.200.245 远程删除用户名
[root@BETA2 ~]# ssh -p2222 "/usr/bin/sudo /usr/sbin/userdel -r user1" password:
[root@BETA2 ~]#
这里提示输入passwd,是因为没有做ssh免登录,接下来我又做了ssh免登录
参考连接: