Как работать с домашним каталогом, изменяющимся в / root при использовании sudo?

Ubuntu обрабатывает диски несколько иначе, чем Windows. Ubuntu имеет различные устройства, доступные для чтения / записи; вы можете увидеть хороший кусок из них, запустив ls /dev в терминале.

Ваши диски (и их последующие разделы) доступны из местоположения, назначенного им системой, но обычно это что-то вроде /dev/sda1 или /dev/sdb3. Хотя вы можете использовать их (и люди), немного легче запомнить, что такое раздел или устройство, если у него есть имя для него.

Таким образом, система создаст папку (обычно в папке [ f4]), который позволяет вам получить доступ к вашим файлам, и это даст ему метку, которую имеет файловая система для этого раздела или устройства. Это то, что называется монтированием файловой системы. Это также предотвратит появление определенных изменений (например, форматирование раздела).

Таким образом, когда вы сообщаете Ubuntu об установке файловой системы файловой системы Windows, вы говорите ей, чтобы удалить это /media/USERNAME/FILESYSTEMNAMEHERE ссылка. Это также позволит сделать другие вещи в этой файловой системе, если это необходимо, но они не применимы к вашему вопросу.

TL; DR: Нет, размонтирование раздела Windows 10 не повредит файлы в любым способом, формой или формой. Вы просто отключите эти файлы от быстрого доступа (пока вы используете Ubuntu). Это чисто изменение на уровне программного обеспечения и не повлияет на сам физический диск.

Если вам все еще интересно, продолжайте читать и читайте этот вопрос / ответ на Unix & amp; Linux. Есть несколько очень хороших объяснений того, что такое монтирование / размонтирование и что он делает в Linux.

0
задан 12 March 2011 в 22:39

8 ответов

Похоже, что $HOME изменяется на /root в среде вашего скрипта. Попробуйте использовать $SUDO_USER вместо $ON_USER и $(eval echo ~$SUDO_USER) вместо ~:

ak@myo5a:~$ echo "$(grep -v "^#" ~/.dbus/session-bus/$(cat /var/lib/dbus/machine-id)-0)" DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-qH8a0TOc6f,guid=873a5a81a7abe448ef2c293000000012 DBUS_SESSION_BUS_PID=2013 DBUS_SESSION_BUS_WINDOWID=8388609 ak@myo5a:~$ sudo -sH root@myo5a:/home/ak# echo "USER=$USER; HOME=$HOME; SUDO_USER=$SUDO_USER; SUDO_HOME=$(eval echo ~$SUDO_USER)" USER=root; HOME=/root; SUDO_USER=ak; SUDO_HOME=/home/ak root@myo5a:/home/ak# echo "$(grep -v "^#" $(eval echo ~$SUDO_USER)/.dbus/session-bus/$(cat /var/lib/dbus/machine-id)-0)" DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-qH8a0TOc6f,guid=873a5a81a7abe448ef2c293000000012 DBUS_SESSION_BUS_PID=2013 DBUS_SESSION_BUS_WINDOWID=8388609 root@myo5a:/home/ak# sudo -u $SUDO_USER touch /cant_touch_this touch: cannot touch `/cant_touch_this': Permission denied
1
ответ дан 25 July 2018 в 22:21
  • 1
    не работает так, как мне нужно, к большому доступу к модификации системы и конкретному приложению приложения USER для данных папок и конфигураций. SUDO_USER все еще возвращает root ... – user 12 March 2011 в 06:19
  • 2
    Какой пользователь вы используете sudo -s как? – ændrük 12 March 2011 в 08:21
  • 3
    @ Cypher2 Мой пример согласуется с дизайном разрешений файлов sudo и Ubuntu по умолчанию. Руководство sudo объясняет, что «опция -u заставляет sudo запускать указанную команду как пользователь , отличный от root . & Quot; Выполнение команды через sudo -u $USER - это то же самое, что и запуск команды в качестве пользователя $USER. Таким образом, вы не должны ожидать каких-либо повышенных привилегий при использовании sudo -u $SUDO_USER, если только sudo -s не был запущен как root. – ændrük 13 March 2011 в 01:49

