Debian系统中的文件权限分为用户(Owner)、组(Group)、**其他用户(Others)**三类,每类包含三种基本权限:
通过ls -l命令可查看权限详情,输出示例:
-rwxr-xr-- 1 user group 1234 Jan 1 12:34 file.txt
其中:
-为普通文件,d为目录,l为符号链接);rwx),第5-7为组权限(r-x),第8-10为其他用户权限(r--);使用ls -l命令可查看文件/目录的详细权限信息:
ls -l /path/to/file_or_directory
示例输出:
drwxr-xr-x 2 user dev 4096 Jun 1 10:00 mydir
解读:d表示目录,所有者(user)有读、写、执行权限,所属组(dev)和其他用户有读、执行权限。
chmod命令用于更改文件/目录权限,支持符号模式和八进制模式两种方式。
通过u(用户)、g(组)、o(其他)、a(所有)指定用户类别,结合+(添加)、-(移除)、=(设置)操作权限:
chmod u+x script.shchmod g-w data.txtchmod o=r config.inichmod a+x backup.sh用三位八进制数表示权限,每位对应一组权限(r=4,w=2,x=1):
rwx(4+2+1=7),组和其他为r-x(4+1=5)chmod 755 script.sh(适用于可执行程序、目录)rw-(4+2=6),组和其他为r--(4)chmod 644 data.txt(适用于普通文本文件)rwx,组为r-x,其他为无权限chmod 750 confidential.txt(适用于敏感文件)使用chown命令,需root权限(或sudo):
sudo chown new_owner /path/to/file
示例:将file.txt的所有者改为admin
sudo chown admin file.txt
若需同时更改所属组,可使用:分隔:
sudo chown admin:dev file.txt
使用chgrp命令,需当前用户属于目标组或root权限:
sudo chgrp new_group /path/to/file
示例:将data.txt的所属组改为developers
sudo chgrp developers data.txt
umask用于控制新创建文件/目录的默认权限,其值为权限掩码(取反后得到实际权限)。
umask为022:
666(rw-rw-rw-)取反后为644(rw-r–r–);777(rwxrwxrwx)取反后为755(rwxr-xr-x)。umask(仅当前会话有效):umask 077(新文件权限为600,目录为700)umask:编辑~/.bashrc或/etc/profile文件,添加umask 077,然后执行source ~/.bashrc使更改生效。允许用户以文件所有者的身份执行文件,而非自身身份。常用于需要提权的命令(如passwd)。
chmod u+s file(如chmod u+s /usr/bin/passwd)x变为s(如-rwsr-xr-x)。chmod g+s dir(如chmod g+s /shared_dir)x变为s(如-rwxr-sr-x),目录权限中的组x变为s(如drwxr-sr-x)。仅适用于目录,限制用户只能删除自己创建的文件,即使有目录的写权限。常用于共享目录(如/tmp)。
chmod +t dir(如chmod +t /public_dir)x变为t(如drwxrwxrwt)。若需更细粒度的权限控制(如给特定用户/组设置权限),可使用访问控制列表(ACL)。
Debian默认未安装ACL,需通过以下命令安装:
sudo apt update && sudo apt install acl
使用getfacl命令查看文件/目录的ACL规则:
getfacl /path/to/file
使用setfacl命令添加/修改ACL规则:
alice添加读、写、执行权限setfacl -m u:alice:rwx /path/to/filedev添加读、执行权限setfacl -m g:dev:r-x /path/to/dirbob的所有权限setfacl -x u:bob /path/to/file777(所有权限)或775(写权限)等高危权限,防止文件被篡改或恶意执行;x)是访问其内容的必要条件,若目录无x权限,即使有r权限也无法列出内容;/etc/passwd、/bin目录下的文件)的权限时,需谨慎使用root权限,避免系统故障;ls -l > permissions_backup.txt),便于恢复。