在用户登录时以 root 身份运行脚本,并捕获

nwa*_*lke 5 root sudo samba

我正在尝试在用户登录时以 root 身份运行 PHP 脚本。PHP 脚本将 Samba 共享添加到 Samba 配置中,因此需要 root 权限。这里唯一的问题是用户还不存在。该系统与活动目录集成。因此,当用户第一次登录时,会在/home/DOMAIN/username.

我发现了这个问题,这似乎是获得我想要的东西的正确方法,但是我在语法方面遇到了问题,因为我不知道用户的姓名。

会不会是这样的:

ALL ALL=(ALL) NOPASSWD: /home/DOMAIN/*/createSambaShare.php

这似乎不像目前那样工作。任何人都有任何想法或“脚本化”方式在用户登录时添加 Samba 共享?

由于我对 进行了其他更改/etc/skel,因此我只是添加了在 .profile 中运行 PHP 脚本所需的 bash。然后将其复制到“新”用户的家中,并尝试运行 PHP 脚本。但它失败了,因为这些不是特权用户。

更改 PHP 脚本的权限无济于事。它需要作为 sudo 运行,因为它会打开 Samba 配置文件进行写入。让任何用户运行 PHP 脚本都会导致 PHP 错误。

homes桑巴指令不会对我的使用情况下工作。我需要 Samba 共享存在于服务器上,即使它们没有登录。

Gil*_*il' 2

不要将脚本放在用户的主目录中。相反,将其放置在固定位置。如果脚本需要一些与用户相关的参数,请让脚本从文件 \xe2\x80\x94 中读取该参数,但您甚至不需要它,因为您无论如何都要复制脚本/etc/skel

\n\n

如果您允许用户以提升的权限运行其主目录中的脚本,那么他们可以用另一个脚本替换该脚本。因此,从安全角度来看,您提出的规则相当于

\n\n
ALL ALL=(ALL) NOPASSWD: /etc/skel/createSambaShare.php\nMANY ALL=(ALL) NOPASSWD: ALL\n
Run Code Online (Sandbox Code Playgroud)\n\n

MANY主目录位于以下位置的任何用户在哪里/home/DOMAIN. (好吧,除非用户的主目录由 root 用户拥有,用户不可写入,并且该脚本也不可由用户写入或由用户拥有。但这将是非常不寻常的。)

\n\n

另外,我建议不要ALL在用户规范中使用。将规则限制为一个组。

\n\n
%sambasharers ALL=(ALL) NOPASSWD: /usr/local/bin/createSambaShare.php\n
Run Code Online (Sandbox Code Playgroud)\n