Похоже, что $HOME изменяется на /root в среде вашего скрипта. Попробуйте использовать $SUDO_USER вместо $ON_USER и $(eval echo ~$SUDO_USER) вместо ~:

ak@myo5a:~$ echo "$(grep -v "^#" ~/.dbus/session-bus/$(cat /var/lib/dbus/machine-id)-0)" DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-qH8a0TOc6f,guid=873a5a81a7abe448ef2c293000000012 DBUS_SESSION_BUS_PID=2013 DBUS_SESSION_BUS_WINDOWID=8388609 ak@myo5a:~$ sudo -sH root@myo5a:/home/ak# echo "USER=$USER; HOME=$HOME; SUDO_USER=$SUDO_USER; SUDO_HOME=$(eval echo ~$SUDO_USER)" USER=root; HOME=/root; SUDO_USER=ak; SUDO_HOME=/home/ak root@myo5a:/home/ak# echo "$(grep -v "^#" $(eval echo ~$SUDO_USER)/.dbus/session-bus/$(cat /var/lib/dbus/machine-id)-0)" DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-qH8a0TOc6f,guid=873a5a81a7abe448ef2c293000000012 DBUS_SESSION_BUS_PID=2013 DBUS_SESSION_BUS_WINDOWID=8388609 root@myo5a:/home/ak# sudo -u $SUDO_USER touch /cant_touch_this touch: cannot touch `/cant_touch_this': Permission denied
1
ответ дан 26 July 2018 в 20:58
  • 1
    не работает так, как мне нужно, к большому доступу к модификации системы и конкретному приложению приложения USER для данных папок и конфигураций. SUDO_USER все еще возвращает root ... – user 12 March 2011 в 06:19
  • 2
    Какой пользователь вы используете sudo -s как? – ændrük 12 March 2011 в 08:21
  • 3
    @ Cypher2 Мой пример согласуется с дизайном разрешений файлов sudo и Ubuntu по умолчанию. Руководство sudo объясняет, что «опция -u заставляет sudo запускать указанную команду как пользователь , отличный от root . & Quot; Выполнение команды через sudo -u $USER - это то же самое, что и запуск команды в качестве пользователя $USER. Таким образом, вы не должны ожидать каких-либо повышенных привилегий при использовании sudo -u $SUDO_USER, если только sudo -s не был запущен как root. – ændrük 13 March 2011 в 01:49

Похоже, что $HOME изменяется на /root в среде вашего скрипта. Попробуйте использовать $SUDO_USER вместо $ON_USER и $(eval echo ~$SUDO_USER) вместо ~:

