我曾经sudoedit
创建一个文件:
$ sudoedit /etc/systemd/system/apache2.service
但是当我去保存文件时,它把它写在一个临时目录(/ var / temp / blahblah)中。到底是怎么回事?为什么不将其保存到系统目录?
我曾经sudoedit
创建一个文件:
$ sudoedit /etc/systemd/system/apache2.service
但是当我去保存文件时,它把它写在一个临时目录(/ var / temp / blahblah)中。到底是怎么回事?为什么不将其保存到系统目录?
Answers:
关键sudoedit
是要允许用户在运行无特权的编辑器时编辑他们原本不会被允许的文件。为此,sudoedit
请将要编辑的文件复制到一个临时位置,使其可以被发出请求的用户写入,然后在配置的编辑器中将其打开。这就是为什么编辑器在临时目录中显示无关文件名的原因。编辑器退出时,sudoedit
检查是否确实进行了任何更改,并在必要时将更改后的临时文件复制回其原始位置。
visudo
for /etc/sudoers
。
visudo
了sudoedit
。我知道visudo
确实做到了。感谢您清理!
这是很好的解释了sudo
手册页。的描述-e
(其sudoedit
等效于)表示:
-e
该
-e
(编辑)选项表示,而不是运行一个命令,用户希望编辑一个或多个文件。在sudoedit
查询安全策略时,将使用字符串“ ” 代替命令。如果该用户得到该策略的授权,则将执行以下步骤:
- 临时副本由要编辑的文件组成,所有者设置为调用用户。
- 运行该策略指定的编辑器以编辑临时文件。该
sudoers
策略使用SUDO_EDITOR
,VISUAL
和EDITOR
环境变量(按顺序)。如果没有的SUDO_EDITOR
,VISUAL
或EDITOR
设定,在编辑器中列出的第一个程序sudoers(5)
是使用选项。- 如果已对它们进行了修改,则将临时文件复制回其原始位置,并删除临时版本。
如果指定的文件不存在,将创建该文件。请注意,与大多数由运行的命令不同
sudo
,该编辑器在未修改调用用户环境的情况下运行。如果由于某种原因sudo
而无法使用其编辑版本更新文件,则用户将收到警告,并且编辑后的副本将保留在临时文件中。
特别要注意第三步:只有在编辑结束时修改了文件,才对原始文件进行更改。因此,如果您有一个监视文件的程序,则可以帮助避免(a)中间写入被拾取,以及(b)如果您决定最后不做任何更改,则可以避免不必要的操作。