Yes; the command prefix that you're looking for is
shutdown now ; (followed by your sudo command if you wish)
It will provide the appropriate delay before using the root command via sudo or having logged again as root (sigh)!
From Wikipedia, the free encyclopedia
Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).
Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.
Community icon by Alpár-Etele Méder, licensed under CC BY 3.0
Yes; the command prefix that you're looking for is
shutdown now ; (followed by your sudo command if you wish)
It will provide the appropriate delay before using the root command via sudo or having logged again as root (sigh)!
@deadcatbounce @dontblink That's the Linux version of "press ALT+F4 to enable cheatmode" 🤣
Please don't desecrate my Linux with (what I assume is) Windows talk.
Bleugh! I need a shower!
[The worst Linux users are ex Windows users; 2004 vintage here]
Sure, though I advise against it. The following C program can do that:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char **argv) {
if (argc < 2) {
fprintf(stderr, "usage: %s <command> <args>...", argv[0]);
return EXIT_FAILURE;
}
printf("Executing");
for (int i = 1; i < argc; ++i) {
printf(" %s", argv[i]);
}
puts("\nPress ^C to abort.");
sleep(5);
if (setuid(0)) {
perror("setuid");
return EXIT_FAILURE;
}
execvp(argv[1], argv + 1);
perror(argv[1]);
return EXIT_FAILURE;
}
As seen in:
$ gcc -O2 -o delay-su delay-su.c
$ sudo chown root:sudo delay-su
$ sudo chmod 4750 delay-su
$ ./delay-su id
$ id -u
1000
$ ./delay-su id -u
Executing id -u
^C to abort
0
This will allow anyone in group sudo
to execute any command as root.
You may change the group to something else to control who exactly can
run the program (you cannot change the user of the program).
If there’s some specific command you want to run, it’s better to
hard-code it or configure sudo
to allow execution of that command
without password.
Rare seeing someone using C for automation rather then Python
You cannot write setuid scripts. It must be a binary.
Ohh now I get it
I can’t find anything that quite fits your requirements.
Putting a NOPASSWD option on your sudo config should cover the removal of the password requirement, but this may be ill -advised; it is probably wiser to increase the timestamp_timeout duration.
The intentional delay is tougher, and for that it looks like you’d need to write a PAM module. pam_faildelay is very close to what you need, you’d just need to make it produce a delay on success as well as failure.
What purpose should this fulfil? If you are unsure whether your command is correct, double-check it before hitting the ENTER key.
sure. first, configure sudo to be passwordless, or perhaps just to stay unlocked for longer (it's easy to find instructions for how to do that).
then, put this in your ~/.bashrc
:
alias sudo='echo -n "are you sure? "; for i in $(seq 5); do echo -n "$((6 - $i)) "; sleep 1; done && echo && /usr/bin/sudo '
Now "sudo" will give you a 5 second countdown (during which you can hit ctrl-c if you change your mind) before running whatever command you ask it to.
In terms of security, an alias can be easily overridden by a user who can even choose yo use another shell which will not read .bashrc.
So this solution cannot force/require the user to comply to the delay requirement.
I was thinking maybe with a PAM module the delay can be achieved but I haven't found one that readily does that. Maybe OP needs to implement one :)
If an untrusted user is sitting at the console of a sudoer account, armed with its password, all is lost and any security has effectively been defeated already. While I do understand the concern it seems like something of a moot point.
pam_faildelay almost does it, but it only delays on auth failure. You would want something that delays on success. Might be almost as simple as “if not” on a check on pam_faildelay.