操作 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
by不言謝
希望可以幫助到你。