如何提升nautilus特权以将文件夹移动或复制为root用户?


11

假设我在Nautilus中打开了一个目录中的文件夹/home/user/temp。我想将文件夹从那里移动到我的/opt目录(这是一个程序)。有没有一种方法可以将copy命令提升为a,sudo以便可以复制文件夹而不必从命令行启动新的Nautilus实例?

Answers:


6

据我所知,基于我所知道和经历的:

sudo用于命令行应用程序/命令,gksudo当您尝试通过按Alt + F2 使用“ 运行应用程序”对话框窗口运行程序时,此功能很有用。

我读过gksudo的只是的图形版本sudo

无论如何,您都可以在终端中sudo nautilus和/或gksu nautilus 在终端中进行您想要的操作,这两个命令的效果相同。但是,如果您想省略该终端,并且希望通过“ 运行应用程序 ”对话框窗口直接运行该终端,只需按Alt + F2并gksu nautilus输入,然后会提示您输入密码,然后将打开nautilus文件浏览器具有root特权。

此外,通过右键单击“以管理员身份打开”选项,您可以单击一次以root用户身份打开文件/文件夹。无论如何,它将为给定的文件夹打开一个新的nautilus实例,并以root用户身份打开文件,这也可能以root用户身份打开/运行应用程序,但我尚未对其进行测试。

在此处输入图片说明

您可以通过以下方式在上下文菜单中获得“以管理方式打开”选项:通过命令行安装nautilus-gksu:sudo apt-get install nautilus-gksu或使用下图所示的突触:

在此处输入图片说明

祝好运!


看来我必须添加一些东西才能获取“打开为”命令。你还记得那是什么吗?我在泛11
jcollum

nautilus-gksu,通过突触(添加了图像)或命令行(也在答案中提供)
Geppettvs D'Constanzo

3
这是为什么我们应该使用gksu nautilussudoaskubuntu.com/q/11760
Takkat

2
Nautilus-gksu移动了吗?消失?我在USC或apt-get中找不到它。
jcollum 2013年

2
nautilus-gksu从Ubuntu 12.04开始,@ jcollum 在存储库中不再存在。
IQAndreas

5

您需要以根用户身份运行Nautilus

在终端输入

gksu nautilus

现在您可以使用GUI进行移动。

或使用此命令

sudo mv -r /home/user/temp/<foldername>/ /opt/

1
因此答案是“您不能不重新启动Nautilus”吗?
jcollum 2012年

您无需重新启动nautilus,只需使用gksu命令打开另一个实例。但是,如果你的意思是“开放的鹦鹉螺与我的用户,然后获得root权限在该实例中移动文件”,也许这就是你需要upubuntu.com/2011/12/...
Zurdo创作的

您将需要打开一个新的nautilus窗口,但是为了使操作更容易,您可以从栏中复制位置,然后运行命令:(gksu nautilus "/path/to/dir/pasted/here"路径周围的引号很重要)
IQAndreas

1

这是我用来打开admin(根)Nautilus窗口的nautilus脚本:

#!/bin/bash
# This Nautilus script opens the current nautilus window in admin mode.
# Requires: perl, liburi-perl

ERROR_NEED_PERL="This script requires the liburi-perl package. Install it and try again."
GKSUDO_MESSAGE="Enter your password to open an admin window on: "
ERROR_BROKEN_LINK="Broken link."

## Check for liburi-perl (and hence perl)
let PERLOK=$(dpkg-query -W --showformat='${Status}\n' liburi-perl|grep "install ok installed")
if [ "" == "$PERLOK" ]; then
   zenity --error --text "$ERROR_NEED_PERL"
   exit 1
fi

