• 締切済み

NET::SFTP::FOREIGN

perlモジュールのnet::sftp::foreignについてですが、$sftp->chmodと打っても、サーバ上のファイルのパーミッションを変えることができません。 $sftp->にchmodのコマンドは使えないのですか? また、パーミッションを変えるコマンドが他にある場合、それも教えて下さい。

みんなの回答

  • N60-BASIC
  • ベストアンサー率80% (17/21)
回答No.5

> それは、例えば、$chmod = 0755;などとして変数に代入して変えることは可能ですか? 可能です。が、せめて手を動かしてから質問しましょうよ・・。 > $chmodにはフォームから受け取った$FORM{'chmod'}のデータが入ります。 ちなみに、0755でも表示上は363でした。 > 数値を直接指定しないとダメですか? (少なくともchmodの引数については)ダメです。 Perlに%FORMという特殊変数はないので、どんなライブラリでフォームの値をどのように取得しているかわかりませんが、文字列になっているのであれば数値への変換が必要です。具体的な変換方法は「Perl 8進数」でググれば山ほど出てきますので触れません。

humu01jp
質問者

お礼

今月の第四土曜日が期日なので、それまでに完成すればいいのですが。

humu01jp
質問者

補足

一応、8進数でプログラム組んだのですが、めちゃくちゃなパーミッションになります。

  • N60-BASIC
  • ベストアンサー率80% (17/21)
回答No.4

> 例えば、755に変えようとすると、363になります。 いわゆる755とか644というのは8進数表記です。10進数ではありません。 Perlでの8進数は(頭に0を付けて)0755や0644と表記する必要があります。

humu01jp
質問者

お礼

$FORM{'chmod'}には、<input type="text" name="chmod" value="任意の数字">から送られてきた数字が代入されます。

humu01jp
質問者

補足

それは、例えば、$chmod = 0755;などとして変数に代入して変えることは可能ですか? $chmodにはフォームから受け取った$FORM{'chmod'}のデータが入ります。 ちなみに、0755でも表示上は363でした。 数値を直接指定しないとダメですか?

noname#259146
noname#259146
回答No.3

>パーミッションの変更以外はできてるんです。 引数の間違いか、変更する権限が無いかです。 エラー内容がシステムログかFTPサーバのログに出ていないかを確認してみてください。 よくあることは変更権限無いことです。 FTP先のディレクトリーや対象ファイルのパーミッションを確認してください。

humu01jp
質問者

補足

sftp経由なので、putでアップすると、所有者がアカウントになります。 ですから、そのアカウントでsftpに接続してやれば変えられるはずなんですけどね。 ちなみに、ftpソフトではパーミッション変えられます。 perlのnet::sftp::foreignにchmod関数がないということでしょうか。

  • N60-BASIC
  • ベストアンサー率80% (17/21)
回答No.2

マニュアルは読みましたか? https://metacpan.org/pod/Net::SFTP::Foreign マニュアルにはちゃんとchmodの記載がありますので、使えないなんてことはないはずです。 $sftp->chmod($path_or_fh, $perm) Perl組み込みのCORE::chmod()とは引数の順番が逆のようですが、間違えていませんか?

humu01jp
質問者

補足

引数を逆にしたら変えられました。 しかし、755とか644とか、正常なパーミッションに変更できません。 例えば、755に変えようとすると、363になります。 なにが原因ですか?

noname#259146
noname#259146
回答No.1

具体的な作業内容(手順)やエラー内容が不明な為、回答が違うかもしれません。 1.net::sftp::foreign はperlスクリプト内で使うモジュールですのでコマンドラインで打っても使えません。 2.スクリプトで行っている場合はスクリプトを提示されるかエラー内容を教えてください。 3.接続先がWindows OSの場合、パーミッションの変更はできません。 4.FTPログインに使っているユーザに変更権限が無い。 5.FTPサーバがSFTPに対応していない。

humu01jp
質問者

補足

サーバはMacのapachで、sftpサーバを使ってます。 パーミッションの変更以外はできてるんです。 ちなみにスクリプトはパールです

関連するQ&A