Foo*_*ish 62 ssh permissions user ubuntu
我安装了SSH,但是我发现如果我使用我的原始帐户登录Ubuntu,它的权限太多了。
我想限制用户只拥有 Ubuntu 中特定文件夹的权限。如何配置这样的用户?
whi*_*ark 71
这很简单。只需创建一个新用户,并将其主目录设置为您需要他访问的目录(此命令必须sudo在 root shell下或在 root shell 中运行):
adduser --home /restricted/directory restricted_user
Run Code Online (Sandbox Code Playgroud)
这将创建一个用户restricted_user,目录/restricted/directory,然后设置目录的权限,以便用户可以写入它。默认情况下,它无法写入任何其他目录。
如果您已经拥有该目录,则可以运行adduser带有--no-create-home附加选项的命令并手动设置权限(也具有 root 权限),例如:
chown restricted_user:restricted_user /restricted/directory
chmod 755 /restricted/directory
Run Code Online (Sandbox Code Playgroud)
如果您需要使该用户无法访问世界可写的目录,则有两种变体。
1) 如果您想为用户提供交互式 shell 会话,请考虑按照本手册创建 chroot jail(在您的/restricted/directory.
之后,将以下内容添加到您的sshd_config:
Match user restricted_user
ChrootDirectory /restricted/directory
Run Code Online (Sandbox Code Playgroud)
2)如果您只需要他在他的连接端点和您的主机之间复制文件,一切都会容易得多。在您的末尾添加这些行sshd_config:
Match user restricted_user
ForceCommand internal-sftp
ChrootDirectory /restricted/directory
Subsystem sftp internal-sftp
Run Code Online (Sandbox Code Playgroud)
然后Subsystem sftp /usr/lib/openssh/sftp-server通过#在开头放置一个井号 ( ) 符号来注释掉。
重新启动您的 SSH 服务器后(它不会在重新启动时终止交互式会话,因此即使您配置错误也是安全的;此外,在您检查是否仍然能够登录之前不会关闭正在运行的会话),一切都应该正常工作如预期。
xpt*_*xpt 15
创建不能离开给定目录(例如,到上层目录等)的受限用户,并且有一组受限/挑选的命令可以使用的最简单方法是使用受限 Shell。参考:
首先,创建一个名为rbash(以 root 用户身份运行)的符号链接。
ln -s /bin/bash /bin/rbash
Run Code Online (Sandbox Code Playgroud)
然后只需使用此受限 Shell 创建一个普通用户,并将其主目录设置为所需的文件夹:
useradd -s /bin/rbash -d /home/restricted_folder username
Run Code Online (Sandbox Code Playgroud)
即使没有 Restricted Shell,如果您明确没有将此用户添加到 sudoer 的列表或任何特殊组中,则默认情况下它将受到限制。
使用受限外壳,禁止或不执行以下操作:
用 cd 改变目录
设置或取消设置 SHELL、PATH、ENV 或 BASH_ENV 的值
指定包含 / 的命令名称
指定包含 / 作为参数的文件名。内置命令
指定包含斜杠的文件名作为 hash 内置命令的 -p 选项的参数
在启动时从 shell 环境导入函数定义
在启动时从 shell 环境解析 SHELLOPTS 的值
使用 >、>|、<>、>&、&> 和 >> 重定向运算符重定向输出
使用 exec 内置命令将 shell 替换为另一个命令
使用 -f 和 -d 选项向 enable 内置命令添加或删除内置命令
使用 enable 内置命令启用禁用的 shell 内置命令
为命令内置命令指定 -p 选项
使用 set +r 或 set +o 限制关闭受限模式。
在任何启动文件之后强制执行这些限制
此外/可选地,要将用户限制为使用一组有限/精选的命令,您可以为该用户创建一个只读的 .bash_profile,使用
PATH=$HOME/bin
Run Code Online (Sandbox Code Playgroud)
并将您允许的任何命令符号链接到该用户的 ~/bin 文件夹中:
ln -s /bin/ls /home/restricted_folder/bin/ls
ln -s /bin/mkdir /home/restricted_folder/bin/mkdir
ln -s /bin/rm /home/restricted_folder/bin/rm
Run Code Online (Sandbox Code Playgroud)
等等。
HTH
| 归档时间: |
|
| 查看次数: |
201869 次 |
| 最近记录: |