3

Я делаю "варгейм", похожий на тот, что есть на overthewire.org. У меня есть пользователь root, Ubuntu, который может читать, записывать и выполнять файлы в папке. У меня есть один пользователь в папке, который должен иметь доступ только для чтения к файлам в этой папке, а все остальные не должны иметь доступа к папке. Что такое команда chmod для этого? Спасибо!

2 ответа2

0

Вам нужно указать, чтобы пользователь был владельцем, chown -R <username> <foldername> (-R работает рекурсивно), а затем установите права на чтение только для пользователя chmod -R 400 <foldername> . Root сможет читать и записывать файлы независимо от установленных разрешений. Теперь проблема, с которой вы столкнетесь, состоит в том, что root не сможет выполнять какие-либо файлы, если не установлен хотя бы один бит выполнения, поэтому вам придется разрешить пользователю-владельцу также выполнять файлы с помощью chmod -R 500 <foldername> .

Смотрите здесь довольно хорошее объяснение прав доступа к файлам.

0

У меня есть пользователь root, Ubuntu, […]

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

В Ubuntu каждый обычный пользователь по умолчанию имеет свою группу. Такая группа по умолчанию содержит только соответствующего пользователя. Это делает возможным следующий трюк:

sudo chown ubuntu:bob fileA
sudo chmod 740 fileA

Таким образом, ubuntu имеет все разрешения, и bob (как единственный член группы bob ) может только читать файл.

Вы могли бы сделать это наоборот:

# but don't! explanation below
sudo chown bob:ubuntu fileA
sudo chmod 470 fileA

но затем bob как владелец, сможет chmod и давать себе чрезмерные разрешения, либо забирать их у группы ubuntu , либо манипулировать с разрешениями «всех остальных». Любой ответ, который советует вам сделать так, чтобы владелец bob должен был учитывать этот недостаток.

Возможно, вы захотите установить права доступа к каталогу аналогичным, но несколько другим способом. Вы можете сделать эти изменения рекурсивно. Обратите внимание, что chown -R влияет на каталоги и файлы, поэтому вам нужен подход, который может отличить их друг от друга. Смотрите этот ответ. Подход работает с chmod и chown и другими инструментами. Приспособьте это к своим потребностям.

Чтобы рекурсивно дать каталогам права на чтение и выполнение:

find /path/to/base/dir -type d -exec chmod 755 {} +

Чтобы рекурсивно дать файлам права на чтение:

find /path/to/base/dir -type f -exec chmod 644 {} +

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .