This might be a stupid question, but hear me out.
I regularly document steps to install various software for myself on my wiki
More recently, I managed to use different custom text in the source markdown to prepend and
$
automatically, so commands can be copied more easily while still clarifying if it should be run as a normal user or as root.
Run command as user
$ some cool command
Run command as root/superuser with sudo
# some dangerous command
I usually remove and sudo
and use the # prefix. However, in some cases, the sudo
actually does something different that needs to be highlighted. For example, I might use it to execute a command as the user www-
sudo -u www-data cp /var/www/html/html1 /var/www/html/html2
I often use $
as a prefix, but would also make sense.
How would you prefix that line?
Neither because it makes it hard to copy paste. If you have to pick one then $ because # is for comments in bash.
It’s not actually part of the command, just some css to add the prefix visually.
Personally i prefer the $ sudo
because honestly i don’t always notice the symbol at the beginning but sudo is really easy to keep track of whats root and what isn’t
is a standard shell prompt for root, and only for root. For commands executed by any other user, including sudo, use
$
.
In general it is a bad practice to use sudo
in documentation because in many distros it is not available by default. I would use su
for your example. However system users have no passwords, so you need to become root first, and only after that change user to avoid prompting a password. So I would write
# su -s /bin/bash www-data
$ cp /var/www/html/html1 /var/www/html/html2
or
# su -s /bin/sh -c 'cp /var/www/html/html1 /var/www/html/html2' www-data
But if you are sure that sudo
is installed and configured on a user’s machine, you may write
$ sudo -u www-data cp /var/www/html/html1 /var/www/html/html2
I disagree completely.
The bad practice is running commands directly as root. It’s fine if you prefer for your own environment but sudo is the best practice.
Additionally, which distro doesn’t have sudo? I’m sure there are some but by far the majority of distos have and use sudo.
Bad practice is not using sudo (I do use it), but assuming that everyone has sudo installed and configured the same way as you have.
Additionally, which distro doesn’t have sudo? I’m sure there are some but by far the majority of distos have and use sudo.
Almost all distros have sudo. But many of them don’t install it by default. Most popular distros except Ubuntu (I mean Debian, Fedora and RHEL clones) provide a choice to user at install time: set the root password or install sudo and enable it for the admin user. In OpenSUSE sudo is installed by default, however it is configured in slightly different way than usually. Etc., etc.
Edit: looks like this is wrong lol, that’s what I get for not verifying. So maybe $ does make more sense!
Original message:
I think I’d go with #.
The non-root user probably doesn’t have permission to run the sudo command as www-data user, but root does.
Unless you previously set permissions for the non-root user to sudo as www-data.
The non-root user probably doesn’t have permission to run the sudo command as www-data user, but root does.
You are wrong. E. g. in Debian (and Ubuntu) the default sudoers
file contains
%sudo ALL=(ALL:ALL) ALL
that means that any user in the sudo
group is permitted to execute any command as any other user. The same for redhat/fedora, but the group name is wheel
there.
I don’t work much with Linux systems these days, but I would vote for $ sudo
over . Two reasons:
- It’s easy to overlook the prompt. That part is basically “some characters before the actual command”, so I don’t normally pay attention it.
is also used for comments. I think it would be confusing to use the same character for two widely different things.
So $ sudo
in general any time I need to run something as root?
I’ll have to think about that some more. I think I rather dislike “forcing” sudo on all commands as root.
Ok, maybe I misunderstood your question. I though you were proposing instead of
$ sudo
and I meant to say that being explicit is better.
I typed the post in a minute and published, so it definitely isn’t the most coherent or well thought out post.
I’m currently using for commands executed by the root user or
sudo
.
Currently, I only use sudo
if the command depends on one of its features. Like the example above where I execute a command as the www-
user.
My dilemma was whether to use $ sudo
or for those few cases. But based on yours and other comments, it might make sense to use
$ sudo
for commands executed as root as well.