Linux |权限|Umask和Chmod

发布时间 2023-07-02 21:17:47作者: redfoxatasleep

权限掩码

文件的默认权限为0666
文件夹的默认权限为0777

掩码的作用是用户在创建文件/文件夹时从文件的默认权限中去除掩码中的权限
umask输出0002
umask -S输出u=rwx,g=rwx,o=rx
umask 0111临时生效,作用于当前shell后续新建的文件/文件夹
echo “umask 0111” >> /etc/profile在shell启动之初执行umask 0111

大多数的Linux系统的默认掩码为022
创建文件的权限为:0666-0022=0644
创建文件夹的权限为:0777-0022=0755

参考:Linux中umask深入理解 - 魏传柳


查看权限

ls -la全部文件
f89ac02d714696721b642f9cb582af0d.png
ls -ld全部文件夹
ls -lR递归
ls -ltr时间小到大
ls -lSr大小小到大


更新权限

  • chgrp [-hR] <group> <file>改变文件所属组
  • chown [-hR] <owner>[:<group>] <file>改变文件所属用户
  • chmod <mode>[,<mode>]* <file list>chmod <octal-mode> <file list>改变文件权限命令是change mode的缩写,<file list>=<file>[ <file>]*
标志 全称 2^n 备注
r read 4 2^2 可读
w write 2 2^1 可写
x execute 1 2^0 可执行(文件夹可进入)
目标 备注
u owner user
g owner group
o others
a a相当于ugo
命令 说明
chmod a+r file 给file的所有用户增加读权限
chmod a-x file 删除file的所有用户的执行权限
chmod a+rw file 给file的所有用户增加读写权限
chmod +rwx file 给file的所有用户增加读写执行权限
chmod u=rw,go= file 对file的所有者设置读写权限,清空该用户组和其他用户对file的所有权限(空格代表无权限)
chmod -R u+r,go-r docs 对目录docs和其子目录层次结构中的所有文件给用户增加读权限,而对用户组和其他用户删除读权限
chmod 664 file 对file的所有者和用户组设置读写权限, 为其其他用户设置读权限
chmod 0755 file 相当于u=rwx (4+2+1),go=rx (4+1 & 4+1)。0 没有特殊模式
chmod 4755 file 4设置了设置用户ID位,剩下的相当于 u=rwx (4+2+1),go=rx (4+1 & 4+1)
find path/ -type d -exec chmod a-x {} ; 删除可执行权限对path/以及其所有的目录(不包括文件)的所有用户,使用‘-type f'匹配文件
find path/ -type d -exec chmod a+x {} ; 允许所有用户浏览或通过目录path

参考:chmod - 维基百科,自由的百科全书


踩过的坑

  • cp复制内容包括权限
  • chmod 600 .ssh; chmod 600 .ssh/authorized_keys 配置免密登陆时,文件夹权限为700,文件权限必须为600
  • 超级管理员root uid=0 gid=0 userID groupID 命令id <user>可以查看gid、uid