Как получить доступ к папке другого пользователя из другой учетной записи пользователя

Если вы действительно хотите заархивировать нескрытые файлы (любого типа, включая каталог) с последними изменениями в сентябре любого года и чье имя содержит oim_server (что похоже на намерение вашей команды ll | grep 'Sep' | grep 'oim_server' , хотя эта команда также будет соответствовать цели пользователя / группы / имени файла / символической ссылки, содержащей Sep или oim_server ), в системе GNU вы можете сделать:

find . -mindepth 1 -maxdepth 1 ! -name '.*' \
       -name '*oim_server*' -printf '%Tm:%p\0' |
  sed -zn 's/^09://p' |
  tar --null --no-recursion -T - -cvvf - |
  xz > file.tar.xz

( - без рекурсии для не также архивировать содержимое этих каталогов в последний раз изменялось в сентябре месяце).

Обратите внимание, что tar не сжимает, он просто архивирует (объединяет файлы с данными и метаданными вместе на ленту или файл, чтобы их можно было восстановить как есть позже). Вы передаете его вывод в компрессор, например xz выше, чтобы получить сжатый архив. Некоторые реализации tar , такие как GNU tar , могут вызывать эти компрессоры сами по себе ( -J / - xz для xz ] сжатие в последних версиях GNU tar ).

Если вы хотите заархивировать файлы, которые появляются в выводе вашего отфильтрованного ls , вы должны сделать:

ll | grep Sep | grep oim_server |
  awk '{print $NF}' |
  tar  --no-recursion -T - -cvvf - |
  xz > file.tar.xz

Что вы можете упростить до:

ll | awk '/Sep/ && /oim_server/ {print $NF}' |
  tar  --no-recursion -T - -cvvf - |
  xz > file.tar.xz

Однако обратите внимание, что он имеет довольно много ограничений:

  • grep Sep ищет Sep во всей строке, а не только в поле месяца. Это включает имя пользователя и группы, имя файла и цель символических ссылок.
  • Сен будет использоваться для файлов, последний раз измененных в сентябре, только для некоторых английских языков.
  • как для сен выше oim_server можно найти где угодно в строке
  • имена файлов могут содержать символы новой строки, поэтому предполагается, что имя файла находится только в одной строке. неправильно в общем случае.
  • хуже того, awk '{print $ NF}' печатает последнее слово каждой строки. Это означает, что он не будет работать для имен файлов, содержащих пробелы, или для символических ссылок (где вместо этого будет выводиться последнее слово цели символической ссылки)
2
22.02.2017, 13:01
5 ответов

Я настоятельно рекомендую вам переместить их куда-нибудь за пределы каталога / root . Это поможет избежать нарушения правил безопасности, о чем предупреждали другие.

Перемещение файлов может быть намного быстрее, чем их копирование. При условии, что они остаются в одной файловой системе, все, что нужно записать, - это новые метаданные файла ( пример: selinux ).

Например. вы можете создать / shared-readonly / и переместить туда файлы с помощью mv . Вам вообще не нужно менять режимы доступа :). Эта конкретная настройка (или использование / home / shared-readonly ) очень приятная и простая. Сам пользовался несколько раз. (Каталоги, которые могут быть записаны несколькими пользователями, по своей сути немного сложнее; к сожалению, они не так надежны в Linux, как могли бы быть).

Вы можете дополнительно ограничить этот общий доступ для не-root-user , например чтобы избежать раскрытия личных данных произвольным демонам без полномочий root. Создайте группу следующим образом, например здесь я называю это заговором :

groupadd conspiracy
usermod -a -G conspiracy not-root-user
chgrp conspiracy /shared-readonly
chmod o-rx /shared-readonly

пользователь без полномочий root должен будет выйти из системы и снова войти в нее, прежде чем он будет признан участником заговора . Используйте id -a , чтобы проверить их членство.

Если вы хотите иметь удобный и видимый доступ к файлам в качестве пользователя root, вы также можете создать на них символическую ссылку. Например. ln -s / shared-readonly.

0
27.01.2020, 21:53

Назначьте файлы группе, к которой принадлежит пользователь без полномочий root.

В большинстве современных систем Linux у каждого пользователя есть своя собственная группа, соответствующая его имени пользователя.

Вы можете изменить групповое владение файлом или каталогом с помощью команды chgrp :

chgrp group_name pathname

Однако обратите внимание, что пользователю без полномочий root также необходим доступ к каталогу для всех родительских каталогов, включая / root для доступа к файлам в / root / Downloads , что обычно не разрешено. Без прав чтения для родительских каталогов все еще существуют ограничения на перечисление содержимого каталога для каталогов в / root . В вашем конкретном случае вам потребуется предоставить x разрешения для / root и / root / Downloads обычным пользователям:

Как root:

$ chmod o+x /root /root/Downloads
$ chgrp user /root/Downloads/file-non-root-user-needs-to-access
2
27.01.2020, 21:53

Можно было бы получить доступ к корневым файлам / каталогам, просто изменив разрешения. Однако я не рекомендую это делать, потому что это было бы большой дырой в безопасности. Однако на персональном компьютере это не будет такой большой проблемой. Тем не менее, если вы хотите добиться этого, вам нужно будет добавить следующие флаги разрешений в каталог / root :

x - это означает, что вы можете открыть / получить доступ к каталогу ( cd в каталог), но вы не можете прочитать его содержимое

r - это позволит вам прочтите содержимое каталога

chmod o+x,o+r /root

. Примечание. Для выполнения этой команды вы должны быть пользователем root ( su root ).

Каталоги внутри / root уже должны иметь разрешения на чтение / выполнение для других пользователей, поэтому у вас не должно возникнуть дополнительных проблем.

6
27.01.2020, 21:53

Под пользователем без полномочий root вы имеете в виду пользователя, которого нет в файле sudoers , или просто другого пользователя, который может выполнить команду от имени пользователя root с помощью sudo ?

В первом случае - нет способа получить доступ к домашней папке root.

Позже вы можете sudo su и теперь вы фактически являетесь пользователем root (если sudo не ограничивает привилегии пользователя каким-либо образом явно).

3
27.01.2020, 21:53

Этот ответ предназначен для Kali Linux (Linux в основном )и может не работать для Ubuntu.

У меня есть лучший ответ для решения проблемы, так как я только что решил свою.

Ответ, получивший наибольшее количество голосов, не работает для Kali Linux (не знаю об Ubuntu ). Ошибка
chmod: invalid mode: ‘o+x,’ Try 'chmod --help' for more information.

Теперь решение без кода:

  • Перейдите в корневую учетную запись и щелкните правой кнопкой мыши папку, которой хотите поделиться. с другими аккаунтами, что в данном случае /root/Downloads.
  • Выберите свойства, перейдите на вкладку разрешений

  • Затем выберите «Создавать и удалять файлы» в раскрывающемся -меню вниз Others access.

  • Нажмите на Change Permissions for Enclosed filesи выберите «читать
    и писать» и «Создавать и удалять файлы» в раскрывающихся -меню
    Другие.
  • Нажмите «Изменить» и «Закрыть». Выйдите из учетной записи.
  • Теперь войдите -в свою учетную запись.
  • Откройте Диспетчер файлов, выберите «Другие» -> «Компьютер» -> root -> «Загрузки».
  • Здесь вы найдете свои файлы.
0
27.01.2020, 21:53

Теги

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