@Dodzi Dzakuma ソリューションは、無効にしたいコマンドがいくつかある場合に最適です。
ただし、ユーザーにいくつかのコマンドの実行のみを許可したい場合は、より良い解決策があります:
<オール>ユーザー シェルを制限された bash に変更します
chsh -s /bin/rbash <username>
ユーザーのホーム ディレクトリの下に bin ディレクトリを作成します
sudo mkdir /home/<username>/bin
sudo chmod 755 /home/<username>/bin
ユーザーのデフォルト PATH を bin ディレクトリに変更します
echo "PATH=$HOME/bin" >> /home/<username>/.bashrc
echo "export PATH >> /home/<username>/.bashrc
ユーザーが必要とするコマンドのシンボリック リンクを作成します
sudo ln -s /bin/<command> /home/<username>/bin/
ユーザーによる ~/.bashrc の変更を制限
chattr +i /home/<username>/.bashrc
これは、すべてのコマンドのエイリアスを無効に設定する代わりに、許可するコマンドのシンボリック リンクのみを設定するため、ユーザーに複数のコマンドの実行のみを許可する場合に適しています。
これを達成するには、さまざまな方法があります。考えられるいくつかの解決策の 1 つをリストアップします。
ユーザーがアクセスを許可されるべきではないコマンドを実行できないようにするために、いくつかの異なる保護層を使用することを提案します。ここでの説明はすべて、ユーザーが独自の /home/[username]
を持っていることを前提としています ディレクトリ、シェルが /bin/bash
であること
ユーザーの bash を制限付き bash モードに変更して、ディレクトリを変更できないようにする (システムで bash モードが制限されていない場合は、このリンクが役に立ち、詳細情報が得られます)chsh -s /bin/rbash [username]
ユーザーのみがホーム ディレクトリの内容を編集できるように、ディレクトリのアクセス許可を変更します
chmod 755 /home/[username]
- ユーザーの
.bashrc
を削除します ファイル
rm /home/[username]/.bashrc
このサイトには、.bashrc
を削除することをお勧めする理由に関する詳細情報があります。
.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 ''"
詳細については、bash コマンドの完全なリストを確認してください。 alias alias="printf ''"
であることを確認する必要があります。 command はリストの最後のコマンドです。そうしないと、これらのコマンドすべてにエイリアスを設定できなくなります。
注意 以下のコマンドを実行すると、システムで使用可能なほぼすべてのコマンドが検索され、使用可能なほぼすべてのコマンドが事前にエイリアス化された既製のファイルが出力されます。 [
コマンドは test
です コマンド バッシュで。したがって、ファイルにそれが表示されていても、エラーではありません。
#search /bin and /usr/bin for any commands that exist on our system
ls /bin -1 > commands_on_system.txt && ls /usr/bin -1 >> commands_on_system.txt
#format and save this information to a bash variable
IFS=$'\n' GLOBIGNORE='*' command eval 'COMMANDS_ON_SYSTEM=($(cat ./commands_on_system.txt))'
IFS=$'\n' COMMANDS_ON_SYSTEM=($(sort <<<"${COMMANDS_ON_SYSTEM[*]}"))
unset IFS
#save these commands in aliased format for easy usage
for linux_command in "${COMMANDS_ON_SYSTEM[@]}"
do :
#you can change how this works to automatically
#setup the command file for you
echo "alias ${linux_command}=\"printf ''\"" >> ./startup_functions_for_beginners.sh
done
-
vi コマンドを制限モードにエイリアスして、vi のシェル コマンドを無効にする
構文はalias vi="vi -Z"
です ですが、詳細についてはこのサイトをご覧ください。 -
ユーザーの
.bash_profile
の所有権を変更します ルート化する
chown root:root /home/[username]/.bash_profile
-
最後に、ユーザーの
.bash_profile
の書き込み権限を削除します
chmod 755 /home/[username/.bash_profile]
ユーザーがログインすると、ディレクトリを変更できなくなります。ユーザーに使用してほしくないすべてのコマンドは、ユーザーが [ENTER]
を押した場合と同じ情報を出力します。 コマンドが指定されていないキーと、あなたの /bin/bash
この方法でエイリアスを作成するかどうかに応じて、ユーザーは実装したコントロールの一部を回避できる可能性があります。ただし、いくつかの安全バッファーを実装したため、ユーザーは危険を冒すためにコンピューター システムについて本当に知っている必要があります。
関連するメモと考慮したいことがありますが、これらのエイリアスをすべてのユーザーの .bash_profile
に直接配置する場合 エイリアスを設定する必要がある関数とエイリアスを設定しない関数を維持するのは困難であり、何かのエイリアスを変更する必要がある場合は、それらすべてを個別に変更する必要があります。また、ユーザーは vim
を使用できるため、 または vi
ファイルを表示するには、.bash_profile
の内容を見ることができます。 そして、彼らが持っている制限と持っていない制限を理解してください.
これを回避するには、お勧めします。
<オール>.bash_profile
の内容を貼り付けます)。 ここ)
/[path_to_file]/startup_functions_for_beginners.sh
- エイリアスを
.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
このハーバード ウェブサイトに記載されている一般的なコマンドのリスト (限定的ではありません)
プログラムを Linux にインストールすると、利用できるものが変わります。上記のステップ 4 にリストされているコマンドを実行して、インストール後に新しいコマンドを見つけやすくすることをお勧めします。
プログラム内からシェル コマンドを実行できるエディタもあるため、エディタには注意が必要です
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