На этот вопрос уже есть ответ:
Я создал короткий сценарий bash, чтобы запустить некоторую программу 10 раз и сохранить результат в файл. Пока я устанавливал разрешения для исполняемых файлов, я подумал, что было бы неплохо удалить разрешение на запись, чтобы сценарий нельзя было изменить без доступа sudo / root. Но я получил следующее:
use@ubuntu:~/some/folder$ sudo chmod -w Run_SIM.sh
chmod: Run_SIM.sh: new permissions are r-xrwxr-x, not r-xr-xr-x
Почему?
Короче говоря, потому что Вы удаляете разрешение для пользователя, когда Вы не указываете, что измениться. Можно указать который из u
сер, g
аукцион, o
там установить полномочия для:
$ ls -l bar
-rwxrwxrwx 1 vidarlo users 0 Nov 11 10:52 bar
$ chmod u-w bar
$ ls -l bar
-r-xrwxrwx 1 vidarlo users 0 Nov 11 10:52 bar
$ chmod g-w bar
$ ls -l bar
-r-xr-xrwx 1 vidarlo users 0 Nov 11 10:52 bar
$ chmod o-w bar
$ ls -l bar
-r-xr-xr-x 1 vidarlo users 0 Nov 11 10:52 bar
U, g, o перед разрешением указывает который из полей разрешения для изменения - для пользователя, группы и другого.
Кроме того, у Вас есть специальное предложение a
ll:
$ chmod a+w bar
$ ls -l bar
-rwxrwxrwx 1 vidarlo users 0 Nov 11 10:52 bar
Стенография, наиболее часто используемая многими, является восьмеричными полномочиями, который создается с тремя цифрами, 0-7. Первая цифра представляет пользователя, вторую группу и треть другой.
В восьмеричной системе, 1 средство expecute, 2 записи средств и 4 чтения средств. Вы добавляете вместе режимы, которые Вы хотите, таким образом читайте и выполнитесь, 5, и только для чтения 4. Для создания чтения файла + выполняются для всех и пишут для владельца в восьмеричном, который Вы сделали бы chmod 755 filename
. Режим 740 был бы всеми для владельца, читать для группы и ни одного для другого.
Хорошая вещь о восьмеричных режимах состоит в том, что Вы устанавливаете все режимы сразу, таким образом, нет никаких скрытых перенесенных неожиданностей.
Для резервирования редактирования сценария для корня необходимо было бы сначала установить владельца файла для укоренения, с помощью sudo chown root:root filename
, и затем sudo chmod g-w,o-w filename
- или восьмеричное использование sudo chmod 755 filename
Если Вы пойдете для выравнивания 301 из исходного кода, то Вы будете видеть исходный код, ответственный за печать этого предупреждающего сообщения. В основном это вычисляет то, что начинающие пользователи могут предназначить и распечатать различие. Это - немного интересное поведение, о котором я не знал :)