LINUX.ORG.RU
ФорумTalks

Урезаешь ли ты $PATH для обычного юзера, $USER?

 , ,


0

2

Собственно, сабж. Возник тут спор по поводу. Есть мнение, что в $PATH у юзера в любом случае не должно быть директорий /sbin, /usr/sbin и /usr/local/sbin . Т.е. даже не так, что по дефолту их может и не быть, но если юзер хочет, то пожалуйста, а так, что если их туда вписать, то последствия будут катастрофические. А у тех, у кого пока всё OK, дескать, эти ужасы просто ещё впереди.

Я считаю, что ничего плохого от расширения $PATH у юзера не будет. Доступность бинарников не даёт автоматически права root'а. Чего тут бояться-то? ¯\_(ツ)_/¯

★★★★★

uzer-pc1@my-pc:/tmp$ echo $PATH
/home/uzer-pc1/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
uzer-pc1@my-pc:/tmp$ su -
Пароль: 
root@my-pc:~# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Gennadevich
()

А у тех, у кого пока всё OK, дескать, эти ужасы просто ещё впереди.

бред какой, ну если ты обычный юзер, напиши имя программы целиком

IvanRia
()

Однажды я здорово подвис, только наоборот.

Собрал mc (кажется.. или tcc, не суть) из исходников. Тот и лёг по умолчанию в /usr/local/bin

Естественно поигрался и забыл. Там и оставил. Через какое-то время никак понять не мог почему по умолчанию вызывается не та версия, которая прилетала в обновлении.

Так там еще целая песня с выкусыванием /usr/local/bin из начала $PATH пользователя оказалась в ArchLinux. Сейчас наизусть не помню, но точно не одним движением руки. Прям сильно надо хотеть, чтобы поменять.

Toxo2 ★★★★
()
lrwxrwxrwx 1 root root 7 X    18 23:01 /sbin -> usr/bin
lrwxrwxrwx 1 root root 3 X    18 23:01 /usr/sbin -> bin
token_polyak ★★★★★
()

Есть мнение, что в $PATH у юзера в любом случае не должно быть директорий /sbin, /usr/sbin и /usr/local/sbin

Тогда станет неудобно пользоваться sudo.

Dimez ★★★★★
()
Ответ на: комментарий от PerdunJamesBond

Ничто не мешает. Но утверждается, что /sbin, /usr/sbin и /usr/local/sbin не прописываются в $PATH юзера (см. тот же пример по Урезаешь ли ты $PATH для обычного юзера, $USER? (комментарий)) не просто так, а по весьма весомой причине. Чтобы потом не бегать кругами и не кричать «Всё пропало!». А в чём могут быть грабли я пока что не вижу.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от token_polyak

Так не томи, сообщи наконец-то - кем?

Спорить со мной начал некто Михаил М, но он ссылается на авторов su. Говорит, что это их идея разделять разные варианты $PATH для root'а и юзера. И что, дескать, расширение $PATH ломает их авторскую задумку. А чтобы её понять, говорит, нужно читать мануалы.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от saahriktu

Так вот: знай, что он неправ.

token_polyak ★★★★★
()
Последнее исправление: token_polyak (всего исправлений: 5)
Ответ на: комментарий от token_polyak

Он намекает на более современную реализацию. Когда ввели, что просто «su» сохраняет переменные окружения обычного юзера, а «su -» инициализирует сессию с нуля переменными окружения root'а. Так вот, в этих двух случаях будут различаться и переменные окружения $PATH. И, вот, он утверждает, что так сделано специально, и потому они обязаны быть разными. По каким-то весомым причинам.

saahriktu ★★★★★
() автор топика

Лично я своего юзера не обрезал. Растянул...

xwicked ★★☆
()

Нафиг так делать? В какой-то момент может вызвать минуту тупняка «а где <programname>?» А положительных эффектов не даёт никаких.

Тем более в современном мире, где настоящие многопользовательские системы почти ушли в небытие.

nebularia ★★★
()
Ответ на: комментарий от nebularia

Ну, на серверах вполне может быть много пользователей. Но на десктопах, да, чаще всего один обычный юзер и root.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от saahriktu

И, вот, он утверждает, что так сделано специально, и потому они обязаны быть разными. По каким-то весомым причинам.

Ну правильно утверждает. Например вы залогинились под user1 и вам нужно выполнить команду из под user2 но с «окружением» user1. Или вам нужно выполнить команду из под user2 и с «окружением» user2. Разные сущности получаются.

anc ★★★★★
()
Ответ на: комментарий от saahriktu

Нет никаких весомых причин, это бред. Имена команд в sbin не пересекаются с теми, что в bin, поэтому если намёк на то, что случайно юзер запустит что-то не то и попортит себе жизнь, то это не так. А специально юзер и так может запустить что угодно по полному пути, или добавить себе /sbin в PATH.

