... и как я могу их установить? Это работает для каталогов таким же образом? Что происходит с липким битом и тем более "экзотическим" материалом?
3 ответа
Как предлагает @Gustave, программа stat
(которая является частью GNU coreutils и, по сути, программой "Linux" по этой причине, хотя у вас может быть порт или пакет в системах BSD) может это сделать. Команда
stat -c "%a %n"
файл
создает отформатированный листинг только с восьмеричным режимом (включая закодированные setuid, setgid и sticky-биты) и именем файла. Согласно документации
%a
- это "Права доступа в восьмеричном формате"%n
- это "Имя файла"
Например, учитывая этот скрипт:
#!/bin/sh
for name in $*
do
ls -ld "$name"
stat -c '%a %n' "$name"
done
вы могли бы видеть вывод как это из myscript /usr/bin /usr/bin/X /usr/bin/bsd-write
:
drwxr-xr-x 5 root root 118784 Jul 11 19:55 /usr/bin
755 /usr/bin
-rwsr-sr-x 1 root root 9232 Dec 16 2011 /usr/bin/X
6755 /usr/bin/X
-rwxr-sr-x 1 root tty 11000 Jun 17 2010 /usr/bin/bsd-write
2755 /usr/bin/bsd-write
Вы увидите 3 или 4 восьмеричные цифры, возвращаемые для прав доступа, в зависимости от того, установлены ли setuid и т.д. Первая (четвертая) цифра объединяет
- 4 (setuid)
- 2 (setgid)
- 1 (липкий)
Возвращенные права доступа исключают дополнительные биты, возвращаемые stat
системного вызова, которые указывают, является ли имя каталогом (S_IFDIR
) или файлом (S_IFREG
). Кстати, все эти биты вписываются в 16-битное значение из-за давних реализаций Unix в 1970-х и начале 1980-х годов и имеют стандартные значения. Поскольку права доступа исключают тип файла, вы можете использовать это значение как есть в команде chmod
(а также в функции chmod
), поскольку оно восьмеричное, и команда chmod
ожидает этого. Даже setuid и т.д. Работают с восьмеричным, хотя такие вещи, как
chmod u+s /usr/bin/whatever
более читабельны.
Для дальнейшего чтения
Получение: как ответил Гюстав.
Окружение:
chmod 0755 myfile
То же самое для каталогов. Для липкого бита первая цифра должна быть 1. О комке: https://askubuntu.com/a/432703
stat -c "%a %n" <file>
Кажется, работает - но я не знаю больше.