新しいファイルシステムを追加するために/etc/fstab
を編集することは間違いなく厄介な制約です。
サーバー上のファイルと変更時刻を一覧表示するだけの場合は、smbclient(1)
コマンドを使用するのが適切です。 smbclient(1)
は、SMBとCIFS共有のFTPインターフェイスによく似ています。 -c
コマンドラインオプションを使用すると、特定のコマンドを実行できます。その後、ちょうど修正時刻をリストより
smbclient //$servername/$sharename -c "dir path/to/directory/"
ファイルでより多くのをやっているつもりなら、ファイルシステムとして共有をマウントすると、接続および認証要求の数を減らし、そしておそらくstat(2)
を解析するようになります:ような何かデータのプレーンテキスト表現を解析するよりはるかに簡単に出力できます。
ファイルシステムのマウントのルートを下りたい場合は、まずスクリプトを分割します。
小さいものは、servername、共有パス、およびオプションのマウントパスを取る必要があります。 /etc/fstab
に(サーバー、共有、パス)を追加します。
この部分はrootに設定できます。あなたはacl(5)
サポートを使用してファイルシステムをマウントして、新しいアクセス制御エントリを追加することができ、(危険ですが、rootとして全体のPHPスクリプトを実行しているビートどの。)
または:
mount/-oremount,acl
setfacl -m www::rw /etc/fstab
今www
ユーザーが持っています/etc/fstab
ファイルを変更する権限。 (ユーザが/etc/fstab
への書き込みアクセス権を与えるためにACLを使用した場合、実際にはaddmntent(3)
をテストしていないことに注意してください)。/etc/fstab
を必ず変更してをacl
にマウントしてください。
addmntent(3)
Cライブラリ関数を使用して、/etc/fstab
に新しいエントリを追加できます。私は、addmntent(3)
がすでに正しくフォーマットされたマウントエントリを/etc/fstab
に書き込む方法を知っているので、setuidのルート実行ファイルを使用する場合はスクリプト言語でCを選び、とにかくスクリプト言語よりCを選ぶでしょう。
user
とnoauto
オプションを含めると、スクリプトは特権を持たずに実行され、必要に応じて共有をマウントできます。
なぜ '/ etc/fstab'を使ってブート時にファイルシステムをマウントしていませんか? – sarnold
私はまだ手作業ですべてをマウントすることに悩まされていましたが、突然100以上の異なるWindowsサーバーが必要な場合には問題になります。理想的には私のPHPスクリプトは、サーバーインベントリデータベースからwindowsserversの名前を読み取って、必要なファイルがそのサーバー上の正しいフォルダにあることを確認します(必要に応じてフォルダをマウントしてからアンマウントするか、可能であればサーバー上で)、次のメッセージに進みます。 – Lobo