Я создал короткий скрипт 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 ser, g roup, o ther установить разрешения для:
$ 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 означает write, а 4 означает чтение. Вы добавляете вместе режимы, которые хотите, поэтому чтение и выполнение - 5, а только чтение - 4. Для того, чтобы прочитать файл + выполнить для всех и написать для владельца в восьмеричном, вы сделали бы chmod 755 filename. Режим 740 будет для владельца, прочитан для группы, а для других нет.
Хорошая вещь о восьмиступенчатых режимах заключается в том, что вы устанавливаете все режимы одновременно, поэтому никаких скрытых сюрпризов не осталось.
Чтобы зарезервировать редактирование скрипта для root, вам нужно сначала установить владельца файла в root, используя sudo chown root:root filename, а затем sudo chmod g-w,o-w filename - или используя восьмеричный sudo chmod 755 filename
Если вы перейдете к строке 301 исходного кода, вы увидите исходный код, ответственный за печать этого предупреждающего сообщения. В основном он вычисляет то, что скрытые пользователи могут намереваться, и распечатать разницу. Это немного интересное поведение, о котором я не знал:)
Короче, потому что вы удаляете разрешение для пользователя, когда не указываете, что нужно изменить. Вы можете указать, какой из u ser, g roup, o ther установить разрешения для:
$ 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 означает write, а 4 означает чтение. Вы добавляете вместе режимы, которые хотите, поэтому чтение и выполнение - 5, а только чтение - 4. Для того, чтобы прочитать файл + выполнить для всех и написать для владельца в восьмеричном, вы сделали бы chmod 755 filename. Режим 740 будет для владельца, прочитан для группы, а для других нет.
Хорошая вещь о восьмиступенчатых режимах заключается в том, что вы устанавливаете все режимы одновременно, поэтому никаких скрытых сюрпризов не осталось.
Чтобы зарезервировать редактирование скрипта для root, вам нужно сначала установить владельца файла в root, используя sudo chown root:root filename, а затем sudo chmod g-w,o-w filename - или используя восьмеричный sudo chmod 755 filename
Если вы перейдете к строке 301 исходного кода, вы увидите исходный код, ответственный за печать этого предупреждающего сообщения. В основном он вычисляет то, что скрытые пользователи могут намереваться, и распечатать разницу. Это немного интересное поведение, о котором я не знал:)
Короче, потому что вы удаляете разрешение для пользователя, когда не указываете, что нужно изменить. Вы можете указать, какой из u ser, g roup, o ther установить разрешения для:
$ 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 означает write, а 4 означает чтение. Вы добавляете вместе режимы, которые хотите, поэтому чтение и выполнение - 5, а только чтение - 4. Для того, чтобы прочитать файл + выполнить для всех и написать для владельца в восьмеричном, вы сделали бы chmod 755 filename. Режим 740 будет для владельца, прочитан для группы, а для других нет.
Хорошая вещь о восьмиступенчатых режимах заключается в том, что вы устанавливаете все режимы одновременно, поэтому никаких скрытых сюрпризов не осталось.
Чтобы зарезервировать редактирование скрипта для root, вам нужно сначала установить владельца файла в root, используя sudo chown root:root filename, а затем sudo chmod g-w,o-w filename - или используя восьмеричный sudo chmod 755 filename
Если вы перейдете к строке 301 исходного кода, вы увидите исходный код, ответственный за печать этого предупреждающего сообщения. В основном он вычисляет то, что скрытые пользователи могут намереваться, и распечатать разницу. Это немного интересное поведение, о котором я не знал:)