ak@myo5a:~$ echo "$(grep -v "^#" ~/.dbus/session-bus/$(cat /var/lib/dbus/machine-id)-0)" DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-qH8a0TOc6f,guid=873a5a81a7abe448ef2c293000000012 DBUS_SESSION_BUS_PID=2013 DBUS_SESSION_BUS_WINDOWID=8388609 ak@myo5a:~$ sudo -sH root@myo5a:/home/ak# echo "USER=$USER; HOME=$HOME; SUDO_USER=$SUDO_USER; SUDO_HOME=$(eval echo ~$SUDO_USER)" USER=root; HOME=/root; SUDO_USER=ak; SUDO_HOME=/home/ak root@myo5a:/home/ak# echo "$(grep -v "^#" $(eval echo ~$SUDO_USER)/.dbus/session-bus/$(cat /var/lib/dbus/machine-id)-0)" DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-qH8a0TOc6f,guid=873a5a81a7abe448ef2c293000000012 DBUS_SESSION_BUS_PID=2013 DBUS_SESSION_BUS_WINDOWID=8388609 root@myo5a:/home/ak# sudo -u $SUDO_USER touch /cant_touch_this touch: cannot touch `/cant_touch_this': Permission denied
1
ответ дан 2 August 2018 в 03:49
  • 1
    не работает так, как мне нужно, к большому доступу к модификации системы и конкретному приложению приложения USER для данных папок и конфигураций. SUDO_USER все еще возвращает root ... – user 12 March 2011 в 06:19
  • 2
    Какой пользователь вы используете sudo -s как? – ændrük 12 March 2011 в 08:21
  • 3
    @ Cypher2 Мой пример согласуется с дизайном разрешений файлов sudo и Ubuntu по умолчанию. Руководство sudo объясняет, что «опция -u заставляет sudo запускать указанную команду как пользователь , отличный от root . & Quot; Выполнение команды через sudo -u $USER - это то же самое, что и запуск команды в качестве пользователя $USER. Таким образом, вы не должны ожидать каких-либо повышенных привилегий при использовании sudo -u $SUDO_USER, если только sudo -s не был запущен как root. – ændrük 13 March 2011 в 01:49

Похоже, что $HOME изменяется на /root в среде вашего скрипта. Попробуйте использовать $SUDO_USER вместо $ON_USER и $(eval echo ~$SUDO_USER) вместо ~:

ak@myo5a:~$ echo "$(grep -v "^#" ~/.dbus/session-bus/$(cat /var/lib/dbus/machine-id)-0)" DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-qH8a0TOc6f,guid=873a5a81a7abe448ef2c293000000012 DBUS_SESSION_BUS_PID=2013 DBUS_SESSION_BUS_WINDOWID=8388609 ak@myo5a:~$ sudo -sH root@myo5a:/home/ak# echo "USER=$USER; HOME=$HOME; SUDO_USER=$SUDO_USER; SUDO_HOME=$(eval echo ~$SUDO_USER)" USER=root; HOME=/root; SUDO_USER=ak; SUDO_HOME=/home/ak root@myo5a:/home/ak# echo "$(grep -v "^#" $(eval echo ~$SUDO_USER)/.dbus/session-bus/$(cat /var/lib/dbus/machine-id)-0)" DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-qH8a0TOc6f,guid=873a5a81a7abe448ef2c293000000012 DBUS_SESSION_BUS_PID=2013 DBUS_SESSION_BUS_WINDOWID=8388609 root@myo5a:/home/ak# sudo -u $SUDO_USER touch /cant_touch_this touch: cannot touch `/cant_touch_this': Permission denied
1
ответ дан 4 August 2018 в 19:53
  • 1
    не работает так, как мне нужно, к большому доступу к модификации системы и конкретному приложению приложения USER для данных папок и конфигураций. SUDO_USER все еще возвращает root ... – user 12 March 2011 в 06:19
  • 2
    Какой пользователь вы используете sudo -s как? – ændrük 12 March 2011 в 08:21
  • 3
    @ Cypher2 Мой пример согласуется с дизайном разрешений файлов sudo и Ubuntu по умолчанию. Руководство sudo объясняет, что «опция -u заставляет sudo запускать указанную команду как пользователь , отличный от root . & Quot; Выполнение команды через sudo -u $USER - это то же самое, что и запуск команды в качестве пользователя $USER. Таким образом, вы не должны ожидать каких-либо повышенных привилегий при использовании sudo -u $SUDO_USER, если только sudo -s не был запущен как root. – ændrük 13 March 2011 в 01:49

