本文摘录自 Linux 命令行

权限:在 Unix 安全模型中,一个用户可能拥有文件和目录。当一个用户拥有一个文件或目录时,用户对这个文件或目录的访问权限拥有控制权。用户反过来又属于一个由一个或多个用户组成的用户组,用户成员由文件或目录的所有者授权对文件和目录的访问权限。除了对一个用户组授权外,文件所有者可能给所有的人授权,在 unix 中,可以用 id 命令来找到关于你自己的身份信息:id:uid=0(root) gid=0(root) groups=0(root) 当用户创建账户后,系统会给用户分配一个号码,叫做用户 ID 或 uid,这个 ID 映射到一个用户名。系统又会给这个用户分配一个原始的组 ID(即 gid)。一个用户可以属于多个组,对应的 groups 就会有多个元素。账户信息存在 etc/usr 和 etc/group 文件中。

1. 读取、写入和执行

对于文件和目录的访问权力是根据“读”、“写”和“执行“权限来定义的。如果看一下 ls 命令会看到如下结果:

       # 创建 foo
       $ > foo.txt
       # 查看
       $ ls -l foo.txt
       # 前十个字符是文件的属性。这十个字符的第一个是文件类型,剩下的九个字符是文件模式,代表文件的所有者,文件组所有者和其他人的读写和执行权限
       -rw-r--r--  1 chappyzhao  staff  0  5 21 22:28 foo.txt
        
属性文件(都是对文件操作)目录(目录及目录内所有文件操作)
r允许打开并阅读文件内容允许列出目录中的内容,前提是目录必须设置了可执行操作(x)。
w允许写入文件内容或截断文件,但是不允许对文件重命名或删除,这两个属性是由目录的属性决定的。允许在目录下新建、删除或重命名文件,前提是目录必须设置了可执行操作(x)。
x允许将文件作为程序来执行,使用脚本语言编写的程序必须设置为可读才能执行。允许进入目录,如:cd directory

一定要看好对应的是对文件还是目录操作

2. chmod - 更改文件模式

更改文件或目录的模式权限。注意只有文件的所有者或超级用户才能更改文件或目录模式。chmod 命令支持两种不同的方法来改变文件模式:八进制数字表示法和符号表示法

  1. 通过八进制表示法,我们使用八进制数字来设置所期望的权限模式。因为每个八进制数字代表了 3 个二进制数字,这种对应关系,正好映射到用来存储文件模式所使用的方案上。下面表格一目了然:
八进制二进制文件模式
0000
1001–x
2010-w-
3011-wx
4100r–
5101r-x
6110rw-
7111rwx
ChappydeMacBook-Pro:2020-01 chappyzhao$ chmod 600 foo.txt 
ChappydeMacBook-Pro:2020-01 chappyzhao$ ls -l foo.txt 
-rw-------  1 chappyzhao  staff  0  5 21 22:28 foo.txt
  1. 符号表示法:符号表示法分文三部分:更改会影响谁和要设置那种权限。**通过字符“u”、“g”、“o”和“a”**的组合来指定要影响的对象。
u"user"的简写,意思是文件或目录的所有者
g用户组
o“others”的简写,意思是其他的所有人
a“all” 的简写,是“u”、“g”和“o”的三者集合

符号表示法实例:

u+x为文件所有者添加可执行权限
u-x删除文件所有者的可执行权限
+x为文件所有者,用户组和其他所有人添加可执行权限。等价于 a+x。
o-rw删除其他所有人的读写权限
go=rw为用户组和其他所有人添加读写权限。如果已经有执行权限x,则移除
u+x,go=rw给文件所有者执行权限并给组和其他所有人读写权限。多种设定用逗号隔开。
  1. 更改身份:很多时候,我们很有必要使用另外一个用户的身份来执行一些操作。经常的,我们想要得到超级用户的用户特权来执行一些管理任务,但是也会切换普通用户,比如测试账号。有三种方式可以用来转换身份:1.注销登录并以其他用户身份重新登录系统;2. 使用 su 命令;3. 使用 sudo 命令。我们将跳过第一种方式,因为我们已经知道怎么做了。su 和 sudo 使用哪个,很大程度上是由你的 Linux 发行版本决定的。
    1. su - 以其他用户身份和组 ID 运行一个 shell:su -按下回车要求输入超级用户的密码。如果密码正确,出现一个新的 shell 提示符,这表明 shell 具有超级用户特权(此时提示符末尾字符由“$“ 变为“#”)。工作完成后,输入 exit,返回到之前的shell。使用su -c 'command':这种模式,会将命令传递到一个新的 shell 中。单引号引起来的命令会在新 shell 中展开,而不会在本 shell 执行。
    2. sudo - 以另一个用户身份执行命令:sudo 在很多方面都类似 su ,但是 sudo 还是有一些额外的重要功能。管理员能配置 sudo 命令,从而允许一个普通用户以不同的身份(超级管理员),通过一种非常可控的方式来执行命令。尤其是,只有一个用户可以执行一个或多个命令的时候(更体现了 sudo 命令的方便性);另一个重要差异就是 sudo 命令不需要超级用户的密码。只需自己的密码就行。想知道 sudo 命令可以授予哪些权限,使用“-l”选项,列出所有权限:sudo -l:User chappyzhao may run the following commands on bogon:(ALL) ALL
  2. chown - 更改文件所有者和用户组:chown 命令被用来更改文件或目录的所有者和用户组。使用这个命令需要超级用户权限。chown 命令的语法看起来像这样:chown [owner][:[group]] file:根据这个命令的第一个参数更改文件所有者和/或文件所有组。
  3. 练习使用权限这里
  4. 更改用户密码:passwd
Logo

更多推荐