let LEN_NSSFP=${#NAUTILUS_SCRIPT_SELECTED_FILE_PATHS}-1
[ $LEN_NSSFP -lt 0 ] && let LEN_NSSFP=0
let LEN_NSSU=${#NAUTILUS_SCRIPT_SELECTED_URIS}-1
[ $LEN_NSSU -lt 0 ] && let LEN_NSSU=0

## if clicking happens on the Desktop (or a file or folder on it),
## $1 will be a path (i.e. with "/" in it); otherwise (in a folder
## window) $1 will be just a file or folder name (without path).
## Note that selecting the home desktop namespace extension yields
## a $# of zero but NAUTILUS_SCRIPT_SELECTED_FILE_PATHS pointing to the
## target (in the computer (computer:///) and trash (trash:///) desktop
## namespace extension cases, ...PATHS is empty).

## Initially, we stripped the file:// prefix from NAUTILUS...CURRENT_URI,
## yielding the full path, and then retrofit spaces, like this:
#OBJECT="`echo -n $NAUTILUS_SCRIPT_CURRENT_URI | cut -d'/' -f3- | sed 's/%20/ /g'`"
## However, this fails if any special characters other than spaces are in the path,
## such as accented letters, etc. We need to convert not just spaces, but any
## UTF-8 embedded in there...The URI<->path conversion requires perl (and liburi-perl):
OBJECT=$( echo "$NAUTILUS_SCRIPT_CURRENT_URI" | perl -MURI -le 'print URI->new(<>)->dir' )
## ->file is to be used for file URIs instead of ->dir, which is for directory URIs

CONTEXT="$OBJECT"
## Add the selection to the path, if defined and unique
if [ $# -eq 1 ] ; then
   ## If a single Desktop object, override
   if echo $1 | grep -q "/" ; then ## Desktop (or object on desktop)
      OBJECT="$1"
      CONTEXT=""
   else ## $1 is a simple file or folder name, without a path
      ## The container could be root (/)
      OBJECT="${OBJECT%/}/$1"
   fi
# elif [ $# -eq 0 -a -n "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" ] ; then
elif [ $# -eq 0 ] ; then
   ## desktop name space extension selected?
   if [ -n "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" ] ; then ## Home
      OBJECT="${NAUTILUS_SCRIPT_SELECTED_FILE_PATHS:0:LEN_NSSFP}"
   elif [ -n "$NAUTILUS_SCRIPT_SELECTED_URIS" ] ; then ## Computer, Trash
      ## These typically map to root (/)
#     OBJECT="`echo ${NAUTILUS_SCRIPT_SELECTED_URIS:0:LEN_NSSU} | cut -d'/' -f3- | sed 's/%20/ /g'`"
      OBJECT="${NAUTILUS_SCRIPT_SELECTED_URIS:0:LEN_NSSU}"
      OBJECT=$( echo "$OBJECT" | perl -MURI -le 'print URI->new(<>)->dir' )
   fi
   CONTEXT=""
fi
## Note that a desktop shortcut (.desktop file) does not trip -h
if [ -h "$OBJECT" ] ; then ## symbolic link
   ## readlink has no "follow symlinks as far as they exist" option
   OBJECT=`readlink -e "$OBJECT"`
   if [ -z "$OBJECT" ] ; then
      zenity --error --text "$ERROR_BROKEN_LINK"
      exit 1
   fi
fi

# zenity --info --text "\$OBJECT is « $OBJECT »"
if [ -f "$OBJECT" ] ; then
   ## Regular file
   DIR=`dirname "$OBJECT"`
else
   ## Directory (or no object)
   DIR="$OBJECT"
fi

## If DIR is empty, gnome-open opens in the default (home) directory (i.e. "~") anyway
#if [ -z "$DIR" ] ; then
#   DIR=~
#fi

## At this point, the test [ ! "$CONTEXT" = "$DIR" ] serves to indicate
## that the target directory is not matched to the one the script was
## invoked from (if any).

gksudo --message "$GKSUDO_MESSAGE$DIR" gnome-open "$DIR"

exit $?

0

另一个不错的解决方案是从命令行启动具有root(sudo)特权的Nautilus的另一个副本:

gksudo xdg-open <path> &

关闭&表示该命令作为后台作业运行;因此,使用gksudo(使用sudo将意味着您无法响应的无形提示)。xdg-open负责启动浏览器窗口(nautilus或其他)。

您可能需要事先安装xdg-utilsgksu软件包。

你可能会得到一大堆警告和的Gtk-CRITICALGlib-GObject-CRITICAL在关闭高架Nautilus窗口的消息,但这些都是无害的,据我可以告诉。如果有人知道,我很想摆脱它们。


-1
sudo mv /home/user/temp/[Filename] /opt

而是[Filename]键入文件名,不要使用方括号[]


2
-1,没有解决问题...我没有问如何使用mv命令。
jcollum 2012年

3
与以root用户打开图形化的Nautilus相比,只使用一个命令作为根是一种更好的做法。
阿格梅纳尔2012年

-2

另一个简单的方法是

sudo gnome-open foldername

或者我建议安装nemo文件管理器。右键单击上下文菜单中的“以root用户身份打开”

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.