Mac OS X Catalina - NFS File Access Behavior in CRON or Launchd

Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Mac OS X Catalina - NFS File Access Behavior in CRON or Launchd
# 1  
Old 03-20-2020
Mac OS X Catalina - NFS File Access Behavior in CRON or Launchd

I'm really struggling here, and I think this is a new effect of upgrade to Catalina. I have an automounted NFS directory that contains a file I want to periodically copy to my Mac's local file system. I have a script that does this, and it worked beautifully before Catalina upgrade. If I run the script manually (as root) it's all good. If I run the script as part of a scheduled job it fails. I've tried launching the script in root owned cron job, and I've tried using Launchd. Both fail the same way.

My script:


if [ -f /System/Volumes/Data/nfs/hosts ]
cat /etc/hosts.base /System/Volumes/Data/nfs/hosts > /etc/hosts

/System/Volumes/Data/nfs is an NFS share coming off a Synology NAS.

The [ -f ...] part works fine. It can successfully determine if the hosts file exists in the NFS directory. But the cat command fails reading the hosts file. Again, if I run the script manually it all works fine. It only fails if the script is launched from cron or launchd.

File permissions:

brians-mbp:etc root# ls -la /System/Volumes/Data/nfs/hosts
-rwxrwxrwx 1 1024 _lpoperator 2393 Feb 8 14:29 /System/Volumes/Data/nfs/hosts

I've tried fiddling with owner and group, no effect. I've tried different approaches of mounting the NFS drive (automount, fstab, etc), no effect. I've tried different directories, different filenames, etc, no effect. I've tried using different shells in the script (sh, zsh, ...), no effect.

I've tried to find whether Catalina introduced some new ACL mechanisms but can't find anything other than gripes about how Apple changed directory structure in Catalina. But the fact that the script runs just fine if run manually tells me the permissions/ACLs must be ok.

Any ideas?

# 2  
Old 03-20-2020

Are you using variables within the cron script (or is it really as hardcoded as you describe)?
If so, this would be the cause of error, as CRON runs without an 'environment' (AFAIK).

Did you add the job to the root's cron, or to your own?

I dont know /etc/hosts.base ; is that a Mac (or customized) thing?
But since you said the script runs fine when executed manualy, this cant be it.

# 3  
Old 03-20-2020
Thanks hth.

1. The script is hard coded, no environment variables.

2. Yes. sudo su - then crontab -e. I've also tried it using Mac OS X's Launchd, which is their cron replacement since they do state that they are deprecating cron. But it didn't make a difference.

3. I should have been more clear about the behavior. The problem is that the hosts files in the NFS dir can't be read. The [ -f .../hosts] test works fine, so the script can access the NFS directory and see that the file exists, but the cat command can't read the actual file. The hosts.base is moot. If I just simply try to "cat /.../nfs/hosts > /etc/hosts" then I end up with a 0 sized /etc/hosts file.

Somehow Mac OS X Catalina is executing the script in some sort of environment differently depending on whether it is launched manually, or from cron/launchd.
# 4  
Old 03-20-2020
hth = hope this helps

I'm no Mac user, so I cant tell from accurate (to you) practice.
But once I've mounted a NAS path, I could always read files - once I was able to see the directories.

I might not have had write access, but read was always possible when mounted successfully as root (usualy using CIFS, not sure if that applies).

Also, have a re-try with just su as I'm not sure wether or not you had passed that dash, which would make su 'adapt' partialy to the env of the user (kind of, lost in translation and memory).

Comes to mind, check your 'mount nas' options, they might 'provoke' list only.

Also, forgot to say earlier, please use ICODE (Icon: >_) for 'on line' commands, and 'CODE' tags (Icon: </>) for multi-line output, such as your initial post.

