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
。