this post was submitted on 21 Mar 2025
14 points (85.0% liked)

Linux

52158 readers
874 users here now

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.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
 

Is there a way to require a user to wait a certain time instead of asking for a password every time he wants to execute a command as root or access the root / or another user account?

top 17 comments
sorted by: hot top controversial new old
[–] cypherpunks@lemmy.ml 22 points 1 day ago* (last edited 1 day ago) (1 children)

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.

[–] Flyswat@lemmy.ml 12 points 1 day ago (1 children)

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 :)

[–] Hawke@lemmy.world 1 points 21 hours ago

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.

[–] mina86@lemmy.wtf 10 points 1 day ago* (last edited 16 hours ago)

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.

[–] Hawke@lemmy.world 7 points 1 day ago* (last edited 21 hours ago)

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.

[–] mbirth@lemmy.ml 6 points 1 day ago

What purpose should this fulfil? If you are unsure whether your command is correct, double-check it before hitting the ENTER key.

[–] mark@social.cool110.xyz 3 points 1 day ago

@dontblink You would have to write a PAM module to do that

[–] deadcatbounce@reddthat.com 1 points 10 hours ago

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)!