일반 사용자로 updatedb 명령을 사용하는 방법은 무엇입니까? 그렇다면 일반 사용자가 updatedb

locate명령은 Linux에서 매우 유용한 도구이지만 루트 만 updatedb명령을 실행할 수있는 것처럼 보일 수 있습니다 . 그렇다면 일반 사용자가 updatedb 명령을 실행할 수있는 권한을 가지도록하는 방법은 무엇입니까?

updatedb locate 명령이 사용하는 db를 업데이트하는 데 사용되는 명령입니다.

그러나 updatedb를 일반 사용자로 실행하려고하면 다음 오류 메시지가 나타납니다.

[mirror@home code]$ updatedb
updatedb: can not open a temporary file for `/var/lib/mlocate/mlocate.db'

또는:

updatedb -o db
updatedb: can not change group of file `/var/lib/gforge/chroot/home/users/bigmeow/tmp/db.uhEZFQ': Operation not permitted


답변

명령을 편집하여 다음을 수행하십시오.

updatedb --require-visibility 0 -o ~/.locate.db

“updatedb (8)”에서 :

-l, --require-visibility FLAG

‘설정 그것을보고하기 전에 파일이 필요 가시성을 FLAG에 생성 된 데이터베이스에 플래그를 제공합니다.

FLAG가 0이거나 아니거나 “others”가 데이터베이스 파일을 읽을 수 있거나 slocate가 소유하지 않은 경우 locate (1)는 사용자가 locate (1)를 실행하여 필요한 디렉토리를 읽을 수없는 경우에도 데이터베이스 항목을 출력합니다. 데이터베이스 항목에서 설명하는 파일을 찾으십시오.

FLAG가 1 또는 yes (기본값)이면 locate (1)는 호출하는 사용자에게보고하기 전에 각 항목의 상위 디렉토리 권한을 확인합니다. 파일이 다른 사용자들로부터 실제로 숨겨 지도록하기 위해, 데이터베이스 그룹은 slocate로 설정되고 데이터베이스 권한은 set-gid slocate 인 locate (1) 이외의 다른 수단을 사용하여 사용자가 데이터베이스를 읽을 수 없도록합니다.

가시성 플래그는 데이터베이스가 slocate가 소유하고 “others”가 읽을 수없는 경우에만 확인됩니다.


답변

-o인수를 사용 하여 집에서 데이터베이스를 만들 수 있습니다 updatedb.

updatedb -o ~/.locate.db

그리고 이것을 다음과 slocate같이 사용하십시오 :

slocate --database=~/.locate.db <pattern>

에 대한 별칭을 정의하고 싶을 것입니다 slocate --database=~/.locate.db.


답변

완벽한 솔루션을 갖기위한 모든 단계는 다음과 같습니다 (Centos 6.5에서 테스트).

1) db를 생성하십시오.

updatedb --require-visibility 0 -o ~/.locate.db

2) db를 사용하십시오.

locate --database=/full/path/to/.locate.db (does not work with ~)
or
locate --database=.locate.db

3) 별명을 작성하십시오.

alias mylocate='locate --database=/full/path/to/.locate.db'

4) 로케일 찾기 DB를 사용하십시오.

mylocate <my pattern>