Ваша оболочка имеет встроенное pwd
, который пытается быть "умным". После того, как Вы сделали a cd
к символьной ссылке внутреннее pwd
фальсифицирует вывод, как будто Вы переместились в реальный каталог.
Передайте -P
опция к pwd
, т.е. выполненный pwd -P
. -P
опция (для “физического”) говорит pwd
не сделать любое отслеживание символьной ссылки и отобразить “реальный” путь к каталогу.
С другой стороны, должен также быть реальный двоичный файл pwd
, который не делает (и даже не в состоянии сделать), этот вид волшебства. Просто используйте тот двоичный файл explicity:
$ type -a pwd
pwd is a shell builtin
pwd is /bin/pwd
$ mkdir a
$ ln -s a b
$ cd b
$ pwd
/home/michas/b
$ /bin/pwd
/home/michas/a
Большинство людей не знает, но полномочия Unix являются на самом деле не только Пользователем, Группой и Другими (rwx). Эти 3 триады являются типичными полномочиями, которые позволяют пользователям, группам и другому пользовательскому доступу к файлам и каталогам. Однако существует также группа битов, которые предшествуют Пользовательским битам. Эти биты упоминаются как "Специальные Режимы".
Это - больше краткой нотации, что Вы не должны явно устанавливать их при контакте с инструментом такого как chmod
.
$ chmod 644
На самом деле эквивалентно:
$ chmod 0644
Вот список битов:
выборка названная статья Википедии: chmod
Flag Octal value Purpose
---- ----------- -------
S_ISUID 04000 Set user ID on execution
S_ISGID 02000 Set group ID on execution
S_ISVTX 01000 Sticky bit
S_IRUSR, S_IREAD 00400 Read by owner
S_IWUSR, S_IWRITE 00200 Write by owner
S_IXUSR, S_IEXEC 00100 Execute/search by owner
S_IRGRP 00040 Read by group
S_IWGRP 00020 Write by group
S_IXGRP 00010 Execute/search by group
S_IROTH 00004 Read by others
S_IWOTH 00002 Write by others
S_IXOTH 00001 Execute/search by others
Таким образом в Вашей первой команде Вы ищете u+s
, который удался бы, чтобы быть битом 04000
. При использовании числовой нотации, Вы просите биты 04000
И 02000
. Это дало бы Вам файлы с пользователем или группой setuid набор битов.
Я высоко предлагаю любого, который хочет понять полномочия лучше в Unix, прочитать страницу Wikipedia о chmod
. Это ломает его очень просто и является превосходной ссылкой, когда Вы забываете.
Режим 6000
u+s,g+s
, не просто u+s
(который был бы 4000
).
find / -perm /u+s
или find / -perm /4000
только находит файлы, которые имеют setuid набор битов. find / -perm /u+s
или find / -perm /6000
находит файлы, которые имеют setuid набор битов или setgid набор битов.