Назад | Перейти на главную страницу

Что означает S в свойствах файла linux?

Я создаю каталоги и меняю их разрешения в perl с помощью следующего кода:

umask 0000;
mkdir $path, 0770;
chown $userid, $groupid, $path;

Теперь, когда я выполняю ls -l в только что созданном каталоге, они выглядят следующим образом:

drwxrws---  2 user group 4096 Nov  3 15:34 test1

Я заметил, что для групповых разрешений вместо x есть s. Даже если я вручную chmod удаляю все разрешения для пользователя и группы («chmod g =» и «chmod u =», он все равно там:

d-----S---  2 user group 4096 Nov  3 15:36 test2

Интернет предлагает S означает, что все в папке запускается как su или что-то в этом роде? Я не совсем понимаю, что это означает, но полагаю, что должен понимать, поскольку это веб-корни, поэтому, если есть последствия для безопасности, я должен об этом знать.

Большое спасибо за вашу помощь!

s означает setgid/setuid немного и executable бит оба установлены

S означает только setgid/setuid бит установлен

проверять, выписываться man chmod Чтобы получить больше информации.

Это происходит из-за umask значение, которое вы устанавливаете.

Интернет предлагает S означает, что все в папке запускается как su или что-то в этом роде?

Это неверно.

Если setuid бит установлен в исполняемой программе, тогда она будет выполняться с привилегиями своего владельца.

Если setgid бит установлен в исполняемой программе, затем она будет выполняться с разрешениями своей группы.

Так что не создавайте вещи как root:root с участием umask 0000.

Еще лучше, никогда не устанавливайте это в свою маску.

Посмотреть здесь: http://linuxzoo.net/page/sec_umask.html

Число, указанное в качестве параметра для команды umask, работает противоположно числу, присвоенному команде chmod. «Маска» служит для удаления разрешений, а не для их предоставления.

В некотором роде это указывает на «ошибку»:

Нет смысла устанавливать бит setuid, если исполняемый бит не установлен.