温馨提示×

ubuntu如何管理多个用户文件

小樊
54
2025-10-04 07:44:34
栏目: 智能运维

Ubuntu管理多个用户文件的核心方法

1. 基础权限模型:用户、组、其他人的权限控制

Ubuntu采用**用户(u)、组(g)、其他人(o)的三级权限体系,每个文件/目录有读(r)、写(w)、执行(x)**三种权限。通过ls -l命令可查看权限(如drwxr-xr--表示目录所有者有读写执行权限,所属组有读执行权限,其他人只有读权限)。

  • 修改权限
    • 符号模式:chmod u+x script.sh(给所有者添加执行权限)、chmod g-w document.txt(移除组写权限);
    • 数字模式:chmod 755 script.sh(所有者7=rwx,组5=rx,其他人5=rx)、chmod 640 document.txt(所有者6=rw,组4=r,其他人0=无)。
  • 修改所有者和所属组
    • chown bob:developers script.sh(同时修改所有者和组,需sudo);
    • chgrp developers project_folder(仅修改所属组,需sudo)。
  • 递归操作:对目录及其子项生效,如chmod -R 755 /var/www/html/chown -R alice:developers project_folder/

2. 用户与组管理:精细化权限分配

通过创建用户和组,将用户纳入不同组,实现分组权限控制

  • 创建用户sudo adduser username(自动创建主目录并提示设置密码);
  • 创建组sudo groupadd groupname(如developers组);
  • 添加用户到组sudo usermod -aG groupname username-aG表示追加到组,避免移除原有组);
  • 删除用户/组sudo deluser username(删除用户,保留主目录)、sudo userdel -r username(删除用户及主目录)、sudo groupdel groupname(删除组)。

3. 高级权限:ACL(访问控制列表)

传统权限无法满足单个用户/组的精细化控制时,可使用ACL。

  • 启用ACL
    • 对磁盘分区启用:sudo tune2fs -o acl /dev/sdXn/dev/sdXn为分区,如/dev/sda1);
    • 重新挂载:sudo mount -o remount /mountpoint/mountpoint为挂载点,如/)。
  • 设置ACL
    • 给用户添加权限:setfacl -m u:username:rwx /path/to/file(给username添加读写执行权限);
    • 给组添加权限:setfacl -m g:groupname:rwx /path/to/file(给groupname添加读写执行权限);
    • 查看ACL:getfacl /path/to/file
    • 删除ACL:setfacl -x u:username /path/to/file(删除指定用户的ACL)。

4. 共享文件管理:Samba/NFS

若需跨设备或跨用户共享文件,可使用Samba(Windows兼容)或NFS(Linux/Unix兼容)。

  • Samba共享
    • 安装:sudo apt install samba
    • 配置:编辑/etc/samba/smb.conf,添加共享目录(如[shared] path=/path/to/shared available=yes valid users=user1,user2 read only=no);
    • 添加Samba用户:sudo smbpasswd -a username(设置Samba密码);
    • 重启服务:sudo systemctl restart smbd
  • NFS共享
    • 安装:sudo apt install nfs-kernel-server
    • 配置:编辑/etc/exports,添加共享目录(如/path/to/shared username@client_ip(rw,sync,no_subtree_check));
    • 重启服务:sudo systemctl restart nfs-kernel-server

5. SFTP隔离:限制用户访问自身目录

若需通过SFTP让多用户上传/下载文件,并隔离其访问范围(只能访问自身主目录),可配置SSH。

  • 创建用户组sudo addgroup sftp_users
  • 添加用户到组sudo usermod -aG sftp_users username
  • 配置SSH:编辑/etc/ssh/sshd_config,添加:
    Match Group sftp_users
      ChrootDirectory %h
      ForceCommand internal-sftp
      AllowTcpForwarding no
      X11Forwarding no
    
  • 设置目录权限sudo mkdir /home/usernamesudo chown root:root /home/usernamesudo chmod 755 /home/usernameChrootDirectory需为root所有,权限为755);
  • 重启SSHsudo systemctl restart ssh

0