Изменение оболочки (использующий chsh) через командную строку в сценарии

К сожалению, ZFS связывается законами действительности. WinFS только связывается законами маркетинга.

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

10
задан 12 February 2015 в 15:50
5 ответов

chsh на самом деле изменяет строку, имеющую отношение к пользователю в/etc/passwd, хотя пользователь может только изменить его собственную 'строку' в/etc/passwd. Следовательно, если Вы хотите изменить оболочку для другого пользователя, Вам нужен его / ее passwd.

Если Вы действительно хотите сделать это (учитывая проблемы в сообщении Lorenzo, и возможные проблемы безопасности) вот то, как можно сделать это:

#visudo

Это требует полномочий пользователя root.

Скажите, что Вы в настоящее время работаете как "alice" и хотите изменить оболочку "боба" без пароля;

Добавьте к файлу:

Cmnd_Alias     SHELL = /usr/bin/chsh
Runas_Alias    SH    = Bob
alice          ALL   = (SH) NOPASSWD: SHELL

Это удостоверяется, что 'alice' может работать на всех хостах как на пользователях в группе SH без пароля группа команд в SHELL.

Вероятно, немного неправдоподобный, чтобы сделать это этот путь, но это возможно.

Обязательно считайте "человека sudoers" прежде, чем изменить файл потов с 'visudo', особенно сообщения, связанные с безопасностью!

3
ответ дан 2 December 2019 в 22:01

Необходимо передать имя пользователя; выполнение этого через sudo (или корнем), позволит Вам устанавливать пароль/оболочку пользователя, не будучи спрошенным старый пароль. Проверьте man chsh для получения дополнительной информации.

Теперь мой вопрос: почему Вы хотели бы сделать это? Если это - сценарий установки, не были должны Вы просто изменить оболочку пользователей во время создания (т.е. при запуске adduser)? При клонировании системы удаленно не были должны Вы изменять ее в /etc/passwd сначала? Я не вижу оснований для того, чтобы сделать его с помощью сценария, если Вы не автоматизировали целый процесс установки, и выбор оболочек, которые будут установлены, происходит после создания первого пользователя.

2
ответ дан 2 December 2019 в 22:01

Я полагаю, что можно изменить оболочку пользователя в /etc/password файл, возможно при помощи passwd команда. Я еще не прочитал его, но это может быть полезно: различия в оболочке UNIX и как изменить Вашу оболочку.

0
ответ дан 2 December 2019 в 22:01

Следующее предотвращает изменение оболочки заблокированных учетных записей и выборочно позволяет людям использовать chsh самим БЕЗ sudo или su:

Простая установка, которая по-прежнему безопасна:

  1. Добавьте эту самую верхнюю часть /etc/pam.d/chsh :

     # Это позволяет пользователям группы chsh изменять свои оболочки без пароля.
    #
    # Пер: http://serverfault.com/questions/202468/changing-the-shell-using-chsh-via-the-command-line-in-a-script
    #
    достаточная авторизация pam_wheel.so trust group = chsh
    
  2. Создайте группу chsh:

     groupadd chsh
    

Для любого пользователя, которому разрешено изменять свою оболочку:

    usermod -a -G chsh username

Денежный выстрел:

user@host:~$ getent passwd $USER
user:x:1000:1001::/home/user:/bin/bash
user@host:~$ chsh -s `which zsh`
user@host:~$ getent passwd $USER
user:x:1000:1001::/home/user:/usr/bin/zsh
user@host:~$ 
19
ответ дан 2 December 2019 в 22:01

Попробуйте sudo chsh -s /bin/zsh, затем:

  1. выход для сервера
  2. перезагрузите терминал
  3. войдите на сервер и проверьте echo $SHELL - в случае успеха все изменилось :)
0
ответ дан 2 December 2019 в 22:01

Теги

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