Как очистить разрешение «s» для каталога в Linux?

24

У меня есть каталог, который отображается с маской разрешений drwsrwsr-x. При попытке сброса разрешений 755на S все равно остается.

Что такое "s" и почему я не могу изменить разрешения обратно на 775 ( drwxrwxr-x)?

Мэтт Элхотиби
источник

Ответы:

25

В столбце «Выполнить» в столбце «Пользователь и группа» вы видите биты SetUID (Установить идентификатор пользователя при выполнении) и SetGID (Установить идентификатор группы при выполнении).

Права доступа к файлам Unix на самом деле представляют собой восьмеричное четырехзначное число SUGO

  • S управляет битами SetUID (4), SetGID (2) и «Sticky» (1)
  • U контролирует чтение (4) / запись (2) / выполнение (1) битов для владельца файла
  • G управляет битами чтения / записи / выполнения для группы файлов
  • O управляет битами чтения / записи / выполнения для всех остальных.

Вы можете удалить биты setuid из вашего каталога с помощью chmod ug-s directoryилиchmod 0755 directory

Для получения дополнительной информации см. Справочную страницу chmodи эту страницу Википедии о бите SetUID .

Хрвое Шполяр
источник
Это "sgid" (нет "u").
Приостановлено до дальнейшего уведомления.
"Что такое drwsrwsrwx?" <- проверьте еще раз
Hrvoje Špoljar
6
chmod 0755никак не расчистить Setuid немного, по крайней мере , не на Linux. В настоящее время я тестирую на других системах.
FUZxxl
1
POSIX говорит, что это реализация, определенная для типов файлов, отличных от обычных файлов, независимо chmodот того, очищает ли в октавном режиме биты setuid, setgid и vtx.
FUZxxl
2
Чтобы очистить бит setuid для каталога в Linux, используйте chmod 00755; см. unix.stackexchange.com/q/393531/46851
Роджер Липскомб
23

setuid и setgid

setuid и setgid (сокращение от установленного идентификатора пользователя при выполнении и установленного идентификатора группы при выполнении соответственно) - это флаги прав доступа Unix, которые позволяют пользователям запускать исполняемый файл с разрешениями владельца или группы исполняемого файла. Они часто используются, чтобы позволить пользователям в компьютерной системе запускать программы с временно повышенными привилегиями для выполнения конкретной задачи. Хотя предполагаемые привилегии идентификатора пользователя или идентификатора группы не всегда повышены, как минимум они являются конкретными.

Чтобы удалить биты setuid и setgid численно, вы должны поставить перед битовым шаблоном префикс 0(например, 0775становится 00775).

Запустите для удаления setuid и setgid:

chmod 00775 path

или

chmod a-st path
ooshro
источник
Это в каталоге, а не в файле
Hrvoje Špoljar
1
каталог - это также файл в файловой системе Unix, что, по словам Оошро, совершенно правильно
lynxman
да, это все файл, но описание не подходит, так как вы не выполняете что-то похожее на drwxrwxr-x: |
Хрвое Шполяр
В Unix inode - это то, что получает разрешения.
Крис
2
GNU chmod не очищает байты setuid и setgid для каталогов, когда вы выполняете его в восьмеричном режиме. POSIX допускает такое поведение.
FUZxxl
2

Добавляем к ответу оошро ...

Если вы используете права suid или sgid для каталога, любые файлы, созданные в этом каталоге, будут иметь того же владельца (если suid) или группу (sgid), что и рассматриваемый каталог.

Я использую это для своей домашней доли Samba. Базовый каталог принадлежит пользователю nobody и группе olympia, а разрешения - 2770. Таким образом, вы должны быть в группе olympia, чтобы читать или записывать что-либо ниже этого каталога, и он будет убедиться, что olympia является группой-владельцем всего, что находится под ним. , У меня также есть Samba, настроенный на использование маски маски 2770 и маски файлов 660, чтобы сохранить правильные разрешения на всех уровнях дерева.

Баумгарт
источник