php - 如何在 linux pc 中使用 php 中的 shell 脚本添加用户

标签 php linux shell

我正在尝试将用户添加到我的 LAN pc(ubuntu 14.04)但失败了。 比如说:

我的电脑:192.168.0.11 服务器电脑:192.168.0.100

我可以使用 shell 脚本将用户创建到“mypc”中。但是当我尝试连接并将用户添加到“serverpc”时:它返回“添加用户失败!”。我正在使用 PHP:

这是我的方法:

public function test_ldap(){

    $username = escapeshellarg('different');
    $password = escapeshellarg('different');
    #$udomain = 'edutechsolutionsbd.com';
    $u_domain = '192.168.0.100';
    $u_user = 'etsb';

    $output = exec("sudo shell_script/add_user.sh $username $password $u_domain $u_user 2>&1");
    #$output = shell_exec("/usr/bin/php -v");
    print_r($output);
    exit;

}

shell 脚本::

#!/bin/bash
# Script to add a user to Linux system
# -------------------------------------------------------------------------
# Copyright (c) 2007 nixCraft project <http://bash.cyberciti.biz/>
# This script is licensed under GNU GPL version 2.0 or above
# Comment/suggestion: <vivek at nixCraft DOT com>
# -------------------------------------------------------------------------
# See url for more info:
# http://www.cyberciti.biz/tips/howto-write-shell-script-to-add-user.html
# -------------------------------------------------------------------------
if [ $(id -u) -eq 0 ]; then

username=$1
password=$2
u_domain=$3
u_user=$4

egrep "^$username" /etc/passwd >/dev/null
if [ $? -eq 0 ]; then
    echo "$username exists!"
    exit 1
else
    pass=$(perl -e 'print crypt($ARGV[0], "password")' $password)
    #useradd -m -p $pass $username
    sudo ssh $u_user@$u_domain "useradd -m -p $pass $username"

    [ $? -eq 0 ] && echo "User is Created Successfully!" || echo     "Failed to add a user!"
fi
else
echo "Only root may add a user to the system"
exit 2
 fi

我的问题:如何在 ubuntu 中将用户创建到我的另一台电脑中?提前致谢。

最佳答案

根据我的经验,PHP 的 exec() 函数不支持使用 sudo 提升权限标志运行任务。我将 www-data 用户添加到 /etc/sudoers 您使用命令 sudo visudo -f/etc/sudoers,然后在该行下方 includedir/etc/sudoers.d user_name ALL=(ALL)

然后我添加了以下行...

www-data ALL=(ALL) NOPASSWD: ALL

基本上您所做的是将 www-data 用户添加到 sudoers 列表并允许它访问 sudo 命令并在提升的权限下运行。

但是我应该注意,这是一个非常危险的更改,因为这意味着任何人都可以使用 Web 服务器的用户获得提升的权限,如果这是面向公众的服务器,这会带来巨大的风险,因此请极端使用它小心。

关于php - 如何在 linux pc 中使用 php 中的 shell 脚本添加用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33477309/

相关文章:

php - 后缀 : Send email to PHP

shell - 如何grep和匹配一行的第一次出现?

php - 在 Raspberry Pi 上强制自动启动应用程序

c++ - 如果进程被 SIGKILLed,操作系统(POSIX)是否刷新内存映射文件?

linux - 检查每个项目是路径中的文件还是目录的程序

bash - 查找少于 2000 行的文本文件并删除它们

php - 当 error_log 不产生新条目时,如何调试 HTTP 错误 500 消息?

php - 如何在php中使用表单重定向到当前页面?

javascript - 将数据以随机形式数据存入数据库

linux - 如何按主题编号(文件名前缀)对文件进行排序并从中创建新文件夹?