【发布时间】:2016-08-16 14:37:16
【问题描述】:
我有一个 bash 脚本 create-file.sh,它创建了一个名为 a: 的文件
$ cat create-file.sh
# /bin/bash
touch a
当我运行脚本时,它会以我的用户为所有者创建一个文件“a”。
$ ./create-file.sh
$ ls -l
-rw-r--r-- 1 shai wheel 0 Aug 16 17:19 a
但是,当我在 sudo 下运行脚本时,文件是以 root 用户身份创建的:
$ sudo ./create-file.sh
$ ls -l
-rw-r--r-- 1 root wheel 0 Aug 16 17:19 a
有没有办法告诉在 sudo 下运行的脚本以我的用户作为所有者来创建文件?
- 您可以正确地说涉及单个文件的脚本不需要在 sudo 下运行。这个例子当然是对原始问题的简化,我的脚本有更多并且确实需要在 sudo 下运行,但我仍然希望以我的用户作为所有者来创建文件。
【问题讨论】:
-
细节很重要——例如,理想的方法可能涉及诸如运行 sudo 脚本作为协同进程的非提升脚本之类的东西。专注于特定解决方案的问题不允许有细致入微、量身定制的答案。
-
顺便说一句,
# /bin/bash不是#!/bin/bash;!必须是有效的 shebang。 -
@Charles Duffy:当然,
#!/bin/bash,我的错。