К сожалению, ZFS связывается законами действительности. WinFS только связывается законами маркетинга.
В этом случае WinFS является ясно победителем, в зависимости от того, насколько легковерный Вы.
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', особенно сообщения, связанные с безопасностью!
Необходимо передать имя пользователя; выполнение этого через sudo
(или корнем), позволит Вам устанавливать пароль/оболочку пользователя, не будучи спрошенным старый пароль. Проверьте man chsh
для получения дополнительной информации.
Теперь мой вопрос: почему Вы хотели бы сделать это? Если это - сценарий установки, не были должны Вы просто изменить оболочку пользователей во время создания (т.е. при запуске adduser
)? При клонировании системы удаленно не были должны Вы изменять ее в /etc/passwd
сначала? Я не вижу оснований для того, чтобы сделать его с помощью сценария, если Вы не автоматизировали целый процесс установки, и выбор оболочек, которые будут установлены, происходит после создания первого пользователя.
Я полагаю, что можно изменить оболочку пользователя в /etc/password
файл, возможно при помощи passwd
команда. Я еще не прочитал его, но это может быть полезно: различия в оболочке UNIX и как изменить Вашу оболочку.
Следующее предотвращает изменение оболочки заблокированных учетных записей и выборочно позволяет людям использовать chsh
самим БЕЗ sudo или su:
Добавьте эту самую верхнюю часть /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
Создайте группу 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:~$
Попробуйте sudo chsh -s /bin/zsh
, затем:
echo $SHELL
- в случае успеха все изменилось :)