
Root is UID 0 on every Linux server, and that single number is the entire story: the kernel skips permission checks for UID 0, so root can read, write, or delete any file, inspect or kill any process, and change any system setting no matter who owns it. Every other account, no matter which groups it belongs to, is fenced in by file permissions and process ownership — root is not fenced in by anything.
On a freshly provisioned Ubuntu or Debian server, root is typically the only account that exists until you create others, and it owns the whole filesystem from `/` down, including every other user's home directory. Logging in as root over SSH means every command you type executes with that same unrestricted authority — there is no confirmation step, no sandbox, and no permission check standing between a command and the system it runs on. That is exactly why root is powerful for genuine system administration and dangerous for anything else: it was designed to have no guardrails, not to have gentle ones.
sudo and root access solve the same problem — running a command with elevated privileges — in opposite ways. Logging in directly as root hands over full, permanent, unrestricted access for the whole session. sudo instead grants a named, non-root user temporary elevated privileges for specific commands, logs exactly what was run and by whom, and never requires that user to know the root password at all.
A team of five engineers using sudo means five distinct accounts, five separate audit trails, and the ability to revoke one person's access without touching anyone else's credentials. A team of five sharing the root password means one credential, one audit trail that can't distinguish who did what, and a password rotation that requires notifying everyone at once.
A single mistyped command as root has no safety net, because root bypasses the exact permission checks that would normally stop a destructive command partway through. `rm -rf /var/www/htaccess` typed with a stray space becomes `rm -rf /var/www /htaccess` — as a regular user, permission errors across most of that tree would halt the damage; as root, every directory in the path is deletable, and the command finishes exactly as typed, with nothing left to recover from a permissions error.
Running routine work — editing configs, restarting services, browsing logs — as root removes the layer of friction that would otherwise catch a typo before it becomes an outage. Reserve root privileges for the specific command that needs them, run it through `sudo` from a named account, and get back out — don't stay logged in as root for a whole session.
A compromised root session compromises the entire server, not just whatever the attacker was after. If a password or SSH key tied to a root login leaks — a phished laptop, a reused password, a badly secured backup — the attacker inherits every one of root's privileges instantly: every website's files, every database, every other user's SSH keys, and the ability to install a persistent backdoor. There is no second wall to get through, because root doesn't have one.
One shared root password across a team isn't just a bad habit — it fails almost any security audit outright, because there is no way to prove who did what, and no way to revoke one departing team member's access without changing the password for everyone else on the team.
Contrast that with a compromised low-privilege site user: PHP-FPM running as that user can read and write inside that site's own directory and not much else, which limits a breach to a single website instead of the whole box.
Disabling direct root SSH login is standard hardening on any Linux server, and it comes down to one setting in `/etc/ssh/sshd_config`: `PermitRootLogin no`. With that setting active, root can't authenticate over SSH at all — every login has to be a named user, and anything that needs root privileges has to go through `sudo`, which puts a named account and a logged command in front of every privileged action.
Pair `PermitRootLogin no` with `PasswordAuthentication no` in the same file so that key-based authentication is the only way in for any account, root included. Together these two lines close off the two most common paths an automated attacker tries first: guessing a root password, and brute-forcing weak SSH credentials over the open internet.
CloudStick removes root from day-to-day server work rather than asking you to manage it carefully by hand. SSH hardening — key-based authentication with password login disabled — is applied automatically the moment a server is installed, and sudo privileges plus system user management are handled from the dashboard instead of by hand-editing sudoers files over SSH. SSH keys themselves live in an SSH Vault rather than being passed around over chat or email.
Every website on a CloudStick server also gets its own isolated system user and home directory, with its PHP-FPM pool running as that user rather than root and open_basedir restricting file access to that site's own directory — so a compromised plugin on one site can't reach another site or the server itself. Dangerous PHP functions like `exec`, `shell_exec`, and `proc_open` are disabled per pool on top of that, closing off another common path from a hacked website to the wider server. For teams, role-based seats (up to 10 on the Business plan) let you give a contractor or new hire exactly the access one server or website needs, without ever handing over a root password or an SSH key to the whole box. The net effect is the same protection root isolation is meant to provide, delivered through the dashboard instead of hand-managed sudoers files and shared keys.

