使用 sudo 以超级用户身份运行自定义命令?

使用 sudo 以超级用户身份运行自定义命令?

我读过一些帖子,例如是否有一个标准的位置来放置自定义 Linux 脚本?我应该把我的 bash 脚本放在哪里,但我仍然收到一个错误,提示我的脚本在 bash 中找不到。

我已将我的脚本(名为 Wandering_Echo)放入/usr/local/Custom_Programs并将其符号链接到/bin/usr/local/bin/usr/local/sbin,但是当我尝试运行时sudo Wandering_Echo,出现此错误:

sarah@LesserArk:/usr/local/Custom_Programs$ sudo Wandering_Echo ?
sudo: Wandering_Echo: command not found

不确定我做错了什么,因为它在超级用户 bin 目录中。

Wandering_Echo 使用 BTRFS 执行一些低级文件系统操作,因此需要 root 权限才能运行。 编辑0:Wandering_Echo 确实以普通用户身份运行,但不能以终端超级用户身份运行。

编辑1:

sarah@LesserArk:/usr/local/Custom_Programs$ ls -l /usr/local/bin/Wandering_Echo /usr/local/Custom_Programs/Wandering_Echo 
lrwxrwxrwx 1 root root 14 Aug 14 15:22 /usr/local/bin/Wandering_Echo -> Wandering_Echo
-rw-r--r-- 1 root root 96 Aug 14 13:09 /usr/local/Custom_Programs/Wandering_Echo

&

sarah@LesserArk:~$ sudo bash -c 'echo $PATH'
[sudo] password for sarah: 
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin

答案1

存在两个问题:

1.

lrwxrwxrwx 1 root root 14 Aug 14 15:22 /usr/local/bin/Wandering_Echo -> Wandering_Echo

如果您访问符号链接,其目标值将被视为相对于符号链接父文件夹的路径(如果以 开头,则为绝对路径/)。因此,此符号链接不指向/usr/local/Custom_Programs/Wandering_Echo,而是指向其自身,这没什么用。删除它并使用

sudo ln -s /usr/local/Custom_Programs/Wandering_Echo /usr/local/bin/Wandering_Echo

正确创建它。检查其他符号链接。

2.

-rw-r--r-- 1 root root 96 Aug 14 13:09 /usr/local/Custom_Programs/Wandering_Echo

正如您在评论中写到的,这里缺少执行标志。使用

sudo chmod u+x /usr/local/Custom_Programs/Wandering_Echo

使其仅对 root 用户可执行。替换u+xa+x使其对所有用户可执行。

相关内容