操作 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不言谢
希望可以帮助到你。
updatedb:无法打开`/var/lib/mlocate/mlocate.db'的临时文件(linux用户不在sudoers文件中)
原文:https://www.cnblogs.com/byx1024/p/12315225.html