Я создаю каталоги и меняю их разрешения в 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, если исполняемый бит не установлен.