# 5  
Old 03-20-2020
Originally Posted by sea
Comes to mind, check your 'mount nas' options, they might 'provoke' list only.
Agreed. Also, check the access rights set on the NAS end. I'm no MAC user either but perhaps your upgraded OS is checking acess rights on the NAS that it wasn't checking before.
# 6  
Old 03-20-2020
Agreed. Also, check the access rights set on the NAS end. I'm no MAC user either but perhaps your upgraded OS is checking acess rights on the NAS that it wasn't checking before.
Well, I'm about to give up. I've gone through every single permission and access rights option on the NAS, no luck. Again, what completely confuses me is that I can run the script manually from the shell and everything works perfectly. So I know that the NFS directory is mounted, and that root user can read the files in it. But as soon as it's a cron job or a launchd job that runs the script it can see the file, but can't read it.

The log simply says:

cat: /System/Volumes/Data/nfs/hosts: Operation not permitted

Without a doubt the upgrade to Catalina resulted in scripts being run within the context of cron or launchd to use a different environment than that of the command line. This approach of mine works on ALL my other Linux, *nix (SunOS, Solaris, HP-UX, AIX, Linux), heck, even OpenVMS, but no longer on Mac OS X. Grrrrr....
# 7  
Old 03-20-2020
Just showing that cat doesnt work, is of no help while we already know that you do not have read access - for some reason.

Without knowing how you actualy mounted your NAS, we cant help you further.
Let me rephrase.

By the sounds of your posts, I take it you tried with chmod?
Instead, show us the mount command used or the according (if applicable) /etc/fstab line.
Login or Register to Ask a Question

Previous Thread | Next Thread

7 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Launchd-owned processes unexpected behavior

Ok, so I have been struggling with this for a few days and I think I need an explanation of a few things before I go any further. I'm not sure it's possible to do what I'm trying, so before I pull my hair out, here is what I'm doing: I have written a program in LiveCode that sits on our... (2 Replies)
Discussion started by: nextyoyoma
2 Replies

2. UNIX for Advanced & Expert Users

Different redirection behavior in BASH/Linux when run under cron vice login ???

run_xfs_fsr is a xfs filesystem maintenance script designed to run under cron. The system is a home theater personal computer running mythbuntu 10.10, and is accessed remotely for these tests. cron runs a script, ( at 02:30 that runs the subject script under BASH and sets the... (3 Replies)
Discussion started by: keepitsimpleeng
3 Replies

3. Shell Programming and Scripting

grep startup messages from catalina.out file

Hello Team, I am trying to extract date from the following output and trying to compare with current date and if there is 10 minute difference between the two. it should logs message in the file server is started.can anyone help me to implement this in the script? (1 Reply)
Discussion started by: coolguyamy
1 Replies

4. Red Hat

NFS Access Issue

Hi, I am facing issue on NFS. I have shared /data file file system on Server, added below lines in /etc/exports /data,no_root_squash,sync) the owner of /data directory was test(uid 500) and same I have mounted on another server where the... (3 Replies)
Discussion started by: manoj.solaris
3 Replies

5. Shell Programming and Scripting

Behavior of Bad Script in Cron Job

Hi A Ksh script is deployed in a server and executed through cronjob. If one of the line in the middle of the script fails . Are the remaining lines executed ? (3 Replies)
Discussion started by: Sivaswami
3 Replies

6. AIX

Cannot access NFS file system

I create a NFS file system. I can read this system from client, however, I cannot write anything in this folder. Why? (1 Reply)
Discussion started by: rainbow_bean
1 Replies

7. UNIX for Advanced & Expert Users

Strange IP traffic behavior when using Samba and FTP (Windows/Mac to Linux)

I have set up a samba share on my Linux server. I have a gigabit switch, gigabit NICs in each machine. I have set up the /etc/samba/smb.conf to support no delay, 8192 send/receive buffers, etc. This helped the rate for Samba go from about 4MB/S to about 10MB/S, but I expect to see about... (1 Reply)
Discussion started by: perspectx
1 Replies
Login or Register to Ask a Question

Featured Tech Videos