2015-12-28 2 views
-2

Я хочу поставить чек на домашний каталог ярлык ~ данного в качестве параметра опции ввода через CLI в программе C работает на Linux.Как поставить проверку на домашней директории ярлыка ~ заданный через CLI в C на Linux

Ярлык преобразуется в полный путь до его чтения из аргумента функции main().

Я добавил следующую буквенную проверку, но он не работает, так как параметр был заменен полным каталогом домашней директории (например, /home/myself) от CLI.

if ((strstr(pName, (const char *)"~/") != NULL) || (strcmp((const char *)pName, (const char *)"~") == 0)) 
{ 
    /* home directory shortcut is not allowed/; 
} 

Как я могу добавить буквального чек, который не разрешает пользователю ввести домашний каталог ярлык (не полный путь), или, как убедиться, что CLI не преобразует ярлык в путь?

Обратите внимание: если пользователь явно вводит путь к исходному каталогу в качестве входного параметра, это нормально. Мне нужно только поставить чек на ярлык.

Некоторые фона:

Это просто одна из проверок безопасности, не позволяя пользователю получить доступ к привилегированным адресам. Пользователь будет получать доступ к приложению через веб-интерфейс, и приложение будет работать в пространстве (/ home/main), отличном от того, что выделено пользователю (/ home/user_1).

+0

Что вы хотите сделать это? – fuz

+0

Только одна из проверок безопасности, не позволяющая пользователю получить доступ к привилегированным местоположениям. Пользователь будет получать доступ к приложению через веб-интерфейс, и приложение будет работать в пространстве (/ home/main), отличном от того, что выделено пользователю (/ home/user_1). –

+0

Тогда почему бы вам не сравнить каталог с '/ home/main' вместо проверки расширения тильды? – fuz

ответ

1

~ расширен до $HOME по оболочкой, а не вашим приложением. Ваше приложение не имеет возможности узнать, если ~ расширение произошло, то вы не можете различить, если пользователь ввел

application ~/foo 

или

application /home/me/foo 
+0

Итак, решения этой проблемы нет? –

+0

@ ZeeshanMahmood Нет, нет. Почему это проблема? Почему вы заинтересованы в том, чтобы запретить пользователю использовать '' 'расширение? – fuz

+0

См. «Некоторый фон» в вопросе выше. Я только что отредактировал его. –

Смежные вопросы