Linux 用户权限问题

我在自己的系统中 新建了一个用户比如 aa
useradd aa
passwd aa

我现在使用 root 新建了一个文件 比如 bb

我新建了一个组
groupadd cc

//查看 cat /etc/group 查看组 cat /etc/passwd 查看全部用户

usermod -d /home/www -G cc aa 我将用户 aa 加入了 cc 组中 并指定了 aa 的登录目录是 /home/www

现在我使用 aa 登录服务器
直接登录到了 /home/www

现在 我想将其他目录都不能访问 aa 用户进来 只能看见 /home/www 下的东西 不能 cd 到它的上级目录 求详细的操作过程 谢谢

阅读 1.8k
2 个回答
新手上路,请多包涵

一个简单的方式约束用户在他们的家目录
1,确保你安装的openssh版本为4.9p1或高于该版本
2,编辑/etc/ssh/sshd_config
添加以下内容
Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no

确保“match”指令在文件末尾,这会告诉openssh,所有处于sftp组的用户,限制他们的家目录。

3,添加你想限制的用户到sftp组
usermod -G sftp joe
usermod -s /bin/false joe
chown root:root /home/joe
chmod 0755 /home/joe

改组用户没有shell权限,可用chown和chmod设置目录权限,当设置这些权限的时候,用户可以上传或下载
文件,但不能创建目录或文件在根目录,换句话说,如果这些用于web集群,确保子目录在根下,如/home/joe/public_html/ 用户有效且拥有所有权,这种方式用户可以在/home/joe/public_html下写和创建目录,但是不能自己改变根目录(/home/joe)

在chroot里创建一个基本的系统

mkdir /chroot

cd /chroot

mkdir {bin,dev,lib}

cp -p /bin/bash bin/

cp -p /lib/{ld-linux.so.2,libc.so.6,libdl.so.2,libtermcap.so.2} lib/

mknod dev/null c 1 3

mknod dev/zero c 1 5

chmod 0666 dev/{null,zero}

mkdir -p /chroot/home/joe

用户joe可以远程受限的目录,通常的情况下,这种作法不常见,但给了你一个思路,你可以安装库和二进制文件在受限目录中。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题