CrX ★★★★★
()

Есть мнение, что в $PATH у юзера в любом случае не должно быть директорий /sbin, /usr/sbin и /usr/local/sbin

Ну есть такое мнение и оно не лишено логики.

по дефолту их может и не быть, но если юзер хочет, то пожалуйста

Нет не должно. Логика этого в том, чтобы никто не запускал системные команды, которые как правило требуют sudo/su через PATH. Иначе тебе в PATH могут засунуть путь на троян и т.о. получить root доступ, когда ты запустишь его через su + PATH. Это очень бородатая тема и сейчас это не актуально, sudo/su давным давно используют свой PATH.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)

Ничего не урезаю:

$ tr : '\n' <<<$PATH
/run/wrappers/bin
/home/nameless/.nix-profile/bin
/etc/profiles/per-user/nameless/bin
/nix/var/nix/profiles/default/bin
/run/current-system/sw/bin
theNamelessOne ★★★★★
()
Последнее исправление: theNamelessOne (всего исправлений: 2)

мне крайне не нравится отсутствие /sbin в PATH, когда с таким сталкиваюсь.

Куча команд статуса, которые оттуда можно посмотреть без прав рута типа brctl show

зачем всё это прятать - непонятно

GPFault ★★
()

Бред как минимум потому что можно написать полный путь к исполняемому файлу. PATH он только для удобства, чтобы не писать полные пути. Наличие программы в PATH не даёт никаких дополнительных прав пользователю, как и отсутствие не забирает.

KivApple ★★★★★
()
Ответ на: комментарий от Sylvia

Есть краткое описание идеи в рамках которой юзерам по дефолту урезают $PATH:

Bear in mind that /sbin/, /usr/sbin and /usr/local/sbin are not in normal users' $PATHs by default because these directories tend to contain «dangerous» executables. Things like fdisk or deluser that need administrative privileges and can harm your computer. They should be in root's path by default and you need to be root to run them anyway, so it migh be a good idea not to add them to a normal user's $PATH.

https://superuser.com/a/595819

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от saahriktu

ага я не могу выключить компьютер по команде poweroff приходится тянутся к кнопке или печатать /sbin/poweroff
обидно да 😀

Gennadevich
()
Ответ на: комментарий от saahriktu

во-первых это всего лишь мнение одного из пользователей
во-вторых, наличие «лишних» бинарников в пути - совершенно не катастрофа, да они бесполезны, да, это даже замедляет поиск и автодополнение, но при этом ничего не случится, если пользователь вызовет команду требующую административных привилегий, он просто будет послан подальше
sudo USE+=offensive

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

это всего лишь мнение одного из пользователей

Это распространённое мнение.

Эти каталоги, прерогатива root.

непривилегированному пользователю ... в /sbin и /usr/sbin делать нечего.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от Sylvia

наличие «лишних» бинарников в пути - совершенно не катастрофа

Листаем рекомендации специалистов дальше:

Только не надо этого делать, ибо надо отделять администрирование и работу :))) Есть более правильные подходы

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от Sylvia

Я тоже так думаю. Но в итоге я докопался аж до FHS, а там прямым текстом:

if a normal (not a system administrator) user will ever run it directly, then it must be placed in one of the «bin» directories. Ordinary users should not have to place any of the sbin directories in their path.

https://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch03s16.html

saahriktu ★★★★★
() автор топика

Для меня лично - это удобное разделение, чтобы в автокомплит не попадало то, что всё-равно я запустить с пользой не могу.

shell-script ★★★★★
()

куда бы не зашел, везде есть темы в которых многих интересует , как урезать, забрать или не дать что-то юзеру.... особенно интересны бубунтерские форумы, на одном таком, я подсказал новичку или косившему под него, как получить рут, за что сразу же был забанен. они хотят урезать все возможности дистрибутива линукс до возможностей винды, и чтобы все хотели почемуто юзать убунту а не винду. ну зачем кому-то задушеный в возможностях такой линукс дистрибутив, который ограничен и бес того во всем? нет ни софта, ни игрушек, и еще заберут возможность что-то там собирать из исходников! ну нааааааххххуууу это дерьмище со snap кому-то будет нужным? убунту ради снап? ее будут устанавливать, чтобы не собирать ядра, а юзать божественный их snap? угомонитесь и просохните! бубунта закончилась на версии 16 и чтобы ядро также не закончилась на одной из своих версий, надо уметь прислушиваться к конечным пользователям, а не стараться только как можно больше их ограничить. они перейдут на другое им что тут что там все одни ограничения и поэтому нет особой разницы, но что будете вы делать без них, я не знаю.

Assembler
()
Ответ на: комментарий от saahriktu

их авторскую задумку.

Никакой авторской задумкки у них быть не может. Это не они придумали файловую иерархию.

