У меня есть папка с моими заметками о системе.
Я вошел в систему как пользователь1
cd masternotes
производит:
bash: cd: mastersnotes: permission denied
whoami
производит:user1
ls -l
производит:
drw-rw-rw-. 2 user1 user1 4096 Mar 26 20:47 masternotes
ls -l
внутри каталога выдает:
-rw-rw-rw-. 7 user1 user1 345 Oct 7 2006 crontab
-rw-rw-rw-. 7 user1 user1 348 Oct 7 2006 crontab~
-rw-rw-rw-. 7 user1 user1 3702 Oct 7 2006 grep_usage.txt
-rw-rw-rw-. 7 user1 user1 91868 Oct 7 2006 lvm-layout-10-14-03.tif
-rw-rw-rw-. 7 user1 user1 30 Oct 7 2006 mysql
-rw-rw-rw-. 7 user1 user1 35764 Oct 7 2006 notes
Я пробежался chmod -R 666 masternotes
по папке.
Я перешел chown
к пользователю root, затем chgrp
к пользователю root и снова вернулся к пользователю user1.
root может войти в папку и открыть файл.
пользователь1 не может.
Есть ли какие-нибудь подсказки относительно того, что здесь происходит?
решение1
Эторазрешенияпроблема, а не проблема собственности.
Разрешения на выполнение (сокращенные x
и указанные там, где -
находится rw-
) явно отсутствуют среди разрешений, которые вы нам показали.
Разрешения на выполнение работают совсем по-другому для каталогов, чем для обычных файлов. Для каталогов разрешения на выполнение дают возможностьвойти в каталог(то есть, чтобы перейти cd
к нему или открыть его в файловом менеджере). Они также дают возможность попытаться получить доступ к файлам в каталоге (хотя то, будет ли это успешным, также зависит от других разрешений, иногда включая разрешения файлов, к которым осуществляется доступ).
root
может войти в каталог, поскольку он на самом деле не связан разрешениями обычным образом. Во многих случаях команды и приложения, которые запускаются как, root
будут пытаться соблюдать разрешения, чтобы соблюдать желания пользователя. Но root
имеет право выполнять любую операцию (которую ОС способна выполнить) над любым файлом или каталогом. В root
оболочке cd
ing в каталог, который не имеет никаких разрешений на выполнение, будет успешным.
Решениедля решения проблемы нужно запустить:
chmod u+x masternotes
Это дает ( +
) владельцу masternotes
( u
) права на выполнение ( x
) в каталоге.
После этого вы сможете войти в этот каталог и попытаться получить доступ к файлам, как обычный пользователь.
Если вы хотите, чтобы члены группы-владельца тоже могли это делать, то вы можете выполнить следующее:
chmod ug+x masternotes
Но вы, вероятно, являетесь единственным членом вашей пользовательской группы (которой принадлежит папка).
Команда chmod
здесь делаетнетнужно запустить как root
--я намеренно сделал так,нетвключено sudo
в любую команду. Высобственныйпапку, поэтому вы можете самостоятельно изменить ее разрешения — вам не нужно root
делать это за себя.
Если вас это интересуетустановка разрешений на выполнение в числовом виде, помните, что для каждой добавляемой вами цифры (начиная с нуля):
- 4 за чтение.
- 2 за запись.
- 1 для выполнения.
Например, если вы хотите, чтобы каждый мог читать и выполнятьsome-file
но чтобы иметь возможность писать, нужно использовать:
chmod 755 some-file
Я рекомендуюFilePermissions в документации сообщества, для получения дополнительной информации о правах доступа к файлам в Ubuntu, включая бит исполнения и его особое значение для папок.