我想允许特定用户在我的目录中执行已编译的程序。我从 cat /etc/passwd 中获取了他的用户名。可执行文件不会写入任何文件,但会读取一些文件并在命令行上提供输出。我该如何实现这一点?
答案1
如果您的文件不是秘密,您可以简单地将该文件夹对所有人或您自己和其他用户所在的某个组开放。
如果您遇到不允许用户读取这些数据的情况,则您必须使用sudo
基于的策略,以便特权用户可以通过以下方式运行您的程序:
sudo ~user19448/myprogram/runme
首先你必须配置你的 sudo (通过visudo
),例如:
particular-user ALL=(ALL) NOPASSWD: /home/user19448/myprogram/runme
禁止密码避免您输入自己的密码,这可能是您想要的。
答案2
我将添加新组包括该用户并将文件和可执行文件更改为该组。
创建群组
groupadd Group_name
更改文件的组(可执行文件和将要读取的文件)
chgrp Group_name file
使可执行文件可供组成员使用
chmod g+x executable_file
使他/她需要阅读的所有文件可供小组读取
chmod g+r file
将用户和您自己添加到组
useradd -G Group_name username
答案3
最好的选择是你们俩必须属于同一个组。假设你创建了一个名为的组,team
并且你们俩都是该组的成员。然后你可以通过授予该组对该程序的执行权限来允许他执行它。
假设有两个用户分别名为 test 和 test1
# groupadd team
# usermod -G team test
# usermod -G team test1
假设你的程序所在的目录为/home/test/programs/program1
现在更改目录和程序的组所有权。
# chown test:test1 /home/test/programs/program1
# chown test:test1 /home/test/programs/
# chmod g+x /home/test/programs/program1
# chmod g+x /home/test/programs/
现在用户test1
将能够执行该程序。
这种方式更加安全并且可以防止他人滥用它。