如何在Linux中限制用户命令

如何在Linux中限制用户命令,第1张

如何在Linux中限制用户命令

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

我建议使用几个不同的保护层,以防止用户运行不应被允许访问的命令。此处的所有说明均假定用户具有自己的

/home/[username]
目录,并且其外壳程序位于,
/bin/bash
并且您希望他们在登录系统时使用bash
Shell。

1) 将用户的bash更改为受限bash模式,以便他们不能更改目录
(如果您的系统上没有受限bash模式,此链接将为您提供更多信息)

chsh -s /bin/rbash [username]

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

chmod 755 /home/[username]

3)删除用户的

.bashrc
文件

rm /home/[username]/.bashrc

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

4)创建一个,

.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 vialias alias="printf ''"

请查看bash命令的完整列表以获取更多信息。您必须确保该

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

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

[
命令是
test

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

#search /bin and /usr/bin for any commands that exist on our systemls /bin -1 > commands_on_system.txt && ls /usr/bin -1 >> commands_on_system.txt#format and save this information to a bash variableIFS=$'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 usagefor 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.shdone

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
则将难以维护应该和不应该为哪些功能命名的别名,并且如果需要在任何内容上更改别名您将不得不单独更改所有这些。另外,由于用户可以使用
vim
vi
查看文件,因此他们可以查看其内容
.bash_profile
并了解他们有什么限制和没有什么限制。

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

1)将所有别名放在用户无法访问的目录中(粘贴

.bash_profile
此处的内容)

/[path_to_file]/startup_functions_for_beginners.sh

2)将别名输入到它们的

.bash_profile

改进的./bash_profile文件示例

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

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

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

问:我需要用户有权访问

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

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

nanoemacspicosedvivim

其他一切

exitlogoutpasswdrloginsshsloginyppasswdmailmesgpinetalkwriteasawkbccccshdbxf77gdbgprofkillldlexlintmakemaplemathnicenohuppcperlprofpythonshyaccxcalcaproposfindinfomanwhatiswhereiscdchmodchownchgrpcmpcommcpcryptdifffilegrepgziplnlslsofmkdirmvpwdquotarmrmdirstatsyncsorttarteetrumaskuncompressuniqwccatfoldheadlpqlprlprmmorelesspageprtailzcatxvgvxpdfftprsyncscpaliaschquotachshclearechopbmpopdpushdscriptsetenvsttynetstatrshsshbgfgjobs^y^zclockdatedfduenvfingerhistorylastlpqmanpathprintenvpspwdsetspendsttytimetopuptimewwhowhoiswhoamigimpxfigxvxvscanxpaintkpaintmplayerrealplaytimidityxmmsabiwordaddbibcoldictiondiffmkdvipsexplaingraphyphenispelllatexpdfelatexlatex2htmllookbibmacrefndxneqnnroffpicpsditptxreferroffbibsortbibspellispellstyletbltextpicwgetgrabmodeimportxdpyinfoxkillxlockxtermxwininfohtml2pslatex2htmllynxnetscapesitecopyweblint


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4981918.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存