我有一个使用ssh登录的远程服务器。当有人使用包含新密码的passwd更改用户密码时,是否有通过电子邮件(使用bash脚本)通知的方法?
我猜它与/ etc / pam / passwd有关,但不完全确定触发器和标志应该是什么。
如果我允许访问“朋友”并且他们决定将我锁定在我的帐户之外,这将非常有用。当然我可以为他们创建一个新帐户等,但这更像是“应该是可能的”任务而不是实际的任务。
答案 0 :(得分:2)
有一个规则,这个问题让我想起......这是什么?哦是啊......
这也符合规则。
抱歉喊道。在安全性方面有一个规则,即秘密可能会泄露的可能性是知道它的人数的平方。我的推论是:
if ( people_who_know_secret > 1 ) {
It ain't a secret any more
}
在Unix中,即使系统管理员,所有强大的root用户也不知道你的密码。
更糟糕的是,您想通过电子邮件发送密码。电子邮件远非安全。它通常只是通过以太发送的纯文本,任何有点好奇的人都可以偷看它。
由于您使用的是SSH,因此您应该知道SSH有一种备用机制来验证名为Private / Public keys的用户。它因系统而异,但您所做的是创建公钥/私钥对。您与要登录的系统共享公钥,但保密私钥。
远程计算机拥有您的公钥后,您可以通过ssh
登录该系统,而无需知道该系统的密码。
确切的机制因机器而异,并且有两种不同的ssh协议没有帮助,因此使其工作将因系统而异。在Linux和Mac上,您可以通过ssh-keygen命令生成公钥/私钥对。
默认情况下,ssh-keygen
会生成一个名为$HOME/.ssh/id_rsa.pub
和$HOME/.ssh/id_rsa
的文件。第一个是你的公钥。您在计算机和要登录的计算机上运行ssh-keygen
。
在您登录的计算机上,创建名为$HOME/.ssh/authorized_keys
的文件,然后将公钥复制并粘贴到此文件中。让你的朋友也发给你他的公钥,并将其粘贴到文件中。每个公钥将占用文件中的一行。
如果一切正常,您和您的朋友都可以使用ssh
登录该远程计算机而无需输入密码。这非常安全,因为您的公钥必须与您对应的私钥匹配。如果不是,则无法登录。这意味着即使其他教皇找到您的公钥,他们也无法登录该远程系统。
您和您的朋友都可以登录该系统而无需担心共享密码。
另一种方法是使用sudo让您的朋友在某些方面像您一样行事。与实际共享帐户相比,Sudo有一些优势:
/etc/sudoers
文件中指定您的朋友只能运行该特定命令。您甚至可以指定您的朋友是否可以简单地运行该命令,或者要求您的朋友输入他们的密码以运行该命令。在Ubuntu Linux和Macintoshes上,root密码被锁定,因此您无法以root用户身份登录。如果您需要以root身份执行某些操作,请将自己设置为管理员(我相信将自己置于wheel
组中),然后使用sudo
运行所需的管理员功能。
Sudo的一大缺点是设置起来比较复杂,需要管理员访问机器。
尝试使用SSH设置公钥/私钥。它可能需要一些调整才能使它工作,但一旦它工作,它是美丽的。更好的是,您可以运行远程命令并使用sep
将文件从一台计算机复制到另一台计算机 - 所有这些都没有密码提示。这意味着您可以编写shell脚本来为您完成工作。
顺便说一下,一个偷偷摸摸的技巧是将你的远程shell设置为/bin/false
。这样,您无法登录该系统 - 即使使用ssh
,但您可以使用ssh
运行远程命令,并使用sep
在系统之间来回复制文件。 / p>
答案 1 :(得分:1)
个人密码只能由用户自己知道。甚至根用户也不应该知道它们,这就是为什么它们被加密存储的原因。当然,root用户有足够的权限来解密它们,但原理是一样的。
如果您要给予“朋友”访问权限,他们会为他们分配适当的权限! 不使他们成为root用户,您也不应该是root用户。那么你的“朋友”将无法更改你的密码,在他们不应该进入的区域中捣乱。
如果您绝对必须监控 passwd和shadow文件,请安装iwatch。然后将其设置为观察/ etc / passwd和/ etc / shadow文件。如果它们发生变化,它会运行一个脚本来解密文件并通过电子邮件发送给某人。如果你保留一份副本来反对,你甚至会知道谁改变了。您可能也应该发送电子邮件,以便它不会以纯文本形式通过互联网,因为它中包含每个人的密码。请注意,系统中的任何其他用户都会对他们所处的反乌托邦世界感到不安。
仅仅因为根是土地的法则并不意味着我们想要生活在1984年。
答案 2 :(得分:-1)
尝试某种方式:
alias passwd='passwd && echo 'Alert! Alert! Alert!' | mail -s 'pass change' alert@example.com'
应该足够了你:)
对于那些认为alias
过于主流的人)的另一种可行解决方案:)
1)您可以创建一个cron作业,每隔一段时间检查一次/etc/shadow
文件,例如,分钟,当文件发生变化时,它会向您发送警报电子邮件。我认为,最简单的方法是制作md5校验和
2)您可以将/ usr / bin / passwd移动到/usr/bin/passwd.sys并在其上创建一个带有/usr/bin/passwd.sys && echo 'Alert! Alert! Alert!' | mail -s 'pass change'
的脚本。是的,这种方式也可以被用户发现并擦洗:)