web-dev-qa-db-ja.com

`updatedb`はファイル` mlocate.db`を開けません

ターミナルからupdatedbを実行すると、次のエラーが表示されます。

updatedb: can not open a temporary file for `/var/lib/mlocate/mlocate.db'

updatedbを機能させる方法についてのアイデアはありますか?

2
Ken Sandoval

これは古い投稿であることに気づきましたが、このソリューションは他の場所にはありません。

予想どおり、問題はmlocate.dbファイルではありません。 mlocate実行可能ファイルに対する権限です。これにより問題が修正されます。

Sudo chmod 2755 /usr/bin/mlocate

これが問題の原因です。

$ ls -lathr/usr/bin/mlocate 
-rwx処方箋r-x 1ルートmlocate 39K 2014年11月17日/ usr/bin/mlocate

setuidなしでlocateコマンドを実行できるようにするには、グループにSudoビットが必要です。修正されると、ls出力は次のようになります。

$ ls -lathr/usr/bin/mlocate 
-rwxr-sr-x 1ルートmlocate 39K 2014年11月17日/ usr/bin/mlocate

他の人がchmodファイル自体に対して推奨するdbを実行することは、次に誰かがupdatedbを実行するまでしか機能しません。その後、権限がリセットされます。

3
Chris Hubbard

Ubuntu 14へのアップデート後、私はまだ取得し続けました

$ locate chruby
locate: can not open `/var/lib/mlocate/mlocate.db': Permission denied

そのため、他の回答とは異なり、問題はそのファイルの読み取り権限を広げることではありませんでした。

私の "nonrootuser"はmasterです。 rootというように、そのユーザーをグループに追加しましたmlocate

# addgroup master mlocate

そのディレクトリの詳細を一覧表示して所有権を確認した後:

# ls -al /var/lib/mlocate
drwxr-xr-x  2 root root        4096 Jun 19 13:21 ./
drwxr-xr-x 94 root root        4096 Jan 23 11:27 ../
-rw-r-----  1 root mlocate 50134121 Jun 19 13:21 mlocate.db
2
Marcos

Sudoを指定してコマンドを実行してください:

Sudo updatedb
2
chili555