Gue*_*OCs 31 bash sudo scripts
我通常做
sleep 4h; command
Run Code Online (Sandbox Code Playgroud)
4h 后执行命令。但是,如果该命令需要sudo,它将不起作用。
sudo在我运行sleep命令时是否可以授予权限?
des*_*ert 47
使用sudo的地方开始运行命令一个root shell:
sudo bash -c 'sleep 4h; command'
Run Code Online (Sandbox Code Playgroud)
在 root shell 中运行的每个命令都以 root 权限运行,这sleep不会造成伤害。如果您需要运行具有用户权限的命令,请使用sudo -u USERNAME COMMAND,例如:
$ sudo bash -c 'sleep 4h; sudo -u dessert whoami; whoami'
dessert # whoami run as user dessert
root # whoami run as root
Run Code Online (Sandbox Code Playgroud)
另一种方法是sudo visudo允许在没有 root 访问权限的情况下执行命令,请参阅:
如何使用 sudo 在不提示输入密码的情况下允许执行?
请注意,根据命令,这可能会造成安全漏洞。
Ama*_*ren 21
假设您只想运行该过程一次(不是,例如每 4 小时),那么您可以使用 atd
/etc/init.d/atd status或更好systemctl status atd)在终端以 root 身份运行您的命令,如下所示:
# at now + 4 hours
warning: commands will be executed using /bin/sh
at> command
at> CTRL-D
Run Code Online (Sandbox Code Playgroud)如果你想每 4 小时运行一次,你也可以在你的 crontab 中使用 cron(作为 root)和以下配置
0 */4 * * * sh -c $'/path/to/command'
Run Code Online (Sandbox Code Playgroud)sud*_*dus 15
一种方法是通过具有sudo权限的 shellscript 运行(并在启动 shellscript 时提供密码),如果 shellscript 在当前目录中,
sudo ./delayer 4h
Run Code Online (Sandbox Code Playgroud)
哪里delayer可以是包含内容的 shellscript
#!/bin/bash
sleep "$1"
command
Run Code Online (Sandbox Code Playgroud)
使其可执行
chmod +x delayer
Run Code Online (Sandbox Code Playgroud)
并根据需要将其复制或移动到目录中PATH。
如果你想要一个更灵活的shellscript,你可以通过输入参数来选择命令[line]来延迟,你可以尝试
#!/bin/bash
if [ $# -lt 2 ] || [ "$(whoami)" != "root" ]
then
echo "Delay start of command, that needs 'sudo'
Usage: sudo $0 <delay> <command line>
Example: sudo $0 4h parted -ls"
exit
fi
sleep "$1"
shift
"$@"
Run Code Online (Sandbox Code Playgroud)
演示示例(短延迟,5s,用于演示目的),
$ ./delayer
Delay start of command, that needs 'sudo'
Usage: sudo ./delayer <delay> <command line>
Example: sudo ./delayer 4h parted -ls
$ sudo ./delayer 5s parted /dev/sdc p
[sudo] password for sudodus:
Model: Kanguru SS3 (scsi)
Disk /dev/sdc: 15,9GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
2 1049kB 2097kB 1049kB primary bios_grub
3 2097kB 258MB 256MB fat32 primary boot, esp
4 258MB 2274MB 2016MB primary
5 2274MB 12,5GB 10,2GB ext2 primary
1 12,5GB 15,9GB 3394MB ntfs primary msftdata
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6355 次 |
| 最近记录: |