ฉันจะยกระดับสิทธิ์หอยโข่งเพื่อย้ายหรือคัดลอกโฟลเดอร์เป็นรูตได้อย่างไร


11

สมมติว่าฉันเปิดโฟลเดอร์ใน Nautilus ที่อยู่ใน/home/user/tempไดเรกทอรีของฉัน ฉันต้องการย้ายโฟลเดอร์จากที่นั่นไปยัง/optไดเรกทอรีของฉัน(เป็นโปรแกรม) มีวิธีที่ฉันสามารถยกระดับคำสั่งคัดลอกได้ถึงsudoเพื่อให้ฉันสามารถคัดลอกโฟลเดอร์โดยไม่ต้องเริ่มต้นอินสแตนซ์ใหม่ของ Nautilus จากบรรทัดคำสั่งหรือไม่

คำตอบ:


6

เท่าที่ฉันสามารถพูดได้ตามสิ่งที่ฉันรู้และมีประสบการณ์:

sudoใช้สำหรับแอปพลิเคชัน / คำสั่งของบรรทัดคำสั่งและgksudoมีประโยชน์เมื่อคุณพยายามเรียกใช้โปรแกรมโดยใช้หน้าต่างโต้ตอบเรียกใช้แอปพลิเคชันโดยกด Alt + F2

ฉันได้อ่านว่าเป็นเพียงรุ่นกราฟิกgksudosudo

อย่างไรก็ตามคุณสามารถวางsudo nautilusและ / หรือgksu nautilus ในเทอร์มินัลเพื่อทำสิ่งที่คุณต้องการโดยมีผลเหมือนกันทั้งสองคำสั่ง แต่ถ้าคุณต้องการละเว้นเทอร์มินัลและคุณต้องการเรียกใช้โดยตรงด้วยหน้าต่างโต้ตอบ" เรียกใช้แอปพลิเคชัน " เพียงกด Alt + F2 แล้วเขียนgksu nautilusหลังจากนั้นคุณจะได้รับแจ้งให้ป้อนรหัสผ่านของคุณจากนั้นเบราว์เซอร์ไฟล์ nautilus ด้วยสิทธิ์รูท

นอกจากนี้คุณสามารถเปิดไฟล์ / โฟลเดอร์ได้อย่างง่ายดายด้วยการคลิกเพียงครั้งเดียวโดยใช้ตัวเลือก "Open as Administrator" ผ่านการคลิกขวา ซึ่งในกรณีใด ๆ จะเปิดอินสแตนซ์ nautilus ใหม่สำหรับโฟลเดอร์ที่กำหนดและจะเปิดไฟล์ในฐานะ root นี่อาจเปิด / เรียกใช้แอปพลิเคชันในฐานะรูท แต่ฉันยังไม่ได้ทดสอบ

ป้อนคำอธิบายรูปภาพที่นี่

คุณสามารถรับตัวเลือก "Open as Administration" ในเมนูตามบริบทของคุณโดยการติดตั้ง nautilus-gksu ผ่านทางบรรทัดคำสั่ง: sudo apt-get install nautilus-gksuหรือโดยใช้ synaptic ดังที่แสดงในภาพถัดไป:

ป้อนคำอธิบายรูปภาพที่นี่

โชคดี!


ดูเหมือนว่าฉันต้องเพิ่มบางสิ่งเพื่อให้ได้คำสั่ง "เปิดเป็น" คุณจำได้ไหมว่ามันคืออะไร? ฉันอยู่ในอูป 11
jcollum

nautilus-gksu, ผ่านทาง synaptic (เพิ่มรูปภาพ) หรือบรรทัดคำสั่ง (พร้อมคำตอบ)
Geppettvs D'Constanzo

3
นี่คือเหตุผลที่เราควรจะใช้gksu nautilusไม่ได้sudo: askubuntu.com/q/11760
Takkat

2
nautilus-gksu เคลื่อนที่หรือไม่? หายไป? ฉันหาไม่พบใน USC หรือ apt-get
jcollum

2
@jcollum nautilus-gksuไม่มีอยู่ในที่เก็บอีกต่อไปตั้งแต่ Ubuntu 12.04
IQAndreas

5

คุณต้องเรียกใช้ Nautilus เป็นรูท

พิมพ์สิ่งนี้ในเทอร์มินัล

gksu nautilus

ตอนนี้คุณสามารถย้ายโดยใช้ GUI

หรือใช้คำสั่งนี้

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

1
ดังนั้นคำตอบคือ "คุณทำไม่ได้โดยไม่ต้องรีสตาร์ท Nautilus"?
jcollum

คุณไม่จำเป็นต้องรีสตาร์ทหอยโข่งเพียงแค่เปิดอินสแตนซ์อื่นด้วยคำสั่ง gksu แต่ถ้าคุณหมายถึง "หอยโข่งเปิดกับผู้ใช้ของฉันและสิทธิ์ root แล้วก็ในกรณีที่ไฟล์ย้าย" อาจจะเป็นสิ่งที่คุณจำเป็นต้องupubuntu.com/2011/12/...
Zurdo

คุณจะต้องเปิดหน้าต่าง nautilus ใหม่ แต่เพื่อทำให้สิ่งต่าง ๆ ง่ายขึ้นคุณก็อปปี้ตำแหน่งจากแถบและเรียกใช้คำสั่ง: gksu nautilus "/path/to/dir/pasted/here"(อัญประกาศรอบเส้นทางมีความสำคัญ)
IQAndreas

1

นี่คือสคริปต์หอยโข่งที่ฉันใช้เพื่อเปิดหน้าต่างผู้ดูแลระบบ (root) 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

อีกโซลูชันที่สำรวยคือการเปิดตัวสำเนาของ Nautilus อีกชุดพร้อมสิทธิ์รูท (sudo) จากบรรทัดคำสั่ง:

gksudo xdg-open <path> &

การปิด&หมายถึงคำสั่งรันเป็นงานพื้นหลัง ดังนั้นการใช้gksudo(การใช้sudoจะหมายถึงพรอมต์ที่มองไม่เห็นซึ่งคุณไม่สามารถตอบสนองได้) xdg-openดูแลการเปิดหน้าต่าง explorer ( nautilusหรืออื่น ๆ )

คุณอาจต้องติดตั้งxdg-utilsและgksuแพ็คเกจก่อน

คุณอาจจะได้รับพวงของคำเตือนและGtk-CRITICALและGlib-GObject-CRITICALข้อความเมื่อปิดหน้าต่าง Nautilus สูง แต่เหล่านี้จะไม่เป็นอันตรายเท่าที่ผมสามารถบอกได้ ฉันชอบที่จะกำจัดพวกเขาถ้าใครรู้วิธี


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

แทนการพิมพ์ชื่อของไฟล์ของคุณโดยไม่ต้องวงเล็บ[Filename][]


2
-1 ไม่ตอบคำถาม ... ฉันไม่ได้ถามวิธีการใช้คำสั่ง mv
jcollum

3
การใช้เพียงคำสั่งเดียวในฐานะรูทนั้นเป็นวิธีปฏิบัติที่ดีกว่าการเปิดกราฟิก Nautilus เป็นรูท
Agmenor

-2

อีกวิธีที่ง่ายคือ

sudo gnome-open foldername

หรือฉันจะแนะนำให้ติดตั้งโปรแกรมจัดการไฟล์ nemo มี 'เปิดเป็นรูท' ในเมนูบริบทคลิกขวา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.