Zhenyuan Yang Operating Systems & ML Systems

Linux 权限

权限管理的重要性

linux系统未来可能有程序员、用户、数据库管理员、项目经理等各种角色各种级别人使用,甚至还有身份不明的人链接到linux,不良的权限管理容易导致系统崩溃、数据丢失等问题。

权限的含义

权限字母 含义 对文件 代表命令 对文件夹 代表命令
R(r) 查看文件内容和复制文件 more, cat, less, cp, head, tail 查看文件夹下的文件 ls
W(w) 编辑文件 vi 在文件夹内创建和删除文件 rm, touch
X(x) 执行 执行该文件 (执行必须具备r权限) - 切换到文件夹 cd

权限访问控制列表

Linux 文件权限列表

~/Documents$ ls -l
drwxrwxr-x 9 yangzy yangzy 4096  4月  4 00:43 blog
drwxrwxr-x 3 yangzy yangzy 4096  4月 12 23:53 Java
drwxrwxr-x 3 yangzy yangzy 4096  3月 19 20:33 Python

# 以blog为例,首字母d表示blog为文件目录
# 第一个rwx表示文件所有者对其权限
# 第二个rwx表示文件所属组对其权限
# 第三个r-x表示其他用户对其权限
# `9`表示链接数,即有多少个文件或目录链接到这个目录
# `yangzy yangzy` 第一个`yangzy`表示文件所有者,第二个`yangzy`表示文件所属组
# `4096`: 表示文件的大小,单位为字节

文件权限修改命令:chmod

  • 命令所在路径:/bin/chmod
  • 执行权限:所有用户
  • 功能描述:改变文件或目录权限
  • 语法:chmod [options] mode file
    • -r 递归地修改目录及其子目录中的文件权限。
    • -v 显示修改后的权限信息。
    • -c 仅在权限发生变化时显示修改后的权限信息。
  • mode可以使用不同的格式来表示权限,包括:
    • 数字形式:用三位数字表示权限,每位数字分别代表文件所有者、文件所属组和其他用户的权限;r是4(100),w是2(010),x是1(001),rwxrw-r–表示为764
    • 符号形式:使用符号来表示权限,包括 u(所有者)、g(所属组)、o(其他用户)和 a(所有用户),以及 +(增加权限)、-(减少权限)和 =(设置权限)
      # 修改目录testdir及其目录下文件为所有用户具有全部权限
      $ chmod -r 777 testdir 
      # 赋予文件testfile所属组写权限
      $ chmod  g+w  testfile
      # 给文件的所有者添加执行权限
      $ chmod u+x testfile
      # 给文件的其他用户删除所有权限
      $ chmod o-rwx testfile
      # 给文件的所属组设置读写权限
      $ chmod g=wx testfile
      

文件所有者修改命令:chown

$ chown [-r] new_user_name:new_group_name testfile
# 修改文件所有者
$ chown new_user_name testfile
# 修改文件所属组
$ chown :new_group_name testfile
# 修改文件所有者和所属组
$ chown new_username:new_groupname testfile

文件所有组修改命令:chgrp

$ chgrp [options] new_group_name file

一些常用的chgrp命令选项包括:

  • -R:递归地修改目录及其子目录中的文件的所属组
  • -v:显示修改后的所属组信息
  • --reference=RFILE:从参考文件RFILE复制所属组信息到指定文件

设置当前默认权限:umask

$ umask
0002
# 第一位0,表示特殊权限,固定
# 第二位0,表示用户权限,表示从预设权限(文件为7,目录为6)异或0
# 第三位0,表示用户组权限,表示从预设权限(文件为7,目录为6)异或0
# 第四位2,表示其他用户权限,表示从预设权限(文件为7,目录为6)异或2,去除掉写权限

# 设置权限
$ umask 0027
$ umask u=rwx,g=rx,o=

查看文件权限命令:ll/ls

$ ls -l testfile
$ ll testfile