こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

NET::SFTP::FOREIGN

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

投稿日時 - 2019-08-30 20:47:22

QNo.9651328

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

> それは、例えば、$chmod = 0755;などとして変数に代入して変えることは可能ですか?

可能です。が、せめて手を動かしてから質問しましょうよ・・。

> $chmodにはフォームから受け取った$FORM{'chmod'}のデータが入ります。
ちなみに、0755でも表示上は363でした。
> 数値を直接指定しないとダメですか?

(少なくともchmodの引数については)ダメです。
Perlに%FORMという特殊変数はないので、どんなライブラリでフォームの値をどのように取得しているかわかりませんが、文字列になっているのであれば数値への変換が必要です。具体的な変換方法は「Perl 8進数」でググれば山ほど出てきますので触れません。

投稿日時 - 2019-09-02 22:30:31

補足

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

投稿日時 - 2019-09-03 11:58:45

お礼

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

投稿日時 - 2019-09-05 18:34:24

ANo.4

> 例えば、755に変えようとすると、363になります。

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

投稿日時 - 2019-09-02 21:21:22

補足

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

投稿日時 - 2019-09-02 21:36:37

お礼

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

投稿日時 - 2019-09-05 18:36:51

ANo.3

>パーミッションの変更以外はできてるんです。
引数の間違いか、変更する権限が無いかです。
エラー内容がシステムログかFTPサーバのログに出ていないかを確認してみてください。

よくあることは変更権限無いことです。
FTP先のディレクトリーや対象ファイルのパーミッションを確認してください。

投稿日時 - 2019-09-02 07:12:17

補足

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

投稿日時 - 2019-09-02 10:10:53

ANo.2

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

投稿日時 - 2019-09-02 03:29:07

補足

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

投稿日時 - 2019-09-02 12:11:59

ANo.1

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

投稿日時 - 2019-08-31 04:57:19

補足

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

投稿日時 - 2019-08-31 11:38:21

あなたにオススメの質問