我有一个运行 RHEL 5.5 的系统,我正在尝试使用autofs
. (由于网络在启动时未准备好,我不想使用fstab
。)我能够手动安装共享,但autofs
只是没有安装它们。
以下是我正在处理的文件:
在结束时/etc/auto.master
,我有:
## Mount this test share:
/test /etc/auto.test --timeout=60
Run Code Online (Sandbox Code Playgroud)
在/etc/auto.test
,我有:
test -fstype=cifs,username=testuser,domain=domain.com,password=password ://server/test
Run Code Online (Sandbox Code Playgroud)
然后我重新启动autofs
服务。
但是,这不起作用。 ls
-ing 目录不返回任何结果。我在网上遵循了所有这些指南,我要么不理解它们,要么它们就是不工作。
谢谢你
我正在运行 docker 并安装了主机目录:
$ docker run -v /usr/groups/thing -ti imagename /bin/bash
Run Code Online (Sandbox Code Playgroud)
中的文件/usr/groups/thing/foo
可访问:
# ls /usr/groups/thing/foo
a b c
Run Code Online (Sandbox Code Playgroud)
但文件/usr/groups/thing/bar
不是:
# ls /usr/groups/thing/bar
ls: cannot open directory /usr/groups/thing/bar: Too many levels of symbolic links
Run Code Online (Sandbox Code Playgroud)
这是在 Debian 上,/usr/groups/thing
是一个自动挂载的 NFS 卷。
由于 Debian autofs 4 中的停止显示错误,我刚刚升级到 autofs5。它不尊重我的auto.master
文件中的超时选项:
/var/autofs/removable /etc/auto.removable --timeout=2
Run Code Online (Sandbox Code Playgroud)
我将此地图用于拇指驱动器等;我不想要 2 秒的一般默认超时。
我进行了一些挖掘,虽然该--timeout
选项在 autofs 4 中有效,并且出现在 Web 上的一些示例中,但实际上并未在该文件的文档中得到批准(甚至未提及)auto.master
。所以我觉得我不能将问题报告为错误。
如何仅在指定的文件系统上让 autofs5 在 2 秒后超时?
更新:我使用的是 Debian 打包的 autofs5,版本 5.0.4-3.2。
我有一个工作站,我有一个本地用户帐户和本地主目录。我也是一个组织的一部分,在该组织中我有一个 NIS 用户/主目录。我想设置 autofs 以访问一些共享的 NFS 目录。
问题是,在我这样做之后,当我尝试访问它时,它会自动挂载在我的本地主目录上,这对我来说是不可取的。
有没有办法阻止 autofs 挂载到这个挂载点?
以更一般的方式,有没有办法防止 autofs 挂载到现有目录上?
谢谢
我使用 autofs 在文件夹 /mnt/iso 中挂载一些 iso 文件:
Fedora-13-x86_64-DVD.iso
Fedora-14-x86_64-DVD.iso
Fedora-15-x86_64-DVD.iso
Run Code Online (Sandbox Code Playgroud)
autofs 工作正常,我可以看到 iso 文件的内容:
# ls /mnt/iso/fedora.13/
# ls /mnt/iso/fedora.14/
# ls /mnt/iso/fedora.15/
Run Code Online (Sandbox Code Playgroud)
完成 autofs 测试后。我强制卸载所有iso文件夹:
# umount -l /mnt/iso/*
Run Code Online (Sandbox Code Playgroud)
然后我在 /etc/exports 中导出 /mnt/iso:
/mnt/iso 192.168.0.0/24(ro,insecure,crossmnt,all_squash)
Run Code Online (Sandbox Code Playgroud)
NFS 服务也运行良好。我可以通过 nfs 客户端从另一台机器挂载 /mnt/iso:
# mount -t nfs4 <nfs-server>:/mnt/iso /mnt
Run Code Online (Sandbox Code Playgroud)
我可以在 /mnt/ 文件夹中看到所有 iso 挂载:
# ls /mnt
dr-xr-xr-x 15 nobody nobody 4096 2011-06-11 10:23 .
drwxr-xr-x 24 root root 4096 2011-02-08 08:45 ..
drwxr-sr-x 7 nobody nobody 4096 2010-05-13 09:06 fedora.13
drwxr-sr-x …
Run Code Online (Sandbox Code Playgroud) 我已经设置了两个使用自动挂载(通过 LDAP)挂载的目录:
在/home目录下配置automount挂载
* -fstype=bind :/network/srv/home/&
Run Code Online (Sandbox Code Playgroud)
在 /network 目录中的一项
srv -fstype=nfs4,rw,sec=sys,noatime,hard,intr,proto=tcp,timeo=100,port=2049 myserver:/
Run Code Online (Sandbox Code Playgroud)
当我尝试访问用户的主目录(例如 ls /home/myuser)时,自动挂载失败并显示错误消息:
>> mount: special device /network/srv/home/myuser does not exist
failed to mount /home/myuser
Run Code Online (Sandbox Code Playgroud)
当我使用手动执行“绑定安装”时
mount -o bind /network/srv/home/myuser /home/myuser
Run Code Online (Sandbox Code Playgroud)
触发 /network/srv 的自动挂载,并且 myuser 主目录成功挂载到 /home/myuser。
在尝试挂载 /network/srv/home/myuser 之前如何告诉自动挂载加载 /network/srv 的任何想法?
我已经在 CentOS 上使用/etc/auto.mymount
. 像这样的东西:
mymount -fstype=cifs,rw,noperm,credentials=/etc/auto.creds.svc_account ://winserver.domain.local/SharedFolder
Run Code Online (Sandbox Code Playgroud)
这一直在工作,并且仍然适用于某些坐骑。但是,用于连接到 Windows 服务器的帐户的密码已更改,并且现在包含各种特殊字符。我的凭证文件/etc/auto.creds.svc_account
看起来有点像这样:
username=svc_account
password=AbCd@a;abc{`B"[C\\~/fg9w(G':4##abC}d3.H}v,2]f+c
Run Code Online (Sandbox Code Playgroud)
显然我已经更改了上面的密码,但它确实包含真实密码中的各种非字母数字字符。
查看/var/log/messages,我看到以下内容:
Status code returned 0xc000006d NT_STATUS_LOGON_FAILURE
CIFS VFS: Send error in SessSetup = -13
CIFS VFS: cifs_mount failed w/return code = -13
Run Code Online (Sandbox Code Playgroud)
鉴于唯一改变的是密码,我猜测那里有需要以某种方式转义的特殊字符。
现在我知道,如果我将该密码放入命令行,那么命令将由于各种特殊字符而失败,可以通过在每个特殊字符前加上反斜杠来处理。例如:
password=AbCd@a\;abc{\`B\"[C\\\\~/fg9w\(G\':4##abC}d3.H}v,2]f+c
Run Code Online (Sandbox Code Playgroud)
但这不起作用,所以很明显我错过了一些东西。有人能够解释需要在凭据文件中转义哪些字符以及转义它们的正确方法吗?
这是我的第一个 nfs / autofs 配置,所以我可能配置错误。当我导航到添加到 /etc/auto.master 的目录时,我看不到任何挂载点,但是当我发出带有预期挂载点完整路径的 cd 时,它会调出,我可以访问它。我认为,下面的输出是不言自明的:
user@user-desktop:~/mnt/shares/autofs$ ls
user@user-desktop:~/mnt/shares/autofs$ ls ./backup_tmp
lost+found test.file
Run Code Online (Sandbox Code Playgroud)
这就是/etc/auto.master文件的样子(在接收方机器上)。前两行是默认的,所以我不确定是否应该触摸它们:
+dir:/etc/auto.master.d
+auto.master
/home/user/mnt/shares/autofs /etc/auto.misc --timeout=20
Run Code Online (Sandbox Code Playgroud)
这就是/etc/auto.misc的样子(默认情况下第一行):
cd -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
data_archive -fstype=nfs4 192.168.1.140:/mnt/data_archive
data_file-resources -fstype=nfs 192.168.1.140:/mnt/data_file-resources
backup_tmp -fstype=nfs 192.168.1.140:/mnt/backup_tmp
Run Code Online (Sandbox Code Playgroud)
谁能帮我调试这个问题吗?
我逐字复制了某人的 NFS 服务器/客户端设置,但无法理解其中发生的情况。这是/etc/exports:
/export *(rw,fsid=0,crossmnt,insecure,async,no_subtree_check,sec=krb5p:krb5i:krb5)
/export/home *(rw,insecure,async,no_subtree_check,sec=krb5p:krb5i:krb5)
Run Code Online (Sandbox Code Playgroud)
客户端机器使用 autofs 按需挂载用户主目录。这是 auto.home:
* -fstype=nfs4,rw,soft,sec=krb5 192.168.0.2:/home/&
Run Code Online (Sandbox Code Playgroud)
这很有效,而且效果很好。尽管如此,导出/export
似乎没有必要,所以我在服务器配置中注释了该行。现在在客户端上自动挂载失败。
问题
/export/home
需要/export
也导出?/export
和的安全选项是否/export/home
必须相同?192.168.0.2:/home/&
而不是192.168.0.2:/export/home/&
?这似乎根本不应该起作用。我注意到,在自动启动一个新的 Amazon AWS EC2
Spot 实例后(我打开了该选项),文件系统的状态不是最新的(代表前一个 Spot 实例自动关闭之前的最后一个状态,因为当前价格超过了我的设置限制)。我猜新启动的 Spot 实例文件系统的初始状态是基于AMI
我用来自动启动Spot 实例的。我有以下问题:
是否有可能,如果是,可以做什么,在自动关闭之前自动保存文件系统的状态并在自动启动新的 Spot 实例期间恢复它?如果不可能,至少,是否可以自动下载和运行 shell 脚本,使系统达到所需状态(通过 自动更新系统,通过apt-get
获取最新源代码git
等)?
谢谢!
我已经在 Centos 7 上设置了 autofs。但是,似乎在重新启动后,挂载 /home/ 目录需要一些时间,即使我 'cd' 进入它也是如此。它仅在 3 次尝试后成功:
[root@localhost ~] cd /home/<user>
-bash: cd: /home/<user>: No such file or directory
Run Code Online (Sandbox Code Playgroud)
并且,autofs 已启用,因此我希望它在重新启动后启动:
[root@localhost etc]# systemctl status autofs
autofs.service - Automounts filesystems on demand
Loaded: loaded (/usr/lib/systemd/system/autofs.service; enabled)
Active: active (running) since Tue 2015-07-21 10:34:38 HKT; 1h 13min ago
Process: 1379 ExecStart=/usr/sbin/automount $OPTIONS --pid-file /run/autofs.pid (code=exited, status=0/SUCCESS)
Main PID: 1385 (automount)
CGroup: /system.slice/autofs.service
??1385 /usr/sbin/automount --pid-file /run/autofs.pid
Jul 21 10:34:38 localhost.localdomain systemd[1]: Starting Automounts filesystems on demand...
Jul …
Run Code Online (Sandbox Code Playgroud) 我已经使用 autofs 在我的 CentOS 6.4 服务器上设置了 CIFS 挂载:
文件 /etc/auto.mnt :
Photos -fstype=cifs,perm,rw,uid=505,forceuid,gid=505,forcegid,file_mode=0770,dir_mode=0770,credentials=/root/credentials.txt ://adsrv01/Photos
Run Code Online (Sandbox Code Playgroud)
什么ls
命令显示:
[root@websrv01 mnt]# ls -l
total 4
drwxr-xr-x 1 root root 4096 Apr 26 12:01 Photos
Run Code Online (Sandbox Code Playgroud)
我对ls
命令的期望:
[root@websrv01 mnt]# ls -l
total 4
drwxrwx--- 1 photos photos 4096 Apr 26 12:01 Photos
Run Code Online (Sandbox Code Playgroud)
你看有什么不对吗?如何正确设置所有者和 chmod ?
编辑:我忘了说 /mnt/Photos 目录上的 root 用户拒绝 chown 和 chmod 命令。我做对了,我也尝试过使用 fstab。
这就是 fstab 发生的情况:
mkdir /mnt/Photos
chmod 770 /mnt/Photos
chown photos:photos /mnt/Photos
mount /mnt/Photos
Run Code Online (Sandbox Code Playgroud)
挂载目录时,权限会自动更改并设置为 755。我无法将模式设置回 770 :权限被拒绝。
我有一些 RHEL 系统,我需要禁用autofs
. 我通常做的是在每个主机上运行一个脚本,执行如下所示的操作:
# /etc/init.d/autofs stop
...
# /sbin/chkconfig autofs off
...
# reboot
Run Code Online (Sandbox Code Playgroud)
但我遇到的情况是这样做reboot
会引起问题。我想我可以逐一登录到这些主机中的每一个并执行df
,看看 autofs 挂载了哪些文件系统并手动执行,umount /whatever
但这会很痛苦。有谁知道关闭autofs
和umount
安装它所安装的文件系统的巧妙方法?
我确实可以访问puppet
. 也许我可以使用 puppet 来编辑autofs
配置文件,然后呢service autofs reload
?
谢谢