0

SharpSsh .NET ライブラリを使用して、.NET 経由で Linux で非常に単純なコマンドを実行しようとしています。コードは例外をスローせず、まだ機能していません。sudo php /www/data/{directory}/scripts/create_file.phpターミナルからコマンドを実行すると、ファイルが作成されます。そしてsudo php /www/data/{directory}/scripts/delete_file.php、ターミナルからコマンドを実行すると、ファイルが削除されます。このコードを .NET から呼び出すと、ファイルが作成/削除されていません。

セットアップについては、この回答を参照してください:
SharpSSH .NET ライブラリ: .NET から Linux (Debian) に接続できません

create_file.php:

<?php
$handle = fopen( 'test.txt', 'w' );
fwrite( $handle, 'Test Contents' );
fclose( $handle );

delete_file.php:

<?php
if( file_exists( 'test.txt' ) )
        unlink( 'test.txt' );

.NET コード:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Tamir.SharpSsh;

namespace Testing
{
    public class Unix
    {
        public static void CreateFile()
        {
            SshExec ssh = new SshExec(Constants.LINUX_HOST, Constants.LINUX_USER, Constants.LINUX_PASSWORD);
            ssh.Connect();
            String result = ssh.RunCommand("sudo php " + Constants.PHP_SCRIPTS_DIR + "create_file.php");
        }

        public static void DeleteFile()
        {
            SshExec ssh = new SshExec(Constants.LINUX_HOST, Constants.LINUX_USER, Constants.LINUX_PASSWORD);
            ssh.Connect();
            String result = ssh.RunCommand("sudo php " + Constants.PHP_SCRIPTS_DIR + "delete_file.php");
        }
    }
}
4

1 に答える 1

0

これらのおもちゃの php ファイルは、より大きなものの縮小ケースであると思います。

実際にファイルを作成および削除する必要がある場合は、php を使用しないでください。シェル コマンドを直接使用できます。

パスワード プロンプトをオフにしたい場合は、そのための構文が/etc/sudoersファイルに含まれています。「NOPASSWD」を参照してください

特にそのようなコマンドラインの変数を使用して、 PHPを root として実行しないでください。権限の問題がある場合は、解決してください。PHP は、最小限の権限を持つユーザーとして実行する必要があります。

ssh に「メンテナンス」アカウントが必要で、php ユーザーに追加の機能を持たせたくない場合は、php ユーザーとグループを共有する別のユーザーにします。これにより、グループ権限を使用できます。(ファイル作成時のデフォルトのパーミッションをいじる必要があるかもしれません。)

于 2012-03-12T18:40:38.187 に答える