Я хочу дать доступ к DIR для друга. У него есть доступ к файловой системе, где находится каталог. Я не хочу устанавливать разрешения для всех пользователей. Как я могу позволить только человеку видеть каталог? Никто из нас не является суперпользователем.
[BOUNTY CHALLENGE] Ни один из ответов не работает, используя Ubuntu:
1. Подход Джамураа не работает
$ setfacl -m user:friend:rwx classroom.xml
setfacl: classroom.xml: Operation not supported
2. Подход nik не работает: невозможно получить доступ к несуществующему файлу
3. Подход ба не работает: я не могу создавать группы, а не рут.
4. Подход ToK не работает, пользователи находятся в двух группах: «пользователи» и «поле»
chown -R myFriend:users ~/TEST
chown: changing ownership of `/u/myFriend/TEST/you_see_it': Operation not permitted
chown: changing ownership of `/u/myFriend/TEST': Operation not permitted
Ответы:
С обычными разрешениями UNIX (пользователь, группа, все) вы не сможете сделать это легко. Если вам больше не нужен доступ к каталогу, вы можете сменить владельца каталога на своего друга, что действует в некоторых Unices, но в большинстве случаев это не так.
Однако - если у вас включены ACL в Linux, вы можете сделать это, если вы являетесь владельцем файла. Просто запустите команду,
setfacl -m user:friend:rwx filename
где friend - это имя учетной записи вашего друга, а filename - это файл. Вы можете проверить, что оно вступило в силу, запустивgetfacl filename
, вы должны увидеть триадуuser:friend:rwx
в списке. Я не видел слишком много систем Linux, в которых включены ACL.источник
Это то, что мы обсуждали еще в школе.
Идет примерно так,
data
, для справки здесь)chmod 711 data
"x
- доступ для входа в каталогdifficult-name-here
(это может быть хеш-строка)chmod a+rx difficult-name-here
"cd path/to/data/difficult-name-here
"root
всегда можно получить доступ ко всему (что не является проблемой здесь)difficult-name-here
с людьми, которых вы хотите, чтобы эти данныеДовольно грубо, но если это можно сломать без нарушения контроля доступа Unix, я бы хотел знать.
Обновление на комментарий от
dmckee
,Это именно то заключение, к которому мы пришли!
«безопасность по неизвестности» имеет ограниченную безопасность .
Сказав это, при разработке защиты данных
важно определить их ценность.
Вы должны стремиться к,
В этом случае, если
root
решит перечислить дерево каталогов где-нибудь в открытом доступе,ваш секрет исчезнет! Но вы защищаете от корней или их потенциальной безответственности?
Если это так, у вас есть гораздо больше поводов для беспокойства, чем общие файлы.
Обновление о неработающей заметке в вопросе .
Я использовал это в первые дни Linux, чтобы знать, что это работает.
Если вы получите «
cannot access non-existant file
вместо'permissions denied
», вы, скорее всего, допустили ошибку в последовательности. То, что вы хотите, должно выглядеть так,CoverDir
доступ как'rwx--x--x
»,группа и другие пользователи могут только войти в каталог, но не смогут прочитать его содержимое.
'
Obscure
', внутри него и предоставляете полный доступ для чтения с помощью 'rwxr-xr-x
',любой , кто знает это имя, может перечислить его содержимое.
ls BasePath/CoverDir/Obscure
»Потому что люди в вашей группе и других не будут в состоянии «
ls BasePath/CoverDir
».источник
ssh
закрытый ключ).Райан был на самом деле на 100% прав, просто отсталый. Поскольку у вашего друга (вероятно) есть уникальная группа, связанная с его / ее именем пользователя, измените принадлежность группы к рассматриваемому каталогу на эту группу, скорее всего, имя пользователя друга. Чтобы иметь возможность делиться контентом между вами, вы должны сохранить право собственности как пользователь:
Затем назначьте соответствующие разрешения для каталога, в зависимости от того, какой доступ вы хотите, чтобы другой пользователь имел:
предоставит вам полный доступ к каталогу и всему его содержимому.
Пожалуйста, обратите внимание, что это предполагает, что ни один другой пользователь не был добавлен в группу вашего друга. Система вряд ли могла бы выполнить это назначение, однако, как упоминалось ранее, пользователь root может делать то, что он выбирает. Вы можете использовать команду groups, чтобы увидеть каждую группу, к которой принадлежит ваш друг или произвольный пользователь. Кроме того, если разрешения по какой-либо причине не были изменены, вы сможете просматривать файл / etc / group, который содержит назначения групп для каждой группы в системе.
источник
Я бы создал новую группу для вас и вашего друга и установил бы полные права доступа к папке для владельца и группы вместе с битом setgid для каталога.
Но, в зависимости от ваших потребностей, вам также может понадобиться изменить umask для себя и своих друзей, чтобы группа автоматически сменила новые файлы.
источник
Списки контроля доступа являются идеальным способом сделать это.
Однако (если я правильно помню), файловую систему необходимо инициализировать с помощью ACL (например, «/ dev / sda6 / home ext3 default, acl »), через / etc / fstab, и это может сделать только суперпользователь. ..
источник
RBACS как grsec / selinux требуется ..
источник
По умолчанию каждый пользователь в системе Ubuntu также имеет связанную группу с тем же именем. Так что, если вы можете добавить своего друга в свою группу, а затем пометить папку как
g+rwx
, вы будете настроены. Я смутно помню, как этот вариант использования приводился в качестве причины для создания группы для каждого пользователя.источник
Как насчет Dropbox? Вы можете установить его без прав администратора и обе ссылки на одну и ту же учетную запись.
Узнайте, как установить Dropbox в полностью текстовой среде Linux
источник
Я не пробовал этого, но как насчет общедоступного читаемого каталога с зашифрованной FS пользовательского пространства внутри (например, encfs). Затем вы можете поделиться этим паролем с вашим другом, и никто другой не сможет использовать эти данные (ну, я думаю, они могли бы получить данные и запустить взломщик паролей в автономном режиме?).
источник
Чтобы дать Linux ту же изящество, что и окнам в правах доступа к файлам, вы должны вкладывать группы. Создайте одну группу, которая имеет доступ к вашей папке, как вы хотели бы, чтобы ваш друг имел. Добавьте его в эту группу или в группу, в которой он проживает. Например
/ foo - это папка, которой вы хотите поделиться. Создайте группу FooGroup, которая имеет желаемый доступ к папке. Добавьте в эту группу группы и пользователей, которым вы хотите предоставить доступ к этой папке.
Огромная боль иметь группу для каждой папки или файла, но это лучший способ ограничить доступ на том же уровне, что и Windows.
источник
Вы можете зашифровать каталог с помощью
gpg
. А затем попытайтесь запутать место, как, как предложил Ник.источник