Речь идет о том, что в //sbin лежат программы для администратора. А в ///bin лежат версии для пользователя. И эти программы могут быть одноименными. Например, poweroff для пользователя может работать иначе, нежели для администратора.

В реальности это практически никогда не использовалось, кроме как в целях отдельного автодополнения для пользователя и администратора.

AVL2 ★★★★★
()
Ответ на: комментарий от Assembler

как получить рут, за что сразу же был забанен.

такого не может быть. Название форума в студию!

AVL2 ★★★★★
()

Точняк, попробуй например перезапустить гномовский goadaemon (так вроде, ну чтоб календарик перегрузить и прочее) и фигу, сначала whereis, потом полный путь.

papin-aziat ★★★★★
()
Ответ на: комментарий от Assembler

Туши факел, Диоген, человек — это курица без перьев 😁

papin-aziat ★★★★★
()
Ответ на: комментарий от saahriktu

Много раз ломал линукс и не только, но наверное каждый раз с помощью rm, пм remove или редактором, и не помню, чтобы чем-нибудь из sbin.

papin-aziat ★★★★★
()
Ответ на: комментарий от Assembler

Бубунтойды такие. Моя самая большая претензия к убунту, как к дистрибутиву как раз и состоит в том, что это мало того, что кривой ненужный говнодистрибутив (таких много), но он калечит пользователей, превращая их в тупых малолетних бубу-дебилов.

AVL2 ★★★★★
()
Ответ на: комментарий от AVL2

содержимое PATH никак с эти не связано.

Дык, вот, стандарт FHS предполагает, что в /sbin, /usr/sbin и /usr/local/sbin лежат бинарники, которые запускает только root. А если какой-либо из этих бинарников должен запускать обычный юзер, то этот бинарник или симлинк на него размещается или в /bin, или в /usr/bin, или в /usr/local/bin.

saahriktu ★★★★★
() автор топика
Последнее исправление: saahriktu (всего исправлений: 1)

Само по себе деление на /bin, /sbin, /usr/bin, /usr/sbin потеряло всякий смысл еще до появления линукса.

altwazar ★★★★
()
Ответ на: комментарий от altwazar

Нет, поскольку схемы разделов бывают разными. /usr может быть вообще на другом носителе и монтироваться в последнюю очередь. Таким образом, в /bin и /sbin помещают бинарники актуальные во время загрузки системы. А отдельные /sbin'ы существуют в соответствии с FHS.

Понятное дело, что можно сделать просто один корневой раздел без отдельного /usr, но не следует также исключать и те варианты, когда это может быть актуально. Например, когда в ноутбуке основной носитель маленький, но юзер может вставить карту памяти и разместить на ней /usr.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от saahriktu

Например, когда в ноутбуке основной носитель маленький, но юзер может вставить карту памяти и разместить на ней /usr.

Если все бинарники будут лежать в /usr/bin, то это никак не повлияет на загрузку в этом случае.

altwazar ★★★★
()
Ответ на: комментарий от altwazar

Для загрузки используется корневой раздел. Поэтому для схемы с отдельным /usr требуемые для загрузки бинарники должны быть в /bin и /sbin. Если в дистрибутиве by design все бинарники в /usr/bin, то он не позволяет выносить /usr на отдельный раздел.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от saahriktu

Для загрузки используется корневой раздел.

initramfs и отдельный usr примонтирует.

При этом отдельный раздел для / и /usr в данном случае решает как раз проблему отдельного bin|sbin. Если у тебя все изначально в /usr/bin, то и смысла в отдельном разделе /usr нет.

altwazar ★★★★
()
Ответ на: комментарий от Assembler

В плане улучшения мозгов пользователя идеал - арч. Да и сам дистр в целом норм, хоть и без надежных применений, кроме разве что ливсд.

В плане использования самого дистра - федора. Можт и не 100% идеал, но хотя бы стремится к оному.

В плане морального разложения и подготовки пользователя к утилизации в биореакторе - убунту. Сам дистр говно, но не выдающееся, ненужный середнячог.

В плане идиотизма самого дистрибутива - дебиан. Отчасти это следствие его старости, замшелости и мормонства, но это уже ответ на вопрос почему.

Самый мертвый из существующих дистров - центос. Как водится для эпичных дистров, он не смог просто умереть, а породил кучу зомби - альмы там, роки и прочие.

Самый livecd (наверное), systemrescue.

AVL2 ★★★★★
()
Ответ на: комментарий от saahriktu

Дык, вот, стандарт FHS предполагает, что в /sbin, /usr/sbin и /usr/local/sbin лежат бинарники, которые запускает только root.

Когда писали коран, дороги не минировали! (C)

Это для кого?

/usr/sbin/ip
/usr/sbin/poweroff
AVL2 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.