updatedb:無法打開`/var/lib/mlocate/mlocate.db'的臨時文件(linux用戶不在sudoers文件中)


 

操作 Linux 。發現 locate 命令的數據庫 不是最新的。(我記得 222 開頭的文本有兩個。)

[byx99@byx-linux ~]# locate 222.txt 
/home/1.6/gs6/myfile/one/2222.txt

 

隨即 就updatedb 指令更新,發現提示如下:

[[byx99@byx-linux ~]# updatedb 
updatedb: 無法為 `/var/lib/mlocate/mlocate.db' 打開臨時文件

初步判斷,應該是當前使用的是 普通用戶,權限不足。必須 以 超級用戶身份運行 updatedb 命令。

隨即,使用root權限,又發現新的提示:

[byx99@byx-linux ~]$ sudo updatedb

我們信任您已經從系統管理員那里了解了日常注意事項。
總結起來無外乎這三點:

    #1) 尊重別人的隱私。
    #2) 輸入前要先考慮(后果和風險)。
    #3) 權力越大,責任越大。

[sudo] byx99 的密碼:
byx99 不在 sudoers 文件中。此事將被報告。

 

處理這個問題很簡單,但應該先理解其原理再操作。

首先要明白 root 的密碼一般用戶是不應改知道的,但一般用戶有時可能要用到root的一些權限。

這里就有了一個 /etc/sudoers 文件用來保存一些用戶。使這些用戶可以通過 sudo命令 來 暫時獲取root的權限。

這些用戶使用sudo時輸入的密碼是當前用戶密碼,而不是root密 碼。還可一在 sudoers文件 里限制一般用戶的權限,這樣就有了安全保證。

現在要讓 byx99 用戶 獲得 sudo 使用權

1. 切換到超級用戶root

[byx99@byx-linux ~]# su root

 

2. 查看/etc/sudoers權限,可以看到當前權限為440

[root@byx-linux ~]# ls -all /etc/sudoers
-r--r----- 1 root root 4328 10月 24 23:23 sudoers 

 

3. 更改權限為777

[root@byx-linux etc]# chmod 777 /etc/sudoers
[root@byx-linux etc]# ls -all /etc/sudoers
-rwxrwxrwx 1 root root 4328 10月 24 23:23 sudoers 

 

4. 編輯/etc/sudoers

[root@byx-linux etc]# vi /etc/sudoers

 

5. 在 root     ALL=(ALL)  ALL 下面添加一行

        byx99  ALL=(ALL)         ALL

   然后  保存退出。

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
byx99   ALL=(ALL)       ALL

   第一個ALL是指網絡中的主機,我們后面把它改成了主機名,它指明jack可以在此主機上執行后面的命令。

   第二個括號里的ALL是指目標用戶,也就是以誰的身份去執行命令。

   最后一個ALL當然就是指命令名了。

   具體這里不作說明。

 

6. 把/etc/sudoers權限改回440

[root@byx-linux etc]# chmod 440 /etc/sudoers 

 

7. 操作完成,切換到 byx99 用戶測試一下。

 

[byx99@byx-linux ~]# sudo updatedb 
[byx99@byx-linux ~]# locate 222.txt 
/home/1.6/gs5/gs44/222.txt
/home/1.6/gs6/myfile/one/2222.txt

 

參考文檔:Linux updatedb 命令 | 菜鳥教程

 

 

by不言謝

希望可以幫助到你。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM