On 2022-11-29 at 06:54:50 UTC-0500 (Tue, 29 Nov 2022 12:54:50 +0100)
Gerben Wierda via macports-users <[email protected]>
is rumored to have said:

Over the last years, it has become harder and harder to run Unix services on my Macs. I'm using MacPorts for these since the demise of macOS Server and they include a mail server (dcc, apache-solr8, clamav-server, rspamd, dovecot, postfix)
a name server (nsd, unbound)
a web server (nginx, minio)
Before Monterey I was running Mojave and that worked very well. I skipped Catalina and went straight for Monterey so I would have a long period of 'no large migrations'.

A brave choice. In my opinion, Mojave is the last macOS fit to act as a basic Internet services host. I've used Macs since 1984 and run mail+web+DNS servers on my own Macs since 1994. Catalina is the least suitable OS in that time. Even "Classic" MacOS 9 did less to thwart server usage, and that was when "MacOS Server" was a product with a 3-digit pricetag. Apple does not want people running servers on Macs. Or iPhones, or iPads, or Watches. They DO want to have largely the same OS on all 3.

The experience has been horrible. I had to turn off the application layer firewall on the server for instance.

The Apple ALF is designed to protect people using their Macs in ways Apple approves of. It is possible to have it notionally enabled on Catalina and still run sevices, but you basically have to configure all real functionality off.

And with Catalina, Apple removed the fine old ipfw packet filter and left only a weirdly dysfunctional port of pf that they've jiggered for ALF in undocumented ways. It can be made useful, but only after ALF is disabled.

I had to start some services (MinIO) not via launchd but by hand because they would not start properly because of permissions when I did (MinIO could not access a fixed mount external disk when started from launchd, but had no problem accessing it after boot).

Yes, startup and disk access has been made more arcane intentionally by Apple as a security measure. You cannot expect a normal-ish environment on modern macOS until there's a logged-in GUI user.

About 1 to 2 times every day, the system is totally dead, it gets stuck apparently because it runs out of sockets or something like that. I suspect this is because I am running a public mail server which gets a lot of connections and macOS has some sort of resource leak. After maximally about an hour, the system gets 'unstuck' and moves on. The 'unstuck' started to happen was after 12.5 to 12.5.1 (so an improvement) but it has the feel of Apple doing a quick and dirty fix in 12.5.1 for a resource leak in 12.5.

Ewww. I don't have any experience with MinIO on macOS, but I have seen similar hangs on Catalina machines used only as personal computers that are *in part* due to Mach port leakage in many different programs. I guess I'm glad to hear that there's a fix of sorts in the latest version.

Apple has been a rock solid server system for me for many years. Since Monterey I consider it to be extremely unreliable and not feasible as a server environment for unix-like services.

I have long held back on moving to new versions of macOS because it has been getting more hostile to my usage for some time. Not just server duties, but as a workstation for a sysadmin.

I suspect that all of this is because Apple is moving to a new security mechanism, one more focused on how it is done in iOS too, where things like code signing, immutability of parts of the file system, etc. are taking the role that traditionally is done by ACL/POSIX-like permissions.

I believe that it's more about supplementation and tightening rather than replacement. Traditional POSIX permissions and ACLs have proven to be inadequate to protect macOS users from themselves.

As problematic for me has been the churn of basic services. The logging, service management, and scheduling subsystems of POSIX-compliant systems have long been problematic. It's not accidental that Apple has gone through 2 different bespoke init and syslog replacements and a cron replacement, while Linux and the BSDs have all had their own forays into novel approaches, e.g. systemd, OpenRC, Upstart, Dillon vs. Vixie cron, rsyslog, etc. Apple made some of the same basic choices as the bulk of the Linux world (or at theast the RedHat/Canonical Cabal,) and as a result we share breakage with the victims of systemd: lost or unusable logs, startup anomalies, etc.

Apple's new way of doing security is arguably stronger than the old way.

No argument about it: it is MUCH stronger. The ALF is mostly functional and unobtrusive for most users, and prevents issues that could be be a widespread threat were it not a default part of the OS. As it is, those of us who disable it are beneficiaries of its existence because there's a whole class of malware behaviors that malware authors don't bother trying.

But the 'old' way of doing things is less and less supported and certainly not a focus for Apple to keep operational (which is dumb because by not supporting they are flying blind for the kind of resource leak errors I seem to have encountered). So, install unbound, and after boot macOS will ask you 'do you want unbound to accept incoming connections?'. Yes, of course, but that setting doesn't stick. After every next reboot, the same happens. Run the same executable side by side on different ports, and ALF gets confused. So, not only is the old ACL/POSIX way of permissions no longer properly implemented, the new system is not friendly for your own compiled stuff.

If you code for Macs outside of Apple's macOS commercial ecosystem and rely on cross-platform compatibility via the use of standard POSIX APIs, you will have trouble with any daemon-like software unless you make special accommodations for the extra security on macOS. The same is true of similar novelties on other platforms (SELinux, systemd, etc.) but Apple has done a very poor job of giving developers the tools and docs to Just Work.

[...]

Apple turns macOS into a purely consumer appliance, it seems.

Yes.

That is their good right, but they also starve attention to the old unixy-way of things, leading to weak (certainly not robust) implementations of the unix-side. And that might be the eventual death of MacPorts unless it goes full in on Apple's new security model, signing and all.

I expect that much of MacPorts can continue to work just fine, because so many ports are NOT server packages of any sort.

And for the time being, Apple's own suggestion to move to open source variants of the macOS Server stuff they abandoned, is not to be taken seriously as they also are not serious about the foundation those open source elements need.

Absolutely correct. Apple is not serious about maintaining robust compatibility with the POSIX-compliant world in regards to anything that runs in the background without a UI and talks to the net. They do not want anyone doing that on their devices but them. Whatever they have said about replacing Server is disingenuous lip service. There's nothing for Apple to gain by maintaining the ability to run free software that is not wedded in any exclusive sense to their platform.


--
Bill Cole
[email protected] or [email protected]
(AKA @grumpybozo and many *@billmail.scconsult.com addresses)
Not Currently Available For Hire

Reply via email to