如何在Linux中限制用户命令

我有一个用户组:“演示”。

我想设置该用户只能运行10个命令的策略,例如“ vim”,“ nano”,“ cd”等。

或者,将策略设置为对除“ ssh”和“ cat”命令之外的所有命令具有访问权限。

谢谢

回答:

您可以通过许多不同的方法来实现这一目标。我将列出几种可能的解决方案之一。

我建议使用几个不同的保护层,以防止用户运行不应被允许访问的命令。此处的所有说明均假定用户具有自己的/home/[username]目录,并且其外壳程序位于,/bin/bash并且您希望他们在登录系统时使用bash

Shell。

1)

(如果您的系统上没有受限bash模式,此链接将为您提供更多信息) chsh -s /bin/rbash [username]

2)更改目录权限,以便只有用户可以编辑其主目录的内容

chmod 755 /home/[username]

3)删除用户的.bashrc文件

rm /home/[username]/.bashrc

该网站提供了有关.bashrc在这种情况下删除它的一个好主意的更多信息。

4)创建一个,.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

''"命令是列表中的最后一个命令,否则您将无法为所有这些命令加上别名。

运行以下命令将搜索系统上几乎所有可用的命令,并输出一个现成的文件,其中将几乎对所有可用命令进行预锯齿。该

bash中 。因此,如果您在文件中看到它,那不是错误。

#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

5)通过将vi命令别名为受限模式来禁用vi中的shell命令

。语法为alias vi="vi-Z",但是请访问此站点以获取更多信息。

6)将用户的所有权更改.bash_profile为root

chown root:root /home/[username]/.bash_profile

7)最后,删除用户的写权限 .bash_profile

chmod 755 /home/[username/.bash_profile]

现在,当用户登录后,他们将无法更改目录,您不希望他们使用的所有命令将输出相同的信息,就像用户在[ENTER]

未指定命令的情况下按下键一样,并且您的/bin/bash功能保持不变完整。

根据您选择使用哪种功能或不使用这种方式别名,用户可能仍然可以绕过您实现的某些控件。但是,由于我们实现了一些安全缓冲区,因此用户确实必须了解计算机系统才能执行任何危险操作。

在相关说明上,您可能需要考虑一些事项,如果直接将这些别名放置到每个用户的别名中,.bash_profile则将难以维护应该和不应该为哪些功能命名的别名,并且如果需要在任何内容上更改别名您将不得不单独更改所有这些。另外,由于用户可以使用vimvi查看文件,因此他们可以查看其内容.bash_profile并了解他们有什么限制和没有什么限制。

为了解决这个问题,我建议。

1)将所有别名放在用户无法访问的目录中(粘贴.bash_profile此处的内容)

/[path_to_file]/startup_functions_for_beginners.sh

2)将别名输入到它们的 .bash_profile

if [[ -f /[path_to_file]/startup_functions_for_beginners.sh ]]; then

. /[path_to_file]/startup_functions_for_beginners.sh

fi

这应该可以助您一臂之力,但是请记住,几乎总有一些方法可以规避限制。

另外,请随时混入此答案中的信息以适合您的需求。这些无疑也可以与其他一些限制结合在一起。

问:我需要用户有权访问fgbg,但是我不希望他们能够访问aptitudebash

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中运行上面列出的命令,以帮助在安装新命令后查找新命令。

应谨慎对待编辑器,因为某些编辑器允许从程序内部执行shell命令

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

以上是 如何在Linux中限制用户命令 的全部内容, 来源链接: utcz.com/qa/434283.html

回到顶部