Я понимаю, что делают команды chown
и chgrp
, но не понимаю, почему вы хотели бы использовать их, кроме того, чтобы назначить владение другому пользователю или группе? Это в целях безопасности или по какой-то другой причине?
4 ответа
Linux или другие Unix-style-системы созданы как многопользовательские системы.
Вы должны понимать, что в этой концепции не только физические лица учитываются как пользователи, демоны или другие программы могут запускаться как их собственные пользователи.
Например: имеет смысл создать выделенного пользователя для службы apache, если вы хотите запустить веб-сервер. Таким образом, apache не может испортить файлы, для которых у него нет разрешения, в основном из-за того, что он не владеет файлами напрямую и не входит ни в какую группу, в которой находится пользователь.
По сути, вы разделяете доступ к файлам, назначая несколько групп пользователям, вы можете определить, кто и как они могут получить доступ к определенным файлам.
Кстати, chown :group /path/file
делает то же самое, что делает chgrp
, запишите двоеточие перед именем группы, используя chown user:group /path/file
вы можете сделать и то, и другое.
Я должен добавить, что права доступа к файлу должны быть установлены соответственно. Используя chmod
вы можете установить флаги разрешений (чтение, запись, выполнение) для файлов пользователя, группы и мира.
Вы точно поняли: вы используете chown
чтобы изменить владельца или группу файла, чтобы передать право собственности кому-то другому. Вы используете chmod
для изменения разрешений, связанных с одним из владельцев.
Нет более глубокой потребности, которую вы пропустили, просто общий набор мелких потребностей, выраженных этими операциями. Миллионы причин, по которым какой-то другой пользователь должен владеть файлом, но ни одна из них глубже, чем "потому что мы делаем это таким образом".
Если у вас есть несколько файлов, сохраненных на флэш-накопителе USB, созданном в одной ОС, и вам нужно использовать некоторые из этих файлов или все из них в другой (Linux) ОС, вам может потребоваться выполнить команду поиска и в одном случае перейти вниз дерево каталогов для выбора всех файлов, а затем в другой команде поиска выполните команду chgrp, используя функцию -exec команды find, чтобы использовать файлы (предположительно, с разными идентификаторами пользователей и групп), чтобы файлы могли использоваться на обеих разных ОС Linux.
Это связано с одной простой вещью, называемой философией Unix.
Напишите программы, которые делают одно и делают это хорошо. Напишите программы для совместной работы. Написание программ для обработки текстовых потоков, потому что это универсальный интерфейс.
По крайней мере, это то, что я предполагаю :)