На этот вопрос уже есть ответ здесь:
Мне нужна помощь с домашним заданием, чтобы изменить права доступа к файлу. Он хочет, чтобы это было -rwxr-xr-x
? Не уверен, как сделать разрешения пользователя. Спасибо.
Позволяет анализируют Вашу домашнюю работу: -rwxr-xr-x
, повредите их в три части -rwx|r-x|r-x
:
rwx
: читайте, запишите и выполнитесь для пользователя или владельцаr-x
: читайте, никакая запись, и выполнитесь для элементов группыr-x
: то же как в 2
но на этот раз для любого человека иначе others
.Нет необходимо будет выполнить команду с помощью программы разрешения изменения chmod
как так:
chmod 755 filename
Объясненный:
измените разрешение на:
- user: 7 => r(4), w(2), x(1)
- group: 5 => r(4), -, x(1)
- others: r(4), -, x(1)
Теперь необходимо владеть тем файлом или папкой, чтобы сделать это или быть в sudo группе.
Существует также более "болтливая" версия для установки полномочий:
chmod u=rwx,g=rx,o=rx filename
Это означает:
u=
) rwx
полномочия, иg=
) rx
полномочия, иo=
) rx
полномочия.Можно не учесть части, которые Вы не хотите изменять, например:
chmod u=rwx filename
установит полномочия пользователя и оставит другие как они.
Можно даже "добавить" или "substract" полномочия:
chmod g-x filename
удалит группу x
разрешение, и
chmod o+w filename
добавит разрешение записи для других.
Для установки SUID SGID и липкий бит используют s
и t
полномочия:
chmod u+s filename
- наборы SUIDchmod g+s filename
- наборы SGIDchmod a+t filename
- устанавливает липкий бит (a
означает "все", т.е. u
и g
и o
)Обязательная преамбула
Изменение полномочий важных файлов и каталогов в Вашей системе может повредить вещи плохо. При нахождении этого неудобным, чтобы должными быть переустановить систему или получить данные из живой сессии, удостоверьтесь, что Вы экспериментируете с полномочиями и владением безопасно. В то время как Вы изучаете свой путь вокруг файловой системы и основных команд, необходимо постараться не работать chmod
и chown
с sudo
или в корневой оболочке. Тем путем ошибка разрешения сообщит, что Вы могли бы делать что-то опасное, и необходимо проверить команду снова.
Мы изменяем полномочия файла с chmod
. Эта команда имеет рекурсивный флаг -R
. Этот флаг часто используется излишне, и это редко полезно, потому что мы обычно не хотим, чтобы каталоги имели те же полномочия как файлы в них. Потребность каталогов выполнить разрешение, которое будет вводиться, так не полезны без него, в то время как файлы только должны выполнить разрешение, если они - программы. Без -R
флаг, chmod
может нанести только ограниченный и поддающийся ремонту ущерб, но с -R
можно сделать ужасную путаницу системы в единственной команде. Если Вы используете -R
, рассмотрите, нуждаетесь ли Вы действительно в нем и проверяете путь к файлу на опечатки.
Режим, который Вас попросили дать файлу, является общим
-rwxr-xr-x
Ведущий тире указывает, что это - регулярный файл. x
биты в трех местах указывают, что это должен быть исполняемый файл любым пользователем. Так, этот режим подходит для программ, которые любой может выполнить. Большинство программ в Вашей системе имеет этот режим, как Вы видите путем исследования файлов в /usr/bin
, /bin
и так далее (я объясняю, как исследовать полномочия позже в этом ответе). Для безопасности важно, чтобы только владелец, корень, мог записать для (изменения) этих файлов, таким образом, программы, которые Вы запускаете, не могут быть случайно (или иначе) изменены пользователями без полномочий пользователя root.
Как указано в ответе George Udosen биты полномочий установлены отдельно для пользователя (владелец файла), группа и другие. Это объяснено, например, в нашем теге Wiki для chmod
и во многих других местах в Интернете, и даже в Вашей системе; можно читать об этом путем выполнения man chmod
. Вас попросили сделать файл читаемым, записываемым и исполняемым его владельцем, и читаемым и записываемым для его группы и других. Вы видите владельца и группу файла путем выполнения ls -ld file
( -d
только необходимо, если это - каталог; без того флага, ls
показывает содержание каталога, а не самого каталога), или если Вы хотите менее несоответствующую информацию, использовать stat
:
stat -c '%U %G' file
-c
средства управляют выводом. %U
= владелец файла, %G
= группа. file
должен быть заменен путем к файлу, метаданные которого Вы хотите исследовать. Если это находится в текущем каталоге, его имя достаточно, но можно дать путь для файлов в другом месте:
$ stat -c '%U %G' /var/log/syslog
syslog adm
stat
команда может также показать полномочия файла в восьмеричном и в "человекочитаемой" форме:
stat -c '%n %a %A' *
(Я использовал %n
отобразить имена файлов, и *
работать stat
на каждом нескрытом файле в текущем каталоге.)
Это обеспечивает очень полезную ссылку, если Вы когда-нибудь забываете, каким битам полномочий конкретное восьмеричное число представляет chmod
, хотя ответ vidarlo обеспечивает хороший способ вспомнить их.
Я настоятельно рекомендую исследовать полномочия любого файла, о котором Вы заботитесь о том, перед изменением их так как у Вас не будет способа "сбросить" исходный режим кроме установки его вручную.
Другие ответы объяснили, как установить режим файла, в котором Вы нуждаетесь в восьмеричной нотации. chmod
принимает режим файла в символьной нотации, а также восьмеричный, и это полезно, когда Вы только хотите изменить один бит полномочий (одна буква в этом rwxr-xr-x
строка). Ответ Утки Perl объясняет, как сделать это для установки режима, который Вы хотите.
Когда я создаю сценарий, и я хочу сделать его исполняемым файлом, который является главной причиной, которую я использую chmod
, Я использую символьную нотацию для предоставления меня, выполняют разрешение и не вносят никакие другие изменения, с этой командой:
chmod u+x file
Если бы сценарий должен быть исполняемым файлом всеми пользователями, я выполнил бы это без u
:
chmod +x file
Это, вероятно, было бы достаточно в Вашей текущей ситуации, так как файлы часто создаются по умолчанию с полномочиями, которые позволяют читать и писать владельцем и только читаемый для группы и других, но также вероятно, что они создаются с разрешением записи для группы. Это зависит от umask
установка пользователя имеет, когда они создают файл. Давайте создадим файл и давайте смотреть на него!
$ touch somefile
$ stat -c '%a %A' somefile
664 -rw-rw-r--
Хорошо. Таким образом получить режим 755
Я должен удалить w
бит от g
раздел, и добавляет x
бит везде.
В символьной нотации я могу сделать тот этот путь:
$ chmod +x,g-w somefile
$ stat -c '%a %A' somefile
755 -rwxr-xr-x
Другой способ записать +x
в chmod
a+x
. a
обозначает все, который принят, если никакая буква не дана. Важный для замечания: u
поддерживает пользователя, что означает владельца, в то время как o
поддерживает других (не владелец).
Можно также установить все биты для a
u
g
или o
с =
знак. Вот я играющий вокруг с бесполезными настройками разрешения:
$ chmod =x somefile
$ stat -c '%a %A' somefile
111 ---x--x--x
$ chmod u=r,g=rwx,o= somefile
$ stat -c '%a %A' somefile
470 -r--rwx---
Можно использовать и восьмеричную и символьную нотацию для добавления специальных битов как setuid (это позволяет запускать программу как ее владельца, так опасно), и setgid (это заставляет файлы, созданные в каталоге с setgid впоследствии наследовать владение группы каталога, которое полезно, потому что это позволяет Вам управлять полномочиями для группы пользователей в определенном месте файловой системы, не имея необходимость постоянно играть с ним).
Некоторые люди как восьмеричная нотация, некоторым нравится символьный. Последний является немного более гибким и возможно немного более обладающим интуицией для некоторых. Я рекомендую тестировать и изучить обоих (безопасно!), таким образом, Вы сможете выяснить что любой chmod
команда сделает, когда Вы будете видеть его и будете решать любую проблему домашней работы о нем с талантом :)
chmod
. Не использовать sudo chmod
если Вы не знаете то, что Вы делаете. Думайте тщательно перед использованием -R
флаг.stat
Ваш другСинтаксис для chmod
команда:
chmod [options] {permissions} file-name
Прежде, чем установить полномочия файла/папки необходимо быть в Parent Directory
из файла/папки.
r(read) - 4
w(write) - 2
x(execute) - 1
Теперь, анализируя набор от Вашей работы: (-rwxr-xr-x)
Разделите его на четыре части как:
1. - File Type
2. rwx User
3. r-x Group
4. r-x Others
Таким образом, Наконец для предоставления разрешения файлу:
2. rwx: 4+2+1 = 7
3. r-x: 4+0+1 = 5
4. r-x: 4+0+1 = 5
Следовательно, команда
chmod 755 *filename*
Я нахожу самым легким думать в восьмеричных полномочиях:
Это может легко быть замечено настраивающее это поразрядно:
r w x
0 0 1 #Execute = 1
0 1 0 #Write = 2
1 0 0 #Read = 4
1 0 1 #Read + Execute = 5
1 1 0 #Read + Write = 6
1 1 1 #All permissions = 7
Они могут быть добавлены. Читайте и выполнитесь, 4+1=5. Читайте, выполнитесь и запишите, 7 (4+2+1), только для записи 2, и т.д.
Существует три цифры к полномочиям: Пользователь, Группа и Другой. rwx для пользователя становится 7 (полные полномочия) для первой цифры. r-x для группы становится 1+4=5, и r-x для другого становится 5. Таким образом это равняется полномочиям 755.