Linux下使用简单的一条命令实现控制用户的目录访问权限

本文介绍如何在 CentOS 7.2 系统中安装和管理访问控制列表 (ACL),通过 setfacl 命令为普通用户(如ubuntu)设置和撤销对 /etc 和 /usr 等目录的访问权限,实现信息安全保密。

在这里插入图片描述
项目背景
在做Linux服务器管理时候由于有些生产环境上的信息,或者一些其他敏感的配置信息不让ftp或者普通用户访问,以达到信息安全和隐秘的要求

项目环境
操作系统 :centos7.2

涉及的命令:yum 、setfacl(访问控制权限)

安装ACL
yum -y install acl
查看ACL是否安装成功
rpm -qa | grep acl
setfacl命令的用法
setfacl 2.2.51 – set file access control lists
Usage: setfacl [-bkndRLP] { -m|-M|-x|-X … } file …
-m, --modify=acl modify the current ACL(s) of file(s)
-M, --modify-file=file read ACL entries to modify from file
-x, --remove=acl remove entries from the ACL(s) of file(s)
-X, --remove-file=file read ACL entries to remove from file
-b, --remove-all remove all extended ACL entries
-k, --remove-default remove the default ACL
–set=acl set the ACL of file(s), replacing the current ACL
–set-file=file read ACL entries to set from file
–mask do recalculate the effective rights mask
-n, --no-mask don’t recalculate the effective rights mask
-d, --default operations apply to the default ACL
-R, --recursive recurse into subdirectories
-L, --logical logical walk, follow symbolic links
-P, --physical physical walk, do not follow symbolic links
–restore=file restore ACLs (inverse of `getfacl -R’)
–test test mode (ACLs are not modified)
-v, --version print version and exit
-h, --help this help text
设置用户的访问权限
比如在服务器上希望普通用户ubuntu不能访问 /etc 、/usr等系统配置目录 , 则配置如下

setfacl -R -m u:ubuntu:- /etc /usr
-R表示递归,-m表示修改,u:ubuntu:-表示用户(user)ubuntu对/etc 和 /usr 没有任何权限。可以根据需要添加r、w、x及其组合。

取消用户的访问限制
setfacl -R -x u:ubuntu /etc /usr

### 用户访问其他用户目录权限设置 在 Linux 系统中,用户默认无法直接访问其他用户的家目录(如 `/home/user1`),因为这些目录的权限通常设置为仅允许所有者访问。若需允许特定用户或组访问某个目录,可以通过修改目录权限、更改文件属主和属组等方式实现。 #### 1. 修改目录权限以允许特定用户访问 可以通过 `chmod` 命令调整目标目录访问权限。例如: ```bash sudo chmod 750 /home/targetuser ``` 此命令将 `/home/targetuser` 的权限设为所有者可读写执行,同组用户可读和执行,其他用户无权限。这样可以确保只有所有者和同组用户能够访问该目录 [^3]。 #### 2. 更改目录属主与属组以实现共享访问 如果希望多个用户共享访问一个目录,可以将该目录的属组更改为一个共同的组,并设置适当的权限: ```bash sudo chown root:sharedgroup /path/to/sharedir sudo chmod 770 /path/to/sharedir ``` 上述操作后,所有属于 `sharedgroup` 组的用户都可以对该目录进行读写执行操作 [^1]。 #### 3. 使用 ACL 设置细粒度访问控制 对于需要更精细权限控制的场景,Linux 提供了访问控制列表(ACL)功能。使用 `setfacl` 命令可以为特定用户或组添加额外的权限: ```bash sudo setfacl -m u:username:r-x /path/to/directory ``` 这条命令允许用户 `username` 对指定目录拥有读和执行权限,而不会影响其他用户的权限设置 [^3]。 #### 4. 配置 SFTP 访问限制 若需为用户提供安全的文件传输服务,同时限制其只能访问特定目录,可在 SSH 配置中启用 `ChrootDirectory` 指令。例如,在 `/etc/ssh/sshd_config` 中添加如下配置: ```bash Match User sftpuser ChrootDirectory /home/sftpuser ForceCommand internal-sftp AllowTcpForwarding no ``` 然后重启 SSH 服务使配置生效。此外,还需确保目标目录及其父目录的权限设置正确,避免因权限问题导致 chroot 失败: ```bash sudo chown root:root /home/sftpuser sudo chmod 755 /home/sftpuser sudo chown sftpuser:sftpuser /home/sftpuser/upload sudo chmod 700 /home/sftpuser/upload ``` 以上配置确保 `sftpuser` 被限制在 `/home/sftpuser` 目录下,且只能访问其下的子目录 `upload` [^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI小模型

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值