Оригинальный автор(ы) | Сальваторе Валенте |
---|---|
Операционная система | Unix и Unix-подобные |
Тип | Команда |
chsh (сокращение от "change shell") — это команда в операционных системах типа Unix , которая используется для смены оболочки входа . Пользователи могут либо указать путь к оболочке, на которую они хотят перейти, в командной строке, либо не указывать аргументы, в этом случае chsh позволяет пользователю изменять оболочку в интерактивном режиме. [1]
chsh — это setuid -программа, которая изменяет файл /etc/passwd и позволяет изменять собственные оболочки входа только обычным пользователям. Суперпользователь может изменять оболочки других пользователей, указав имя пользователя, чью оболочку необходимо изменить, в качестве аргумента командной строки. По соображениям безопасности оболочки, которые могут указывать как обычные пользователи, так и суперпользователь, ограничены содержимым файла /etc/shells , при этом путь к оболочке должен быть точно таким, как он указан в этом файле. (Эта функция безопасности может быть изменена путем повторной компиляции исходного кода для команды с другим параметром конфигурации, и, таким образом, не обязательно включена во всех системах.) Однако суперпользователь может также изменять файл паролей напрямую, устанавливая оболочку любого пользователя на любой исполняемый файл в системе без ссылки на /etc/shells и без использования chsh . [1] [2] [3]
В большинстве систем, когда chsh вызывается без параметра командной строки -s (для указания имени оболочки), он предлагает пользователю выбрать ее. В Mac OS X , если chsh вызывается без параметра -s , он отображает текстовый файл в редакторе по умолчанию (изначально установленном на vim), позволяя пользователю изменять все функции его учетной записи, которые ему разрешено изменять, путь к оболочке - это имя рядом с "Shell:". Когда пользователь выходит из vim, внесенные там изменения переносятся в файл /etc/passwd, который может изменять напрямую только root. [2] [4]
Использование опции -s (например: ) значительно упрощает задачу смены оболочек.% chsh -s /usr/local/bin/bash
В зависимости от системы chsh может или не может запрашивать у пользователя пароль перед сменой оболочки или входом в интерактивный режим. В некоторых системах использование chsh не-root пользователями полностью отключено системным администратором. [4]
Во многих дистрибутивах Linux команда chsh является приложением, поддерживающим PAM . Таким образом, ее поведение можно настроить с помощью параметров конфигурации PAM для отдельных пользователей. Например, директива auth , которая указывает модуль pam_listfile.so, может использоваться для запрета доступа к chsh отдельным пользователям путем указания файла с именами пользователей, доступ к которым следует запретить, с помощью параметра listfile= для этого модуля (вместе с параметром sense=deny ). [5]
POSIX не описывает такие утилиты, как chsh , которые используются для изменения записи пользователя в /etc/passwd . Большинство Unix-подобных систем предоставляют chsh . [6] Системы на базе SVr4 предоставляют похожую возможность с passwd . Две из трех оставшихся систем ( IBM AIX [7] и HP-UX [8] ) предоставляют chsh в дополнение к passwd -e . Исключением является Solaris , где не-администраторы не могут изменить свою оболочку, если не установлен сетевой сервер имен, такой как NIS или NIS+ . [9] [10] Устаревшая [11] система SGI SVr4 IRIX64 также не имела chsh .