Linux нет папки sbin

Еще одно мнение о разнице между bin, sbin, usr/bin, usr/sbin

Недавно я обнаружил вот такую статью: Разница между bin, sbin, usr/bin, usr/sbin. Хотелось бы поделиться своим взглядом на стандарт.

/bin

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

Там ожидается присутствие таких команд:

cat, chgrp, chmod, chown, cp, date, dd, df, dmesg, echo, false, hostname, kill, ln, login, ls, mkdir, mknod, more, mount, mv, ps, pwd, rm, rmdir, sed, sh, stty, su, sync, true, umount, uname.

Можно сделать симлинки на /usr, но хотя во времена systemd /usr на отдельном устройстве не встречается, его еще можно встретить на встраиваемой системе, светофоре, кофемолке и PDP-11 обслуживающем важный прибор в одной из лабораторий Академии Наук.

/sbin

Утилиты, используемые для системного администрирования (и другие команды только для root), /sbin содержит двоичные файлы, необходимые для загрузки, восстановления, восстановления и/или восстановления системы в дополнение к двоичным файлам в /bin. Программы, выполняемые после того, как /usr монтируется (когда проблем нет), обычно помещаются в /usr/sbin. Локально установленные программы системного администрирования должны быть помещены в /usr/local/sbin.

fastboot, fasthalt, fdisk, fsck, getty, halt, ifconfig, init, mkfs, mkswap, reboot, route, swapon, swapoff, update.

Один из способов защиты системы от шаловливых рук юзеров — это запрет запуска этих утилит кому-попало, установкой атрибута x.
К тому же, замена /bin и /sbin на копии из архива (одинакового для всех однотипных систем) является быстрым способом починки систем без пакетного менеджера.

/usr/bin

Тут всё просто. Однотипные команды, одинаковые для всех серверов/кофемолок компании. И сам /usr может разворачиваться одинаковым для разных ОС (для /bin и /sbin такое как правило не работает), это архитектурно независимые программы. Может содержать линки на интерпретаторы perl или python, которые лежат в /opt или еще где-то в сети.

Читайте также:  Linux on used laptops

/usr/sbin

Тоже самое, что /usr/bin, но для использования только админами.

/usr/local/bin и /usr/local/sbin

Одна из важнейших локаций. В отличие от остального, /usr не может быть одинаковой для всей организации. Тут находятся ОС-зависимые, hardware-зависимые и просто программы, которые не на всех устройствах нужны. При синхронизации /usr на машинах, /usr/local требуется исключать.

/home/$USER/bin

Тут случай аналогичный с /usr/local, только лежат программы специфичные для конкретного пользователя. Можно переносить (или синхронизировать) на другую машину при переезде пользователя. То, что нельзя переносить складывается в /home/$USER/.local/bin. Можно использовать local без точки. /home/$USER/sbin по понятным соображениям отсутствует.

Буду рад исправлениям и дополнениям.

Источник

Нет каталога /usr/local/bin в PATH

Потому что у рута могут быть свои файлы инициализации шелла.

В домашнем каталоге, очевидно.

Может чего-то типа env-update сделать?

Смысл? Я ничего нигде не менял.

Что-то я ничего не понимаю:

avalon coding # env-update >>> Regenerating /etc/ld.so.cache. avalon coding # . /etc/profile avalon coding # echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.3:/usr/lib64/subversion/bin:/opt/vmware/bin:/opt/cuda/bin 

Ну не знаю, grep -r PATH /etc/. Наверно что-то дистроспецифичное.

По этой команде нашёл вот что:

/etc/crontab:PATH=/sbin:/bin:/usr/sbin:/usr/bin

Я всё равно не понимаю, почему у рута изначально куцый PATH, который расширяется только после . /etc/profile. Что за нафиг такой?

у рута изначально куцый PATH, который расширяется только после . /etc/profile

/etc/profile копируется тебе в ~/.bashrc при создании нового пользователя. Либо должно быть там указано.

Кури свои ~/.bashrc и ~/.bash_profile

Оно же у всех поначалу куцее. Не?:

Что значит «у всех»? Как я тогда запускаю vmplayer?

Нет у рута в хомяке этих файлов.

 When bash is invoked as an interactive login shell, or as a non-interactive shell with the --login option, it first reads and executes commands from the file /etc/profile, if that file exists. After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and exe‐ cutes commands from the first one that exists and is readable. The --noprofile option may be used when the shell is started to inhibit this behavior. 

В ~/.bashrc PATH настраиваешь. Не?

ты как под рут заходишь su? если — да, то ошибка в этом, т.к. su сохраняет и не перезагружает окружение, решение su -:

% su - Password: qnikst ~ # echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.3:/opt/cuda/bin qnikst@qnikst [git:master].zsh % su Password: qnikst .zsh # echo $PATH /sbin:/bin:/usr/sbin:/usr/bin 

qnikst ★★★★★ ( 01.11.12 11:43:23 MSK )
Последнее исправление: qnikst 01.11.12 11:44:33 MSK (всего исправлений: 1)

Читайте также:  Linux current user directory

Вот он — корень твоей проблемы. Это что ж за дистрибутив такой сраный?

Ты лучше скажи, зачем руту в хомяке эти файлы?

Хм. Вот до чего доводят советы без подключения libastral.so

Я-то думал, ты su — пишешь всегда

Ну что, прогресс: четыре года я набирал su root, потом до меня дошло, что можно набирать просто su, а сейчас вот, спустя ещё три года, я узнал, что нужно набирать su —

А где же ты будешь рутовские alias’ы и прочую шнягу прописывать?

Т.е. man su ты никогда не читал?

 -, -l, --login Starts the shell as login shell with an environment similar to a real login: 

Когда нужно будет прописать — создам этот файл и пропишу.

Пояснения: при переходе в режим суперпользователя командой su происходит просто вызов командного интерпретатора с правами root. При этом значения переменных окружения, в частности $PATH, остается таким же, как у пользователя. То есть в переменной $PATH не окажется каталогов /sbin, /usr/sbin, и без указания полного имени будут недоступны команды route, lilo, mkswap и другие. Более того, переменная $HOME будет указывать на каталог пользователя, и все программы, запущенные в режиме суперпользователя, сохранят свои настройки с правами рута в каталоге пользователя, что в дальнейшем может вызвать проблемы.

СТОП! Но эти каталоги-то есть (см. стартовый пост)! Нет дополнительных каталогов (/usr/local/bin и т.д.). Почему?

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

Источник

/sbin не в $PATH

По умолчанию в дебиане у пользователя в пути отсутствует /sbin. Я добавил пользователю его в /etc/profile, перезагрузился, но в $PATH переменной всё равно нет.

$ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games 
if [ "`id -u`" -eq 0 ]; then PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" else PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games" fi export PATH 

Попробуй добавить в ~/.profile .

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

# set PATH so it includes user's private bin if it exists if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" fi # set PATH so it includes user's private bin if it exists if [ -d "$HOME/.local/bin" ] ; then PATH="$HOME/.local/bin:$PATH" fi 

В некоторых дистрибутивах /sbin , /usr/sbin и (опционально) /usr/local/sbin добавляются в $PATH только пользователю root .

Читайте также:  Alt linux установка windows

Подробнее смотри в /etc/profile , /etc/environment и /etc/bash (или что у тебя используется в качестве шелла).

где переписывается изначальное значение, задаваемое /etc/profile

Не знаю. Если интересно, можно grep’нуть все конфиги в /etc/ , юниты systemd и конфиги в ~./.* на цепочку PATH и поискать.

    1. /etc/profile трогать не надо, есть /etc/profile.d/ для кастомизаций.
    1. /etc/profile выполняется только для интерактивных оболочек.
    1. есть /etc/bash.bashrc (debian, у redhat по другому, как-то назван) оно как для интерактивных, так и для неинтерактивных, если, конечно, у тебя bash/dash.

Добро пожаловать в чехарду :-).

Но /sbin/ пользователю ненадобен, если у нерута в нём есть потребность — ты чего-то делаешь не то.

Ну вот я иногда запускаю ifconfig от нерута, а он лежит в /sbin/. Конечно, нетрудно набрать /sbin/ifconfig, но без /sbin/ быстрее. 🙂

есть ip address — /usr/bin/ip . Но хозяин барин, конечно, на то он и linux.

Источник

Why does `/sbin` not included in $PATH for new user?

ifconfig is located in /sbin/ifconfig . I don’t have problem issuing ifconfig command in root user. The problem started when I created a new user.

root@Ubuntu:~# useradd -m user root@Ubuntu:~# root@Ubuntu:~# passwd user Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully root@Ubuntu:~# root@Ubuntu:~# su user user@Ubuntu:/root$ id uid=1003(user) gid=1003(user) groups=1003(user) user@Ubuntu:/root$ 
user@Ubuntu:~$ ifconfig -su: ifconfig: command not found user@Ubuntu:~$ 
user@Ubuntu:~$ whereis ifconfig ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz user@Ubuntu:~$ user@Ubuntu:~$ /sbin/ifconfig eth0 Link encap:Ethernet HWaddr AA:AA:AA:AA:AA:AA inet addr:10.0.0.1 Bcast:10.0.0.255 Mask:255.255.255.0 user@Ubuntu:~$ 
user@Ubuntu:~$ echo $PATH /home/user/bin:/home/user/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/snap/bin user@Ubuntu:~$ user@Ubuntu:~$ echo $PATH | grep sbin user@Ubuntu:~$ 
root@Ubuntu:~# ifconfig eth0 Link encap:Ethernet HWaddr AA:AA:AA:AA:AA:AA inet addr:10.0.0.1 Bcast:10.0.0.255 Mask:255.255.255.0 root@Ubuntu:~# echo $PATH | grep sbin /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games root@Ubuntu:~# 
  1. The question is why /sbin is not included by default? Doesn’t this make things harder for user?
  2. How to make sure /sbin is added automatically in $PATH instead of modifying it manually for each users?

Источник

Оцените статью
Adblock
detector