Ubuntu管理多个用户文件的核心方法
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/。通过创建用户和组,将用户纳入不同组,实现分组权限控制。
sudo adduser username(自动创建主目录并提示设置密码);sudo groupadd groupname(如developers组);sudo usermod -aG groupname username(-aG表示追加到组,避免移除原有组);sudo deluser username(删除用户,保留主目录)、sudo userdel -r username(删除用户及主目录)、sudo groupdel groupname(删除组)。传统权限无法满足单个用户/组的精细化控制时,可使用ACL。
sudo tune2fs -o acl /dev/sdXn(/dev/sdXn为分区,如/dev/sda1);sudo mount -o remount /mountpoint(/mountpoint为挂载点,如/)。setfacl -m u:username:rwx /path/to/file(给username添加读写执行权限);setfacl -m g:groupname:rwx /path/to/file(给groupname添加读写执行权限);getfacl /path/to/file;setfacl -x u:username /path/to/file(删除指定用户的ACL)。若需跨设备或跨用户共享文件,可使用Samba(Windows兼容)或NFS(Linux/Unix兼容)。
sudo apt install samba;/etc/samba/smb.conf,添加共享目录(如[shared] path=/path/to/shared available=yes valid users=user1,user2 read only=no);sudo smbpasswd -a username(设置Samba密码);sudo systemctl restart smbd。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。若需通过SFTP让多用户上传/下载文件,并隔离其访问范围(只能访问自身主目录),可配置SSH。
sudo addgroup sftp_users;sudo usermod -aG sftp_users username;/etc/ssh/sshd_config,添加:Match Group sftp_users
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
sudo mkdir /home/username、sudo chown root:root /home/username、sudo chmod 755 /home/username(ChrootDirectory需为root所有,权限为755);sudo systemctl restart ssh。