Я делаю "варгейм", похожий на тот, что есть на overthewire.org. У меня есть пользователь root, Ubuntu, который может читать, записывать и выполнять файлы в папке. У меня есть один пользователь в папке, который должен иметь доступ только для чтения к файлам в этой папке, а все остальные не должны иметь доступа к папке. Что такое команда chmod для этого? Спасибо!
2 ответа
Вам нужно указать, чтобы пользователь был владельцем, chown -R <username> <foldername>
(-R работает рекурсивно), а затем установите права на чтение только для пользователя chmod -R 400 <foldername>
. Root сможет читать и записывать файлы независимо от установленных разрешений. Теперь проблема, с которой вы столкнетесь, состоит в том, что root не сможет выполнять какие-либо файлы, если не установлен хотя бы один бит выполнения, поэтому вам придется разрешить пользователю-владельцу также выполнять файлы с помощью chmod -R 500 <foldername>
.
Смотрите здесь довольно хорошее объяснение прав доступа к файлам.
У меня есть пользователь 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 {} +