お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2010-10-23 12:47:30

makopi
メンバ
登録日: 2009-11-01

追加HDDへのファイル出力で Permission denied

すみませんがお知恵を拝借させてください。

現在、仮想マシン(vmware, Ubuntu10.04 desktop amd64)に追加の仮想HDDを設定し、自動マウントで中身も見えている状態です。
勉強も兼ねて rsync 等を使ったバックアップ作業のスクリプトを書いてみることにしました。
dpkg で追加(バックアップ)HDDへインストールされたパッケージリストを出力させようとしたのですが、

コード:

./backup-anything.sh: line 6: /media/backup/install-pkg.txt: Permission denied

と出てしまいます。

検索すると SELinux や mount の nosuid が出てきました。
実機での動作も想定しており、出来れば自動マウント下でやりたいのですが良い方法はあるのでしょうか?

また、rsync の使い方で「こうした方が良いよ。」とかのレクチャーもいただけたら嬉しいです。

よろしくお願いします。



backup-anything.sh の内容

コード:

#!/usr/bin/env bash

sudo rsync -va --exclude=/media/backup/ --exclude=/proc --exclude=/sys --exclude=/dev --exclude=/tmp --delete / /media/backup

# get the Installed Packages list
sudo dpkg --get-selections > /media/backup/install-pkg.txt

mount の実行結果

コード:

proc on /proc type proc (rw,noexec,nosuid,nodev)
none on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
none on /dev type devtmpfs (rw,mode=0755)
none on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
none on /dev/shm type tmpfs (rw,nosuid,nodev)
none on /var/run type tmpfs (rw,nosuid,mode=0755)
none on /var/lock type tmpfs (rw,noexec,nosuid,nodev)
none on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)
gvfs-fuse-daemon on /home/ユーザー名/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=ユーザー名)
/dev/sdb on /media/backup type ext4 (rw,nosuid,nodev,uhelper=udisks)

オフライン

 

#2 2010-10-23 15:46:31

hmatsue
アドバイザ
登録日: 2009-03-10

Re: 追加HDDへのファイル出力で Permission denied

makopi による投稿:

コード:

./backup-anything.sh: line 6: /media/backup/install-pkg.txt: Permission denied

と出てしまいます。

エラーメッセージにあるように権限不足のようです。

makopi による投稿:

backup-anything.sh の内容

コード:

#!/usr/bin/env bash

sudo rsync -va --exclude=/media/backup/ --exclude=/proc --exclude=/sys --exclude=/dev --exclude=/tmp --delete / /media/backup

# get the Installed Packages list
sudo dpkg --get-selections > /media/backup/install-pkg.txt

このスクリプトを実行すると、
sudo dpkg --get-selections
の部分は管理者権限で実行されますが、
> /media/backup/install-pkg.txt
の部分が一般ユーザ権限での実行となります。
/media/backupにマウントされている領域がext4のようですので、このディレクトリが管理者権限で無いと書き込めない状態になっているのでは無いでしょうか。
一般ユーザで読み書き可能に設定するか、
sudo dpkg --get-selections | sudo tee /media/backup/install-pkg.txt
のようにして管理者権限でファイルを書き出す必要があるかと思います。

オフライン

 

#3 2010-10-23 16:59:10

makopi
メンバ
登録日: 2009-11-01

Re: 追加HDDへのファイル出力で Permission denied

hmatsue さん

コード:

sudo dpkg --get-selections | sudo tee /media/backup/install-pkg.txt

を実行したところ、意図する動作となりました。

ありがとうございました。

オフライン

 

#4 2010-10-23 23:52:07

einundzwanzighundertsechs
メンバ
登録日: 2008-12-28

Re: 追加HDDへのファイル出力で Permission denied

書き込み先に一般ユーザの権限を与えられないという制限があるとして,
スクリプト内のコマンドの殆どを root 権限で動かさなければならないという状況下では,瑣末な問題ですが,

makopi さん による投稿:

勉強も兼ねて

とのことなので,正確な「権限」の理解のために…

#1 の文脈においては,厳密に言えば,dpkg --get-selections の前の sudo は不必要です.

コード:

dpkg --get-selections | sudo tee /media/backup/install-pkg.txt

オフライン

 

#5 2010-10-24 13:03:04

makopi
メンバ
登録日: 2009-11-01

Re: 追加HDDへのファイル出力で Permission denied

einundzwanzighundertsechs さん による投稿:

厳密に言えば,dpkg --get-selections の前の sudo は不必要です.

コード:

dpkg --get-selections | sudo tee /media/backup/install-pkg.txt

動作を確認しました。アップデート時にパスワードを要求されるのでパッケージ関連は管理者権限だと思っていました。

まだ試してはいませんが

コード:

sudo dpkg --set-selections
sudo apt-get dselect-upgrade

も sudo は要らないのでしょうか?

オフライン

 

#6 2010-10-24 13:06:03

yama
メンバ
登録日: 2006-10-23

Re: 追加HDDへのファイル出力で Permission denied

 / 以下をまとめてrsyncしているようですが、 ubuntuは再インストールが比較的楽なので、更新されるディレクトリのみをバックアップした方が効率がいいです。
 例えば、/home だけとか。
 場合によっては/etc /var なども。

 と思ったのですが、ubuntuをvmwareで動かしているのならばvmwareでスナップショットを取っておくのが一番簡単な方法かと…

オフライン

 

#7 2010-10-24 13:27:57

hmatsue
アドバイザ
登録日: 2009-03-10

Re: 追加HDDへのファイル出力で Permission denied

makopi による投稿:

動作を確認しました。アップデート時にパスワードを要求されるのでパッケージ関連は管理者権限だと思っていました。

まだ試してはいませんが

コード:

sudo dpkg --set-selections
sudo apt-get dselect-upgrade

も sudo は要らないのでしょうか?

お恥ずかしながら自分もdpkgだから、と思ってみてしまっていてsudoの部分をスルーしてしまっていました。。
--get-selectionsは情報を取ってくるだけなので管理者権限は必要ありません。
--set-selectionsやapt-getでのパッケージのインストール作業などはシステムに変更を加えるため管理者権限が必要になります。
つまりsudoを付ける必要があります。

同様に、
apt-cache search package-name
apt-get source package-name
などは管理者権限は不要ですし、
apt-get install package-name
apt-get remove package-name
などでは管理者権限が必要になります。

オフライン

 

#8 2010-10-24 14:48:33

makopi
メンバ
登録日: 2009-11-01

Re: 追加HDDへのファイル出力で Permission denied

yama さん による投稿:

更新されるディレクトリのみをバックアップした方が効率がいいです。
例えば、/home だけとか。
場合によっては/etc /var なども。

参考にさせていただきます。
対象ディレクトリーの絞り込みはこの後やるつもりです。

ubuntuをvmwareで動かしているのならばvmwareでスナップショットを取っておくのが一番簡単な方法かと…

はい、普段はそうしています。今回は実機に向けての勉強と見ていただければよろしいかと思います。

ありがとうございました。

オフライン

 

#9 2010-10-24 14:51:58

makopi
メンバ
登録日: 2009-11-01

Re: 追加HDDへのファイル出力で Permission denied

hmatsue さん による投稿:

--get-selectionsは情報を取ってくるだけなので管理者権限は必要ありません。
--set-selectionsやapt-getでのパッケージのインストール作業などはシステムに変更を加えるため管理者権限が必要になります。
つまりsudoを付ける必要があります。

同様に、
apt-cache search package-name
apt-get source package-name
などは管理者権限は不要ですし、
apt-get install package-name
apt-get remove package-name
などでは管理者権限が必要になります。

詳しい説明ありがとうございました。

オフライン

 

Board footer

Powered by FluxBB