0

SharpSSH を使用してファイルをリモート マシンにアップロードしています。

public override void WriteFile(string directoryName, string fileName, string localFilePath) {
    sftp.Put(localFilePath, directoryName + "/" + fileName);
}

問題は、ファイルのパーミッションが rw-r----- であることです。これにより、受信アプリケーションがファイルを別のフォルダーに移動して処理することを防ぎます。デスクトップ (仮想マシン) にローカルにインストールされている別の UNIX マシンでこれをテストしましたが、ファイルのアクセス許可は rwxrwxrwx に設定されています。
同じユーザーを使用して WinSCP でファイルを転送すると、ファイルのアクセス許可が rwxrwxrwx に設定されます。WinSCP がこれらの過度に広範囲なアクセス許可を与えるように構成されていることがわかったので、同じことをしようと考えました。この行を追加しました。

public override void WriteFile(string directoryName, string fileName, string localFilePath) {
    sftp.Put(localFilePath, directoryName + "/" + fileName);
    sshExec.RunCommand(@"chmod 666 " + directoryName + "/" + fileName);
}

ただし、ファイルのアクセス許可は変更されません。コマンドを間違って実行していますか?

4

2 に答える 2

0

「sudo」を ubuntu として使用する SO を実行している場合、sudoers ファイルを編集し、chmod が sudo パスワードなしで機能することを許可しない限り、操作を実行できません。

これを確認してくださいパスワードなしのSudo

さらに、他の RunCommand オーバーロードを使用して、stdOut を参照してコマンドから出力を取得します。

string stErr = string.Empty;
string stdOut = string.Empty;
Result = Ssh.RunCommand("@"chmod 666 " + directoryName + "/" + fileName",ref stdOut, ref stErr);
于 2012-11-14T13:46:13.697 に答える
0

コマンドの出力は何ですか?chmod を実行する権限がない可能性がありますか? 「sudo chmod 666」を試す

于 2012-11-14T13:37:39.613 に答える