我正在尝试为我的机器上的某人创建 SSH 登录。但当他们登录时,我希望它自动加载一个 perl 脚本,并且只允许他们查看/使用该 perl 脚本。
我只知道如何使用 useradd 命令,不知道如何设置权限等。
我不知道如何更详细地解释这一点。但任何帮助都会很有帮助!!!
答案1
为这个“某人”创建一个新用户,并将您的perl
脚本放在他的主目录中,然后在他的目录中创建一个条目.bash_profile
以调用该perl
脚本。
仅供参考:~/.bash_profile 在每个登录 shell 期间执行(例如:ssh、切换用户等)
例子:
suku@ubuntu-vm:~$ cat hello.pl
#!/usr/bin/perl
print "Hello World\n";
suku@ubuntu-vm:~$ cat .bash_profile
perl ~/hello.pl
suku@ubuntu-vm:~$ su - suku
Password:
Hello World
[编辑]
useradd -m username
将创建一个用户,其主目录为/home/username
如果你真的想限制该用户的范围只能读取和执行你的 perl 脚本,你需要为他的主目录设置不可变属性
设置不可变属性:
sudo chattr +i /home/username
删除不可变属性:
sudo chattr -i /home/username
如果你这样做,该用户将无法触及他主目录下的任何新内容。但他可以执行/读取你的 perl 脚本
答案2
最好的方法是使用 authorized_keys 文件。您可以限制用户只能使用一个密钥运行一个命令。因此,如果用户使用一个指定的密钥登录,他将只能运行一个命令。
设置是使用在 authorized_keys 文件中指定的 command ="" 指令。其语法如下:
command ="command", KEY
这告诉 SSH 运行命令然后退出。它有效地限制了您在远程服务器上运行命令的能力。
为了安全地运行多个命令,您有几个选择。首先,考虑调用脚本而不是命令。例如,从名为myscript.sh
and set 的shell 脚本运行 top、df -k 和 hostname command="/path/to/myscript.sh"
。其次,如果您需要在一天中的不同时间对同一主机运行多个命令,您可以为您的用户创建另一个密钥。
对于自动加载功能,您可以简单地将其放在主目录中的 .bash_profile 中,如 Suku 所述。