Просто установите Ubuntu, как обычно на втором жестком диске, но убедитесь, что вы устанавливаете загрузчик Grub, это Linux-версия Windows Boot Manager. После установки войдите в BIOS и убедитесь, что порядок загрузки указывает на второй жесткий диск в качестве первой опции загрузки. Если grub не читает вашу Windows 7, попробуйте запустить run:
update-grub
Единственный способ предотвратить создание пользователем псевдонимов - предоставить им оболочку, которая не поддерживает псевдонимы. Это, как правило, проблема X / Y, где X действительно представляет собой модель угрозы, которая должна быть решена с помощью соответствующих элементов управления или архитектуры, а не для решения проблемы post-facto после того, как пользователю предоставлена оболочка в общей системе. [!d1 ]
Ниже, я предоставляю технически правильный ответ, а также некоторые рекомендации о том, какие проблемы это будет и не решит.
Вы можете использовать ограниченную оболочку Bash, назначив rbash в качестве оболочки входа пользователя. Например:
foo:x:2001:2001:restricted user:/home/foo:/bin/rbash
Затем вы должны отключить встроенный пользователь post-facto для пользователя, желательно, не нарушая оболочку всех остальных. В качестве примера вы можете добавить следующее в файл, например /etc/profile.d/rbash.sh:
# Limit effect to users in a specific UID range.
if ((UID >= 2000)) && ((UID < 3000)); then
# Check shell options; disable alias builtins when shell is restricted.
if [[ $- =~ r ]]; then
enable -n alias
enable -n unalias
fi
fi
Если вы не разместили пользователя в chroot тюрьму или предоставил им модифицированный файл /etc/profile.d/rbash.sh , который не включает доступ к другим оболочкам, нет ничего, что помешало бы пользователю просто ввести bash в приглашение и получение неограниченной оболочки.
Кроме того, по дизайну ограниченная оболочка предотвращает многие общие действия, такие как смена каталогов:
$ cd /tmp
rbash: cd: restricted
, но не препятствует другим скриптам или программам в PATH от этого. Это означает, что вы должны тщательно обрабатывать среду пользователя и, в частности, чтобы вы не могли изменять PATH в своих файлах запуска, потому что, хотя rbash делает PATH только для чтения, он делает это после инициализации.
Даже если вы используете rbash, вам нужно сделать это как часть более широкого набора элементов управления. Некоторые примеры могут включать в себя:
Предотвращение случайного вызова нетехнических пользователей опасными командами путем предоставления псевдонимов по умолчанию, таких как rm -i, mv -i и cp -i в файле /etc/bash.bashrc. Учитывая ваш оригинальный пример, это, вероятно, самое разумное решение. Вы можете комбинировать это с enable -n alias, если хотите. Это не помешает знакомым пользователям изменять псевдонимы, но этого может быть достаточно, чтобы нетехнические пользователи не делали то, что вас беспокоит. Традиционные разрешения Unix или ACL для POSIX для защиты файлов и каталогов. Логины, которые выполняют одну неинтерактивную команду. Например:foo:x:2001:2001:run foo.sh:/home/foo:/usr/local/bin/foo.sh
Использовать принудительные команды SSH для каждой клавиши. Например: # ~foo/.ssh/authorized_keys
command="/usr/local/bin/foo.sh" [remainder of line]
Используйте опцию OpenSSH ForceCommand с условным блоком Match. Используйте специальные инструменты, такие как гитолит или scponly, предназначенные для вашего конкретного случая использования. Используйте chroot тюрьму. Используйте виртуализацию, такую как Xen, OpenVZ, LXC, VMware, VirtualBox или другие технологии для обеспечения изолированной среды. После того как вы точно определили свою модель угрозы, вы можете определить наиболее подходящие элементы управления для вашего варианта использования. Без более значимого понимания PATH вы хотите предотвратить наложение псевдонимов (например, какую проблему в реальной жизни он разрешает?) Вы не можете выбрать наиболее подходящие элементы управления.
Это совершенно бессмысленное усилие, как показывает ответ муру. Но есть некоторые варианты, но они не идеальны.
Согласно руководству bash, функции всегда имеют приоритет над псевдонимами, поэтому мы могли бы сделать следующее:
xieerqi@eagle:~$ function alias { echo "Aliases are no-no" ; }
xieerqi@eagle:~$ alias TEST='rm'
Aliases are no-no
Вы могли бы определить определение функции в системном масштабе .bashrc, однако, как заметил муру, умные пользователи найдут способ получить псевдонимы, например, используя другой файл bashrc.
Еще одна идея, с которой я играл, - enable. alias - встроенная оболочка, а bash имеет приятную команду enable, которая позволяет включать или отключать встроенные функции. Например, здесь я отключил alias.
xieerqi@eagle:~$ enable -n alias
xieerqi@eagle:~$ alias
No command 'alias' found, did you mean:
Command '0alias' from package 'zeroinstall-injector' (universe)
alias: command not found
xieerqi@eagle:~$ alias TEST='rm'
No command 'alias' found, did you mean:
Command '0alias' from package 'zeroinstall-injector' (universe)
alias: command not found
xieerqi@eagle:~$ enable alias
xieerqi@eagle:~$ alias
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'
xieerqi@eagle:~$
Опять же, использование системного bashrc является опцией здесь.
Вы можете определить (в /etc/profile) функцию, названную alias, которая делает требуемую проверку (возможно, используя type -p) (ведь «команды по умолчанию Ubuntu» являются «исполняемыми файлами в $PATH») перед вызовом встроенный alias, НО, как указывали другие, ваши пользователи могут обойти это. Почему бы не получить другой набор пользователей или не обучить их («Определение alias, которое отменяет команду, является очень хорошим способом съемки в ногу и вызывает путаницу (например, почему ls запрашивает мой пароль ?))?