我在 unix/linux 机器上遇到一个奇怪的问题:
我是一个组的成员,我们称之为组 A 并且某个文件(具有不同的所有者)也属于组 A。该文件的权限是
-rw-rw----
Run Code Online (Sandbox Code Playgroud)
所以我希望我应该能够打开那个文件,但我不能:当我尝试查看文件的内容(使用 cat)时,我会收到“权限被拒绝”错误消息。
由于权限似乎是正确的,还有什么可能导致这种情况?是否存在“覆盖”权限限制?如果是这样,我将如何发现?
我有一台 Debian 机器,它收到警告(通过 Tiger 自动审计器)rcp.statd正在监听某某套接字。谷歌搜索显示rpc.statd是 NFS 使用的守护进程。据我所知,我没有使用(也没有安装)任何与 NFS 相关的东西。
什么会安装/启动这个服务,我需要做什么来禁用适当的rcp.statdNFS 守护进程?
与StackOverflow上的这个问题相关,我想知道是否有办法刷新 NFS 缓存/强制 Linux 查看 NFS 共享上文件的最新副本。
我有一种情况,四台 Apache 服务器通过 NFS 挂载同一目录,当一台服务器更改文件时,其他服务器需要大约 5 - 10 秒才能看到该更改。如果在此窗口中对该文件进行了第二次更改,它可能会覆盖第一次更改。
fstab文件系统的条目是:
172.16.1.15:/home /media/home nfs vers=3,defaults,noauto,sync,acregmin=1 0 0
Run Code Online (Sandbox Code Playgroud)
是否有命令可以强制 Linux 刷新 NFS 共享上一个文件的缓存?
我一直在我的服务器上工作,我使用 NFS 从中导出一个目录。当然,在服务器重新启动的一周左右的时间里,我多次忘记umount了工作站中的导出文件系统(从/etc/fstab启动时安装)。在此期间,我能够umount事后重新安装(我没有使用autofs):
umount -fl /data0
mount /data0
Run Code Online (Sandbox Code Playgroud)
但这不再有效。
我无法将服务器导出的目录挂载到其他目录(挂载挂起),但我可以在工作站上运行的虚拟机上 nfs 挂载导出的目录。
我尝试的是删除 ( rmmod)nfs和nfsv3模块(这不起作用: Resource temporarily unavailable)。lsof挂起。mount不显示任何通过nfs. 这可能是多次使用 'umount -l' 的结果,但前两次没有问题。
在没有任何区别的情况下无法安装之后,我同时重新启动了服务器。我也用过service nfs-kernel-server restart。我怀疑如果我重新启动客户端工作站,一切都会恢复正常。
有没有办法从中恢复并在我的工作站上重新初始化 nfs 客户端而无需重新启动?
如果我不重启就无法解决这个问题,如果我开始使用它会不会再次发生autofs?
lsof -b 与最后一行挂起:
lsof: avoiding readlink(/run/user/1001/gvfs): -b was specified.
lsof: avoiding stat(/run/user/1001/gvfs): -b was specified.
lsof: WARNING: can't stat() fuse.gvfsd-fuse file …Run Code Online (Sandbox Code Playgroud) 我删除了一个文件,现在我看到:
$ ls
total 64
-rw-rw-r-- 1 502 17229 Sep 17 16:42 page_object_methods.rb
drwxrwxr-x 7 502 238 Sep 18 18:41 ../
-rw-rw-r-- 1 502 18437 Sep 18 18:41 new_page_object_methods.rb
-rw-r--r-- 1 502 16384 Sep 18 18:42 .nfs0000000000b869e300000001
drwxrwxr-x 5 502 170 Sep 21 13:48 ./
13:48:11 *vagrant* ubuntu-14 selenium_rspec_conversion
Run Code Online (Sandbox Code Playgroud)
如果我尝试删除它:
$ rm .nfs0000000000b869e300000001
rm: cannot remove ‘.nfs0000000000b869e300000001’: Device or resource busy
Run Code Online (Sandbox Code Playgroud)
这说明什么?我该怎么办
每当我尝试启动 NFS 挂载时,我都会得到:
Feb 12 00:02:19 martin-xps.lico.nl rpc.statd[23582]: Version 1.3.2 starting
Feb 12 00:02:19 martin-xps.lico.nl rpc.statd[23582]: Flags: TI-RPC
Feb 12 00:02:19 martin-xps.lico.nl rpc.statd[23582]: Running as root. chown /var/lib/nfs to choose different user
Feb 12 00:02:19 martin-xps.lico.nl rpc.statd[23582]: failed to create RPC listeners, exiting
Feb 12 00:02:19 martin-xps.lico.nl systemd[1]: rpc-statd.service: control process exited, code=exited status=1
Feb 12 00:02:19 martin-xps.lico.nl systemd[1]: Failed to start NFS status monitor for NFSv2/3 locking..
Feb 12 00:02:19 martin-xps.lico.nl systemd[1]: Unit rpc-statd.service entered failed state.
Feb 12 …Run Code Online (Sandbox Code Playgroud) 在我的 NFS 服务器上,我定义了以下导出:
#NFS exports Database
/shared -alldirs -network=192.168.1 -mask=255.255.255.0
Run Code Online (Sandbox Code Playgroud)
在我的 NFS 客户端上:
192.168.1.7:/shared /shared nfs rw 0 0
Run Code Online (Sandbox Code Playgroud)
显然,作为服务器上的 root,我可以为所欲为。然而,在客户端上,我的普通用户 'gabe' 可以更改 nfs 挂载(假设我有权限),但 root 不能。
作为我的普通用户:
gabe@client$ cd /shared
gabe@client$ ls -l
total 8
drwxrwxrwx 4 gabe wheel 512 Mar 20 19:20 tmp
gabe@client$ cd tmp
gabe@client$ touch test.txt
gabe@client$ rm test.txt
Run Code Online (Sandbox Code Playgroud)
作为根:
# cd /shared/tmp
# touch test.txt
touch: test.txt: Permission denied
Run Code Online (Sandbox Code Playgroud)
同样,这一切都在 NFS客户端,我怀疑这可能与 -maproot 选项有关。这是我第一次设置 NFS,我刚刚注意到这个特性。我现在要做一些阅读,看看我是否能解决这个问题,但如果有人有任何见解,我将不胜感激。
几年来我一直在使用NFS (它是我在网络文件中唯一熟悉的)。但是还是查不出来..
NFS在集群设计(或负载平衡?)主要目标是不要让我的单个运行 NFS 服务器出现单点故障。
由于我不知道如何正确制作,到目前为止我自己发明的是:
Shell Script以检查 NSF-Master 服务器挂载点的健康状态。然后如果需要,从它自动卸载(离开),然后从第二个自动挂载。nfsstat -m.. 检查挂载点的健康状况。(我正在使用红帽)
但无论如何,我仍然不认为这是安全和标准的方式。
我正在我的机器上安装 NFS 文件系统。如何确定服务器使用的 NFS 协议版本?我无权访问 NFS 服务器机器,但我的客户端机器上有 root 用户。
有什么我可以在我的客户端机器上运行的东西来识别服务器正在使用什么版本的 NFS 协议,或者它支持什么版本?
我无法在/var/log/messages内核调试输出 ( dmesg) 中找到任何有用的信息。
我试过 running nfsstat,但我不确定它是否给了我任何有用的信息。但是,当我运行nfsstat -s请求有关服务器的信息时,我看不到任何有用的信息:
# nfsstat -s
Server rpc stats:
calls badcalls badfmt badauth badclnt
0 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
当我运行nfsstat -c请求有关客户端的信息时,我确实看到了一些有关 的信息Client nfs v3,但我不确定如何解释它。这是否告诉我有关客户端计算机和 NFS 服务器之间使用的协议的任何信息?这是否意味着我目前使用的是 NFS 协议的 v3?它是否告诉我有关服务器支持的 NFS 协议版本(例如 NFS v4)的任何信息?
我有 oracle linux 6.7,Windows 中的 NFS 服务器,我正在尝试在 Linux 中挂载共享文件夹。
Windows NFS 服务器有一个共享挂载:
192.168.1.10:/OracleBK
Run Code Online (Sandbox Code Playgroud)
在我的 oracle linux 服务器中,我创建了一个文件夹 /orabackup 并且来自 oinstall 组的 oracle 用户是该文件夹的所有者:
mkdir /orabackup
chown -R oracle:oinstall /orabackup
chmod -R 777 /orabackup
mount -t nfs -o rw 192.168.1.10:/OracleBK /orabackup
Run Code Online (Sandbox Code Playgroud)
/etc/fstab 对应的行是
192.168.1.10:/OracleBK /orabackup nfs defaults 0 0
Run Code Online (Sandbox Code Playgroud)
挂载所用文件夹的命令是:
mount /orabackup
Run Code Online (Sandbox Code Playgroud)
现在,安装了“orabackup”文件夹。
但是oracle用户不能读写,需要对该目录的读写权限。root 用户可以读写。
应该怎么做才能给 oracle 用户完全权限?