Linux中的权限管理机制主要围绕用户和组的权限展开。每个文件和目录都由三种实体管理权限:所有者(user)、组(group)和其他人(others)。权限分为三种类型:读取(read)、写入(write)和执行(execute)。通过这三种权限的组合,Linux系统可以细粒度地控制文件和目录的访问和操作。使用 ls -l 命令可查看文件的权限和所有者信息。
扩展知识:
1. 用户和组
- 每个文件和目录都有一个所有者和所属组。用户有唯一用户ID(UID),组有唯一组ID(GID)
- 用户可属于多个组,但文件只能有一个所有者和一个组属性
2. 权限表示
- 符号表示:r=读,w=写,x=执行。例如 rw-r--r-- 表示:
* 所有者有读写权限
* 组用户有读权限
* 其他用户有读权限
- 八进制表示:r=4,w=2,x=1,三者相加。例如:
* rw-r--r-- = 644
* rwxr-xr-x = 755
3. 修改权限
- 使用 chmod 命令:
chmod 755 filename # 设置权限为rwxr-xr-x
chmod u+x script.sh # 给所有者添加执行权限
4. 修改所有者和组
- 使用 chown 修改所有者和组:
chown user:group filename
- 使用 chgrp 修改组:
chgrp developers file.txt
5. 特殊权限
- SUID(Set User ID):
执行文件时以文件所有者身份运行(如 /usr/bin/passwd)
- SGID(Set Group ID):
执行文件时以文件所属组身份运行
目录设置SGID后,新建文件继承目录的组属性
- Sticky Bit:
设置后仅文件所有者可删除/移动该文件(如 /tmp 目录)
设置方法:chmod +t directory
6. 实战技巧
- 批量修改权限:
find /path -name "*.sh" -exec chmod +x {} \;
- 批量修改所有者:
find /var/www -type d -exec chown www-data:www-data {} \;
- 查看特殊权限:
ls -l 会显示特殊权限位(如 rwsr-xr-x 中的s表示SUID)