Похоже, $ HOME заменяется на / root в среде вашего скрипта. Попробуйте использовать $ SUDO_USER вместо $ ON_USER и $ (eval echo ~ $ SUDO_USER) вместо ~ :

  ak @ myo5a: ~ $ echo "$ (grep -v" ^ # "~ / .dbus / session-bus / $ (cat / var / lib / dbus / machine-id)  -0) «DBUS_SESSION_BUS_ADDRESS = unix: abstract = / tmp / dbus-qH8a0TOc6f, guid = 873a5a81a7abe448ef2c293000000012 DBUS_SESSION_BUS_PID = 2013 DBUS_SESSION_BUS_WINDOWID = 8388609 ak @ myo5a: ~ $ sudo -sH root @ myo5a: / home / ak # echo" USER = $ USER  ; HOME = $ HOME; SUDO_USER = $ SUDO_USER; SUDO_HOME = $ (eval echo ~ $ SUDO_USER) "USER = root;  НАЧАЛО = / корень;  SUDO_USER = ак;  SUDO_HOME = / home / ak root @ myo5a: / home / ak # echo "$ (grep -v" ^ # "$ (eval echo ~ $ SUDO_USER) /. Dbus / session-bus / $ (cat / var / lib /  dbus / machine-id) -0) «DBUS_SESSION_BUS_ADDRESS = unix: abstract = / tmp / dbus-qH8a0TOc6f, guid = 873a5a81a7abe448ef2c293000000012 DBUS_SESSION_BUS_PID = 2013 DBUS_SESSION_BUS_WINDOWID = 8388609 root @ myo5a: / home / ak # sudo -u $ SUDO_USER touch / cant_touch_this touch  : не может касаться `/ cant_touch_this ': Permission denied  
1
ответ дан 6 August 2018 в 03:56

Похоже, $ HOME заменяется на / root в среде вашего скрипта. Попробуйте использовать $ SUDO_USER вместо $ ON_USER и $ (eval echo ~ $ SUDO_USER) вместо ~ :

  ak @ myo5a: ~ $ echo "$ (grep -v" ^ # "~ / .dbus / session-bus / $ (cat / var / lib / dbus / machine-id)  -0) «DBUS_SESSION_BUS_ADDRESS = unix: abstract = / tmp / dbus-qH8a0TOc6f, guid = 873a5a81a7abe448ef2c293000000012 DBUS_SESSION_BUS_PID = 2013 DBUS_SESSION_BUS_WINDOWID = 8388609 ak @ myo5a: ~ $ sudo -sH root @ myo5a: / home / ak # echo" USER = $ USER  ; HOME = $ HOME; SUDO_USER = $ SUDO_USER; SUDO_HOME = $ (eval echo ~ $ SUDO_USER) "USER = root;  НАЧАЛО = / корень;  SUDO_USER = ак;  SUDO_HOME = / home / ak root @ myo5a: / home / ak # echo "$ (grep -v" ^ # "$ (eval echo ~ $ SUDO_USER) /. Dbus / session-bus / $ (cat / var / lib /  dbus / machine-id) -0) «DBUS_SESSION_BUS_ADDRESS = unix: abstract = / tmp / dbus-qH8a0TOc6f, guid = 873a5a81a7abe448ef2c293000000012 DBUS_SESSION_BUS_PID = 2013 DBUS_SESSION_BUS_WINDOWID = 8388609 root @ myo5a: / home / ak # sudo -u $ SUDO_USER touch / cant_touch_this touch  : не может касаться `/ cant_touch_this ': Permission denied  
1
ответ дан 7 August 2018 в 21:53

