Ubuntu 9.04でスクリーンショットを撮ろうとしたところ、Compiz Fusionが有効になっている場合は、スクリーンショットにタイトルバー(ウィンドウの装飾)が含まれていなかったので調べた際のメモ。
□ Ubuntuでスクリーンショットを撮る方法 UbuntuのGnome環境でスクリーンショットを撮る場合は、gnome-screenshotで行う。 Gnomeのショートカットキーに割り当てられているので、下記の操作でキャプチャが行える。 --------------------------------------------------------------- PrintScreenキー :画面全体をキャプチャ Alt + PrintScreenキー :フォーカスのあるウィンドウをキャプチャ --------------------------------------------------------------- または、メニューから「アプリケーション」→「アクセサリ」→「スクリーンショットの取得」 でもgnome-screenshotを起動してキャプチャすることができる。 その他、下記のアプリやコマンドでもスクリーンショットを撮ることができます。 --------------------------------------------------------------- gnome-screenshot (gnome-utilsパッケージ) ksnapshot (ksnapshotパッケージ) ※ gimp (gimpパッケージ) importコマンド (imagemagickパッケージ) ※ xwdコマンド (x11-appsパッケージ) --------------------------------------------------------------- (※ = 追加でインストールが必要と思われるもの) 詳細は、下記参照のこと。 http://hitaki.net/diary/20080220.html#p03
□ Ubuntuでタイトルバー付きのスクリーンショットを撮る方法 Compiz Fusionが有効になっているデフォルトの状態で、gnome-screenshotで ウィンドウのみのスクリーンショットを撮ろうとすると、下記の画像のように タイトルバー(ウィンドウ装飾)が取り込まれていません。 これは、Compiz Fusionが有効になっている場合は、ウィンドウ装飾の描画は Compiz Fusionのdecorationプラグインによって描画されるため gnome-screenshotから取り込めないようです。 この問題の対処方法としては2通りあります。後者の方がおすすめです。 --------------------------------------------------------------- 1. Compiz Fusionを無効にしてスクリーンショットを撮る 「システム」→「設定」→「外観の設定」→視覚効果タブで「効果なし」を選択して Compiz Fusionを無効にした上でスクリーンショットを撮ります。 これであれば、問題なくタイトルバーもキャプチャできます。ただし Compiz Fusionの有効/無効を切り替えるのに、少し手間がかかるのが難点でしょうか。 --------------------------------------------------------------- 2. ksnapshotやgimpなどの他のアプリケーションでスクリーンショットを撮る こちらの方法は、Compiz Fusionを有効にしたままでも利用できます。 ksnapshotは、synapticなどを利用してインストールしてください。 kde-i18n-jaも一緒に入れておくと日本語化できます。 ksnapshotからスクリーンショットを撮る場合は、1-2秒程度の 遅延を設定した上で、スクリーンショットを撮りたいウィンドウの タイトルバー部分をクリックしてフォーカスを当てて撮影してください。 gimpの場合は、「ファイル」→「画像の生成」→「スクリーンショット」を選んで ksnapshotと同様の方法で、スクリーンショットを撮ってください。
Ubuntu 8.04環境に移行した際に、Image Zoomをインストールしていると、画像の上で右クリックして表示されるメニューの描画位置が大きく左斜め上にずれます。動作検証環境はUbuntu 8.04/Firefox 3.0.11/Image Zoom 0.3.1です。
原因を調べてみると、どうやらImage Zoomの設定で「マウスジェスチャーを使用する」にチェックを入れてると問題が発生するらしい。設定は、メニューから「ツール」→「アドオン」→「拡張機能」タブを選び、Image Zoomの項目を選択して「設定」を押すして開く。「マウスジェスチャーを使用する」のチェックを外して「OK」を押すことで対処できます。
□ 共有プロトコル SMBとCIFSの違い
プロトコル名 | トランスポート層プロトコル | 使用ポート | 備考 |
---|---|---|---|
CIFS | TCP/IP | 445 | 現在主流のプロトコル |
SMB | NBT(NetBIOS over TCP/IP) またはNetBEUI等 | 137-139 | 過去のプロトコル |
最近は、LinuxからWindowsのファイル共有にアクセスする際に、smbmount・mount.smbfs・mount -t smbfsではなく、mount.cifs・mount -t cifsなどのコマンドでマウントするのが主流になっています。最近のカーネルではsmbfsがサポートされなくなっているため、FedoraとかCentOSではsmbmountコマンド等が削除されており、mount.cifsコマンド等を利用するのが推奨されているようです。これらの件について調べてみたのでそのメモ。
□ mount.cifsでLinuxからWindowsのファイル共有にアクセスする LinuxからWindowsのファイル共有にアクセスする場合、最近では mount.cifsかmount -t cifsコマンドを実行することが多くなってます。 これらのコマンドは、Debian系ではsmbfsパッケージに入っており Redhat系ではsamba-clientパッケージに入っているようです。 Debian系では、Synapticを利用するか下記のコマンドでインストール。 # aptitude install smbfs Ubuntu 8.04/10.04の場合、下記のようなコマンドがインストールされます。 --------------------------------- $ dpkg -L smbfs | grep bin/ /sbin/mount.smbfs /sbin/mount.cifs /sbin/umount.cifs /usr/sbin/cifs.upcall /usr/bin/smbumount /usr/bin/smbmount --------------------------------- 詳細なオプションは、man mount.cifsなどを実行して確認のこと。 Samba 3.2 日本語ドキュメント mount.cifs / umount.cifs http://www.samba.gr.jp/project/translation/3.2/htmldocs/manpages-3/mount.cifs.8.html http://www.samba.gr.jp/project/translation/3.2/htmldocs/manpages-3/umount.cifs.8.html mount.cifsコマンドはLinuxでしか動作せず、kernelでcifsのサポートが必要です。 通常のカーネルであれば、/lib/modules/(カーネルバージョン)/kernel/fs/cifs/cifs.ko などとしてcifsモジュールがインストールされているはずです。 ----------------------------------------------------- $ ls -l /lib/modules/$(uname -r)/kernel/fs/cifs/ 合計 292 -rw-r--r-- 1 root root 293380 2009-04-16 05:11 cifs.ko ----------------------------------------------------- □ mount.cifsでのマウント例 ----------------------------------------------------------------------------------------- $ mount.cifs //(Windows側IPアドレス)/(共有フォルダ名) (Linux側マウントポイント) -o (オプション) $ mount.cifs //192.168.0.2/share ~/hogehoge/ -o user=smbuser,password=smbpass,iocharset=utf8 ----------------------------------------------------------------------------------------- 正常にマウントされた場合は、エラーメッセージ等は表示されずコマンドが正常終了します。 Linux側のマウントポイントは、任意のフォルダを事前に作成しておく必要があります。 また、mount.cifsを実行するユーザが利用できるよう、適切なアクセス権限が必要です。 (例えば、mount.cifsを実行するユーザとフォルダの所有者を同一にしておく、アクセス権を変更する等) 上記の例でいえば、ホームフォルダ上にhogehogeフォルダを作成して 共有にアクセスするためのユーザ名とパスワードを指定し 日本語フォルダが文字化けするのを防ぐためにiocharset=utf8を指定して 接続しています。(Windows XPとの接続でUnicodeが利用できるので) マウントされていることを確認するには、mountコマンドを使用します。 ------------------------------------------------------------- $ mount (略) //192.168.0.2/share on /home/user/hogehoge type cifs (rw,mand,nosuid,nodev,user=smbuser) ------------------------------------------------------------- アンマウントする場合は、下記のようにしてアンマウントできます。 ------------------------------------------------------------- $ umount.cifs (マウントポイント) $ umount.cifs ~/hogehoge/ ------------------------------------------------------------- @IT - Windows上のファイルにLinuxからアクセスするには(mount.cifs編) http://www.atmarkit.co.jp/flinux/rensai/linuxtips/a004mountcifs.html
□ mount.cifsとmount -t cifsで必要なアクセス権限の違い mount -t cifs形式のコマンドでマウント/アンマウントする場合は root権限で実行する必要があります。 ----------------------------------------------------------------------------------------- # mount -t cifs //(Windows側IPアドレス)/(共有フォルダ名) (Linux側マウントポイント) -o (オプション) ----------------------------------------------------------------------------------------- ただし、Debian/Ubuntu等でインストールされるmount.cifsコマンドでは setuid rootされているため、一般ユーザでも書き込み権限のある共有を マウントすることが可能になっています。 --------------------------------------------------------- $ ls -l /sbin/*mount.cifs -rwsr-xr-x 1 root root 23340 2008-10-11 01:56 /sbin/mount.cifs -rwsr-xr-x 1 root root 9260 2008-10-11 01:56 /sbin/umount.cifs --------------------------------------------------------- 確かに、この2つのコマンドはsetuidされているのが確認できます。 参考URL Linux CIFS Client Guide - (cifsを利用する際に役立つガイド:PDF/英語) http://us1.samba.org/samba/ftp/cifs-cvs/linux-cifs-client-guide.pdf
mount.cifsなどのコマンドを実行時に、うまく接続できなかったり共有にアクセスできなかったりする場合のパターンメモ。もちろん、Windows側の共有がちゃんと作成されているかどうか、共有フォルダへのアクセス権/ユーザが設定されているかどうか、アクセス権のあるユーザのパスワードが設定されているかどうか、セキュリティソフトやファイヤウォール等によって通信が遮断されていないかどうか等、Windows側でもしっかりと確認してください。 Windows側での共有方法が、簡易ファイルの共有(コントロールパネル→フォルダオプション→詳細設定の中)に設定されているかどうかでもユーザ認証などが違ってきます。
Linux側でもマウント先ディレクトリへのアクセス権等にも注意してください。(root権限でマウントしてしまい、一般ユーザがアクセスできない等)
また、下記のエラーパターンと同じだからといって原因も同じものとは限りません。"原因の一つかもしれない"という程度に考えて、色々原因を探るのが良いでしょう。
□ パスワードを間違えている場合、共有フォルダへのアクセス権がないなどの場合 $ mount.cifs //192.168.0.2/share ~/hogehoge/ -o user=smbuser,password=user,iocharset=utf8 mount error 13 = Permission denied Refer to the mount.cifs(8) manual page (e.g.man mount.cifs) □ データ入出力エラー Windowsで共有フォルダのユーザにパスワードが設定されていない などの場合に起こります。「コントロールパネル」→「ユーザアカウント」 などでパスワードを設定してください。 もしくは、他の原因によるデータ入出力エラーです。 $ mount.cifs //192.168.0.2/share ~/hogehoge/ -o user=smbuser,password=,iocharset=utf8 mount error 5 = Input/output error Refer to the mount.cifs(8) manual page (e.g.man mount.cifs) □ 共有フォルダ名の後に間違えて/をつけている場合 または、デバイス名を間違えている・存在しない場合 $ mount.cifs //192.168.0.2/share/ ~/hogehoge/ -o user=smbuser,password=,iocharset=utf8 retrying with upper case share name mount error 6 = No such device or address Refer to the mount.cifs(8) manual page (e.g.man mount.cifs) □ 通信そのものが正常に行えていないケース IPアドレスを間違えていたり、ドメイン名で指定する場合は ホスト名の名前解決に失敗していないかIPアドレスでの指定を 試してみてください。 または、セキュリティソフト/ファイヤウォールで通信を 遮断していないか、ネットワーク的に通信が行えるのか pingやtelnet等で確認してください。 $ mount.cifs //192.168.0.222/share ~/hogehoge/ -o user=smbuser,password=,iocharset=utf8 mount error 113 = No route to host Refer to the mount.cifs(8) manual page (e.g.man mount.cifs) □ 共有名を\\から始めた場合 $ mount.cifs \\192.168.0.2/share ~/hogehoge/ -o user=smbuser,password=,iocharset=utf8 mount error : improperly formatted UNC name. \192.168.0.2/share does not begin with \\ or // No ip address specified and hostname not found この場合は、バックスラッシュ\\がエスケープされ、\を指定したとして 扱われてしまうのが原因なので $ mount.cifs \\\\192.168.0.2/share ~/hogehoge/ -o user=smbuser,password=,iocharset=utf8 という形式で指定すればマウントできます。 もっとも、見づらくなるので//192.168.0.2 のような形での指定をお薦めします。
Windowsで詳細なユーザ共有を利用している場合、共有フォルダにアクセスできるユーザのパスワードが空だと、セキュリティ上の理由でそのままではLinux側からmount.cifsできないのでそのメモ。
□ 簡易ユーザの共有と、詳細なユーザ共有の違いとマウント時のメモ コントロールパネル→ファイルオプション→詳細設定の中で設定。 * 簡易ユーザ共有の場合 「ネットワーク上でこのフォルダを共有する」にチェックを入れるとファイルは読み取り可能になるが 書き込むには、「ネットワークユーザによるファイルの変更を許可する」にチェックが必要。 * 詳細なユーザ共有の場合 ユーザにパスワードを設定して、そのユーザ名/パスワードでログインする。 書き込み権限は、「アクセス許可」で「変更」にチェックを入れておくこと。
□ Windowsのパスワードなしアカウントに対してmount.cifsを行うメモ 上記の例でも出てきたように、Windowsの共有フォルダにアクセス権のある ユーザのパスワードが空の場合は、Linux側からmount.cifsできません。 これは、Windows側でのセキュリティ上の制限によるもので、Microsoftの KBによると「Windows は、標準の設定では空のパスワードを使用しているユーザーは コンソール ログオンのみに制限されています。」という理由のためです。 この制限を回避するためには、下記のリンクにあるように ------------------------------------------------------------------ 1. [コントロールパネル] から、 [管理ツール] を選択し、 [ローカル セキュリティ ポリシー] を起動します。 2. [セキュリティの設定] の [ローカルポリシー] 内にある [セキュリティ オプション] を選択します。 3. 「アカウント : ローカルアカウントの空のパスワードをコンソールログオンのみに制限する」を選択します。 4. 「有効」 にチェックが付いていますので 「無効」 に変更します。 ------------------------------------------------------------------ を行うことで、ユーザのパスワードが空でもマウントできるようになります。 ただし、通常は共有ユーザにきちんとパスワードを設定すべきで パスワードなしでマウントできるのは、セキュリティ的に脆弱です。 設定する場合は、そのリスクを理解した上で安全なLAN内などでの 運用にとどめておきましょう。 Microsoft - [WinXP] 空パスワードでネットワーク経由アクセス不可 http://support.microsoft.com/kb/418366/ja