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不言谢

希望可以帮助到你。 

猜你喜欢

转载自www.cnblogs.com/byx1024/p/12315225.html