Из двух вариантов изменения разрешений:
chmod 777 file.txt
chmod a+rwx file.txt
Я пишу документ, в котором подробно описано, что пользователям необходимо изменить права доступа к определенному файлу. Я хочу описать это как наиболее распространенный способ изменения прав доступа к файлам.
В настоящее время говорит:
- Set permissions on file.txt as per the example below:
- chmod 777 /tmp/file.txt
Это всего лишь пример, и файлы не будут изменены, чтобы иметь полные права доступа для всех.
permissions
Kevdog777
источник
источник
775
или только755
для исполняемых файлов.chmod 777
это какchmod a=rwx
, нетchmod a+rwx
.777
или666
просто и намного более запоминаемо, чемugo+rwx
,a+rwx
илиugo+rw
это очень запутанно, так какo
неоднозначно и может означать для вас, как владельца, так и других, вы выбираете. Таким образом, вместо того, чтобы делать большую ошибку, вы продолжаете проверять,man
чтобы проверить, какой из них какой, или просто используете числа.Ответы:
Google дает:
chmod 777
примерно в 3 раза популярнее.Тем не менее, я предпочитаю использовать длинные опции в документации и скриптах, потому что они самодокументируются. Если вы выполняете инструкции с помощью «Запустить
ls -l | grep file.txt
и проверить разрешения», вы можете использовать их,chmod a+rwx
потому что именно так ls будет отображать разрешения.источник
7
значит и т. Д.chmod 777
более популярна (так как это происходит до того, как вы увидите ваши цифры) просто в том, что вы печатаете на 2 символа меньше :)chmod 777
является удобным сочетанием клавиш для достижения того же эффекта. Ваши читатели будут благодарны за образовательный элемент в вашей документации. 777 более популярен, потому что намного проще и быстрее набрать 7 три раза, но когда новый пользователь впервые видит 777, он может не знать, что именно это означает. Вот почему это плохой выбор в качестве первичной документации. Но это определенно стоит упомянуть в качестве совета.[Я изменяю, чтобы добавить лучшую практику, следуя предложению Дотанкогена в своем ответе. Я надеюсь, что это не делает это менее ясным, и что хорошая привычка взята]
Важная дополнительная информация: они не эквивалентны.
chmod a+rwx
: установите последние 3 восьмеричных числа в 777, чтобы убедиться, что для владельца, группы и пользователей установлено значение «rwx». Если в первом восьмеричном виде есть дополнительные биты (setuid, setgid и / или Sticky-бит), он остается без изменений. Думайте об этом как двоичный файл "или 00777".chmod 777
: установите права на 00777, чтобы убедиться, что для владельца, группы и пользователей установлен «rwx», и НИЧЕГО больше. Также убедитесь, что дополнительные биты (setuid, setgid и / или Sticky bit) установлены в 0.Так что используйте первую форму, если вы просто хотите удостовериться, что предоставили доступ каждому (и, пожалуйста, сделайте двойную, тройную уверенность в том, что она необходима ... она открывает дверь для всех видов проблем безопасности, некоторые из которых довольно неожиданно широки в они позволяют злоумышленнику делать)
Используйте форму 777, если вы также хотите обязательно сбросить любой бит setuid / setgid / sticky, т.е. если файлы должны иметь значение «00777», что, вероятно, более вероятно в вашем случае (право файла известно и должно быть : 00777). Вот также, сделайте тройную уверенность, что это действительно необходимо ...
Обычно лучше сохранить доступ к владельцу (а иногда и группе): затем используйте группы, чтобы предоставить доступ некоторым конкретным пользователям к файлу / каталогу. + rwx - это простой и, как правило, неправильный способ предоставления доступа (конечно, есть очень редкие случаи, когда это единственный способ ...)
http://en.wikipedia.org/wiki/Chmod хорошо читается, поскольку объясняет, что представляет каждая цифра или буква (включая setuid / setgid / sticky)
источник
others
разрешения? Если вы вошли в систему как пользователь, то наверняка вы можете просто использоватьusers
разрешение?chmod 777
это какchmod a=rwx
.Я обычно думаю о разнице в том, что установка разрешений на 0777 явно устанавливает их на 0777. Как упоминалось ранее, начальный 0 будет выведен, если вы просто наберете 777. В то время как + rwx добавляет чтение / запись / выполнение, оставляя setuid / sticky немного нетронутым.
Предположим, что вы просто хотите быть уверенным в том, что файл является исполняемым, вы можете использовать + x, чтобы изменить привилегию выполнения, не беспокоясь о других разрешениях и не изменяя их. Если вы использовали восьмеричное представление, вам нужно знать, какие разрешения в настоящее время установлены, чтобы быть уверенным, что вы не измените разрешения каким-либо другим способом, помимо того, что вы намеревались.
источник
Я бы сказал, что предоставление числовых значений гораздо чаще встречается в «простых руководствах для людей», таких как руководства для пользователей бюджетного веб-хостинга. Однако позаботьтесь о том, чтобы указывать их как восьмеричные , а не десятичные значения:
$ chmod 0777 some_dir
Обратите внимание , ведущий
0
в0777
. Хотя Bash и другие среды CLI правильно делают с использованием unpadded777
, многие языки программирования, такие как PHP и Perl, имеют схожие функции, которые требуют ведущих0
. Поэтому я рекомендую использовать его и в Bash, чтобы помнить, что он должен быть там.Примечание для downvoters: Как поясняется в комментариях,
chmod
команда на самом деле знает, как передать директиву как восьмеричную, даже если задана десятичная запись. Однако не все среды поддерживают это, поэтому лучше всего привыкнуть к его явному указанию.источник
chmod
никогда не обрабатывает число как десятичное.chmod 777 file
иchmod 0777 file
полностью эквивалентны.chmod
идет об использовании команды shell; Вы можете просто думать о трех цифрах как о независимых друг от друга, каждая из которых говорит вам об одном наборе разрешений.chmod 77
эквивалентноchmod 077
.chmod
интерпретирует свой аргумент mode в восьмеричном виде. Вам нужно обратить внимание, если вы используете большинство языков программирования (C, Perl,…), но в сценарии оболочки это восьмеричное значениеchmod
.