Существует множество способов, которыми вы могли бы достичь этого. Я собираюсь перечислить одно из нескольких возможных решений.
Я бы предложил использовать несколько различных уровней защиты, чтобы пользователи не могли запускать команды, к которым им не разрешен доступ. Все приведенные здесь указания предполагают, что у пользователей есть свой собственный каталог /home/[username]
, что их оболочка /bin/bash
, и вы хотели бы, чтобы они использовали оболочку bash при входе в систему.
разрешения
1) Изменение каталога, так что только пользователь может редактировать содержимое домашнего каталога
chmod 755 /home/[username]
2) Удалить пользователя .bashrc
файл
rm /home/[username]/.bashrc
This site имеет больше информации о том, почему это может быть хорошей идеей удалить .bashrc
в этой ситуации.
3) Создать .bash_profile
и добавить «безопасные» псевдонимы для всех команд, которые вы хотели бы, чтобы отключить
./bash_profile Пример файла
alias apt-get="printf ''"
alias aptitude="printf ''"
[...]
alias vi="vi -Z" #this is vi's safe mode and shell commands won't be run from within vi
alias alias="printf ''"
пожалуйста, проверьте the full list of bash commands для получения дополнительной информации , Вы должны убедиться, что команда alias alias="printf ''"
является последней командой в списке, иначе вы потеряете возможность псевдонимов всех этих команд.
4) команда Отключить оболочки в VI альясинга команды VI в ограниченном режиме
Синтаксиса является alias vi="vi -Z"
, но пожалуйста, см this site для получения дополнительной информации.
5) Изменение в собственность пользователя .bash_profile
укоренить
chown root:root /home/[username]/.bash_profile
6) Удаление разрешений на запись .bash_profile
chmod 755 /home/[username/.bash_profile]
7) Наконец изменить Баш пользователей пользователя, чтобы restricted bash mode так, чтобы они не может изменять каталоги (если у вас нет ограниченного режима bash в вашей системе, this link поможет и даст вам дополнительную информацию)
chsh -s /bin/rbash [username]
Теперь, когда пользователи войдут в систему, они не смогут изменять каталоги, все команды, которые вы не хотите использовать, выведут ту же информацию, что и если пользователь нажал клавишу [ENTER]
без команды и ваши функции /bin/bash
остаются неизменными.
В зависимости от того, какие функции вы выбрали или не выполняете таким образом, пользователи могут по-прежнему уклоняться от некоторых элементов управления, которые вы внедрили. Однако, поскольку мы реализовали несколько буферов безопасности, пользователю действительно нужно было бы знать о компьютерных системах, чтобы сделать что-то опасное.
В отношении соответствующей заметки и того, что вы можете рассмотреть, если вы разместите эти псевдонимы на всех пользователях .bash_profile
, вам будет трудно поддерживать, какие функции должны и не должны быть сглажены, и если вам нужно измените псевдоним на все, что вам нужно будет изменить каждый из них по отдельности. Кроме того, поскольку пользователи могут использовать vim
или vi
для просмотра файлов, они могут видеть содержимое своего .bash_profile
и понимать, какие ограничения у них есть и чего нет.
Чтобы обойти это, я бы предложил.
1) Ввод всех псевдонимов в каталоге не доступном для пользователей (вставить содержимое .bash_profile
здесь)
/[path_to_file]/startup_functions_for_beginners.sh
2) Sourcing псевдонимы в их .bash_profile
улучшенный файл ./bash_profile файл
if [[ -f /[path_to_file]/startup_functions_for_beginners.sh ]]; then
. /[path_to_file]/startup_functions_for_beginners.sh
fi
Это должно поставить вас на ваш путь, но помните, что почти всегда есть способы обойти ограничения.
Также не стесняйтесь пересобирать информацию в этом ответе в соответствии с вашими потребностями. Они могут определенно сочетаться с рядом других ограничений.
Q: Мне нужно, чтобы пользователи имели доступ к fg
и bg
, но я не хочу, чтобы они были в состоянии получить доступ aptitude
или bash
alias apt-get="printf ''" #the user won't be able to run this
alias aptitude="printf ''" #the user won't be able to run this
alias bash="printf ''" #the user won't be able to run this
#alias fg="printf ''" #this will run as a bash built-in
#alias bg="printf ''" #you actually don't need to include these in your script
Список общих команд в соответствии с этим Harvard Website (НЕ ИСЧЕРПЫВАЮЩИЙ)
осторожность следует позаботиться с редакторами, потому что некоторые позволяют excution команд оболочки из программы
nano
emacs
pico
sed
vi
vim
Все остальное
exit
logout
passwd
rlogin
ssh
slogin
yppasswd
mail
mesg
pine
talk
write
as
awk
bc
cc
csh
dbx
f77
gdb
gprof
kill
ld
lex
lint
make
maple
math
nice
nohup
pc
perl
prof
python
sh
yacc
xcalc
apropos
find
info
man
whatis
whereis
cd
chmod
chown
chgrp
cmp
comm
cp
crypt
diff
file
grep
gzip
ln
ls
lsof
mkdir
mv
pwd
quota
rm
rmdir
stat
sync
sort
tar
tee
tr
umask
uncompress
uniq
wc
cat
fold
head
lpq
lpr
lprm
more
less
page
pr
tail
zcat
xv
gv
xpdf
ftp
rsync
scp
alias
chquota
chsh
clear
echo
pbm
popd
pushd
script
setenv
stty
netstat
rsh
ssh
bg
fg
jobs
^y
^z
clock
date
df
du
env
finger
history
last
lpq
manpath
printenv
ps
pwd
set
spend
stty
time
top
uptime
w
who
whois
whoami
gimp
xfig
xv
xvscan
xpaint
kpaint
mplayer
realplay
timidity
xmms
abiword
addbib
col
diction
diffmk
dvips
explain
grap
hyphen
ispell
latex
pdfelatex
latex2html
lookbib
macref
ndx
neqn
nroff
pic
psdit
ptx
refer
roffbib
sortbib
spell
ispell
style
tbl
tex
tpic
wget
grabmode
import
xdpyinfo
xkill
xlock
xterm
xwininfo
html2ps
latex2html
lynx
netscape
sitecopy
weblint
'man rbash' может быть пригодится. –
вы root.ok.put все команды в/bin/bash. затем установите разрешения для каждого пользователя на определенные команды с помощью chowm и chmod ... ok? – MLSC
@MortezaLSC: это нехорошее действие! Я не хочу менять каталог файлов bin или их разрешения. это создаст проблему для системы. Я ищу правильный способ ограничения доступа некоторых пользователей. – Mortezaipo