新创建用户的 SVN 权限

新创建用户的 SVN 权限

我需要svn co通过从 php 页面调用 bash 脚本来创建一个新用户,然后进入新创建的用户的主目录。

下面的示例是我在其他论坛上看到的 sudoers 文件中的一行。

http ALL=NOPASSWD:/usr/sbin/useradd,/bin/mkdir,/bin/ln,/bin/chown,/bin/cp,/bin/sed

此行显然为用户设置了无密码 sudo ,http并为用户添加了http使用useradd、、和命令的权限。我不想为所有用户禁用 sudo 提示,而只是为新创建的用户禁用(我在 AU 上看到过一个关于在 sudoers 文件中注释某一行以防止 sudo 密码提示的答案)。mkdirchowncpsed

同样,我想为用户添加 svn 权限www-data

www-data ALL=NOPASSWD: /usr/sbin/useradd,/bin/svn

目前,www-data用户可以使用该useradd命令创建新用户,但无法使用 svn 命令。(我可能完全做错了,所以请随时纠正我)

这是我正在尝试运行的 bash 脚本。

sudo useradd newuser -d /home/newuser -s /bin/bash -m -p password
echo yes | sudo svn --username [username] --password [password] co [SVN link] /home/newuser/public_html

当我尝试使用命令从 php 页面调用此脚本时

$output = shell_exec("sh ./includes/setupsite.sh 2>&1");

我得到了错误

sudo: no tty present and no askpass program specified对于第二行(该svn co行)

但当我尝试不这样做时,sudo我得到了

----------------------------------------------------------------------- ATTENTION! Your password for authentication realm: Authentication Required can only be stored to disk unencrypted! You are advised to configure your system so that Subversion can store passwords encrypted, if possible. See the documentation for details. You can avoid future appearances of this warning by setting the value of the 'store-plaintext-passwords' option to either 'yes' or 'no' in '/var/www/.subversion/servers'. ----------------------------------------------------------------------- Store password unencrypted (yes/no)? svn: Can't make directory '/home/newuser/public_html': Permission denied

因此,很明显可能需要 sudo。我在这里也看到过类似的问题。但这个问题没有得到回答,提供的答案也没有解决我的问题。

更新:文件权限/所有权为:

-rwxrwxrwx 1 www-data www-data 326 2012-08-08 17:56 setupsite.sh

如果您需要任何说明,请发表评论,我会编辑我的问题以尽快添加这些详细信息(前提是我有)。

答案1

该命令which [command]让您知道正在调用哪个终端命令。

例如,在我的问题中,我输入了www-data ALL=NOPASSWD: /usr/sbin/useradd,请注意最后一部分/usr/bin/useradd,这是终端调用的 useradd 命令的实际位置。这可以通过使用 来获得which useradd

类似地,您也可以svn使用以下命令添加搜索命令which svn,这将为您提供命令的位置svn。在我的情况下,它给了我/usr/bin/svn,所以当我编辑行时

www-data ALL=NOPASSWD: /usr/sbin/useradd,/bin/svn

进入

www-data ALL=NOPASSWD: /usr/sbin/useradd,/usr/bin/svn

www-data 用户获得了 svn 权限,因此我可以为 www-data 用户执行无密码 sudo。

相关内容