Почему некоторые символьные ссылки влияют на поведение программы?

lsattr ./*

getfacl ./* отобразит полномочия также

grep -l '.*' ./*

awk 'FNR==1 {print FILENAME}' ./* работы с GNU awk

debugfs /dev/sdX замените sdX любым разделом, на котором Вы хотите сделать ls, затем Вы можете ls внутри debugfs

debugfs:  cd /
debugfs:  ls -l
      2   40755 (2)      0      0    4096  6-Apr-2011 01:01 .
      2   40755 (2)      0      0    4096  6-Apr-2011 01:01 ..
     11   40700 (2)      0      0   16384  5-Jul-2010 09:59 lost+found
 2392065   40755 (2)      0      0    4096  5-Jul-2010 09:59 boot
 2228225   40755 (2)      0      0    4096  5-Jul-2010 09:59 sys
 1376257   40755 (2)      0      0    4096  5-Jul-2010 09:59 proc
 4915201   40755 (2)      0      0    4096  5-Jul-2010 09:59 dev
 3473409   40755 (2)      0      0   12288 10-Apr-2011 22:05 etc
  98305  100644 (1)      0      0       0  6-Jul-2010 12:05 .autofsck
 3342337   40755 (2)      0      0    4096  5-Apr-2011 15:05 var
 3932161   41777 (2)      0      0    4096 10-Apr-2011 22:11 tmp
  ..........
debugfs:  

lynx ./

mc принятию Вас установили полуночного командующего

7
05.02.2011, 01:53
1 ответ

Каждая программа видит полную командную строку, которая использовалась для выполнения ее (за исключением подстановочных знаков и переменных, которые оболочка разворачивает).

В программе C командная строка хранится в argv, который короток для вектора аргумента.
Имя проножки является первым элементом argv, т.е. argv[0].

Очевидно в случае halt и reboot, программа изменяет свое поведение на основе argv[0].

От удара Вы видите, что полная командная строка раньше выполняла использование программы ps -p <pid> -o cmd или cat /proc/<pid>/cmdline.

Обратите внимание, что существует другой тип ссылки, названной жесткой ссылкой, которая будет иметь тот же эффект. В моей системе, например, sudo и sudoedit тот же файл с двумя различными именами и различными поведениями.

ls -i может помочь Вам найти те команды, например:

$ ls -il | awk '$3 != 1 { print }'
total 156872
2491111 -rwsr-xr-x 2 root   root     127560 2011-01-20 05:03 sudo
2491111 -rwsr-xr-x 2 root   root     127560 2011-01-20 05:03 sudoedit

Посмотрите man ln для получения дополнительной информации о жестких ссылках, если Вы не знакомы с ними.

13
27.01.2020, 20:16
  • 1
    Интересный, я не знал, что символьные ссылки вели себя тот путь. –  Christoph Wurm 02.02.2011, 12:58
  • 2
    @legate, символьные ссылки, не делает, приложения могут. лучший пример программы, которая использует, это - имя, чтобы определить, как это выполняется, busybox. символьные ссылки являются просто номером один способ определить 0th аргумент приложению. просто переименование файла было бы также достаточно. –  xenoterracide 02.02.2011, 14:50
  • 3
    мне не удалось проанализировать этого: Обратите внимание, что там также назван жесткой ссылкой, которая будет иметь тот же эффект. –  tshepang 04.02.2011, 11:01
  • 4
    я переписал то предложение. Надо надеяться, это более ясно теперь. –  Mikel 04.02.2011, 11:09

Теги

Похожие вопросы