Похоже, $ HOME заменяется на / root в среде вашего скрипта. Попробуйте использовать $ SUDO_USER вместо $ ON_USER и $ (eval echo ~ $ SUDO_USER) вместо ~ :

  ak @ myo5a: ~ $ echo "$ (grep -v" ^ # "~ / .dbus / session-bus / $ (cat / var / lib / dbus / machine-id)  -0) «DBUS_SESSION_BUS_ADDRESS = unix: abstract = / tmp / dbus-qH8a0TOc6f, guid = 873a5a81a7abe448ef2c293000000012 DBUS_SESSION_BUS_PID = 2013 DBUS_SESSION_BUS_WINDOWID = 8388609 ak @ myo5a: ~ $ sudo -sH root @ myo5a: / home / ak # echo" USER = $ USER  ; HOME = $ HOME; SUDO_USER = $ SUDO_USER; SUDO_HOME = $ (eval echo ~ $ SUDO_USER) "USER = root;  НАЧАЛО = / корень;  SUDO_USER = ак;  SUDO_HOME = / home / ak root @ myo5a: / home / ak # echo "$ (grep -v" ^ # "$ (eval echo ~ $ SUDO_USER) /. Dbus / session-bus / $ (cat / var / lib /  dbus / machine-id) -0) «DBUS_SESSION_BUS_ADDRESS = unix: abstract = / tmp / dbus-qH8a0TOc6f, guid = 873a5a81a7abe448ef2c293000000012 DBUS_SESSION_BUS_PID = 2013 DBUS_SESSION_BUS_WINDOWID = 8388609 root @ myo5a: / home / ak # sudo -u $ SUDO_USER touch / cant_touch_this touch  : не может касаться `/ cant_touch_this ': Permission denied  
1
ответ дан 10 August 2018 в 10:08

Похоже, $ HOME заменяется на / root в среде вашего скрипта. Попробуйте использовать $ SUDO_USER вместо $ ON_USER и $ (eval echo ~ $ SUDO_USER) вместо ~ :

  ak @ myo5a: ~ $ echo "$ (grep -v" ^ # "~ / .dbus / session-bus / $ (cat / var / lib / dbus / machine-id)  -0) «DBUS_SESSION_BUS_ADDRESS = unix: abstract = / tmp / dbus-qH8a0TOc6f, guid = 873a5a81a7abe448ef2c293000000012 DBUS_SESSION_BUS_PID = 2013 DBUS_SESSION_BUS_WINDOWID = 8388609 ak @ myo5a: ~ $ sudo -sH root @ myo5a: / home / ak # echo" USER = $ USER  ; HOME = $ HOME; SUDO_USER = $ SUDO_USER; SUDO_HOME = $ (eval echo ~ $ SUDO_USER) "USER = root;  НАЧАЛО = / корень;  SUDO_USER = ак;  SUDO_HOME = / home / ak root @ myo5a: / home / ak # echo "$ (grep -v" ^ # "$ (eval echo ~ $ SUDO_USER) /. Dbus / session-bus / $ (cat / var / lib /  dbus / machine-id) -0) «DBUS_SESSION_BUS_ADDRESS = unix: abstract = / tmp / dbus-qH8a0TOc6f, guid = 873a5a81a7abe448ef2c293000000012 DBUS_SESSION_BUS_PID = 2013 DBUS_SESSION_BUS_WINDOWID = 8388609 root @ myo5a: / home / ak # sudo -u $ SUDO_USER touch / cant_touch_this touch  : не может касаться `/ cant_touch_this ': Permission denied  
1
ответ дан 13 August 2018 в 16:29
  • 1
    не работает так, как мне нужно, к большому доступу к модификации системы и конкретному приложению приложения USER для данных папок и конфигураций. SUDO_USER все еще возвращает root ... – user 12 March 2011 в 06:19
  • 2
    Какой пользователь вы используете sudo -s as? – ændrük 12 March 2011 в 08:21
  • 3
    @ Cypher2 Мой пример согласуется с дизайном разрешений файлов sudo и Ubuntu по умолчанию. В руководстве sudo объясняется, что «опция -u заставляет sudo запускать указанную команду как пользователь , отличный от root . & Quot; Выполнение команды через sudo -u $ USER - это то же самое, что и выполнение команды в качестве пользователя $ USER . Таким образом, вы не должны ожидать каких-либо повышенных привилегий при использовании sudo -u $ SUDO_USER , если только sudo -s не был запущен как root. – ændrük 13 March 2011 в 01:49

Другие вопросы по тегам:

Похожие вопросы: