9. 权限
类 Unix 系统不同于其他系统,它不仅是多任务的,而且是多用户的。 这意味着同一台电脑可以由多人同时操作。即使你的电脑只有一个鼠标和一个键盘,也可以同时由多个用户使用。例如,如果你的电脑联了网,那么其他用户就可以通过 ssh 来登录并操作电脑。 这也就需要设计好用户之间数据的隔离。 本课程介绍以下命令:
chmod
:修改文件访问权限su
:临时成为超级用户sudo
:临时成为超级用户chown
:修改文件所有者chgrp
:修改文件所属组
文件权限
在 Linux 系统中,每个文件和目录的权限都分为所有者权限、所属组权限、其他用户权限。权限分为读、写、执行权限。
查看文件的权限设置使用 ls
命令。
$ ls -l /bin/bash
permissions diagram
chmod
chmod
命令用于改变文件或目录的权限。你需要在参数中指定你想要设置的权限和设置的文件。有两种方式指定权限。下面介绍其中的一种:八进制 方法。
通过位来管理权限设置是很容易的:
rwx rwx rwx = 111 111 111
rw- rw- rw- = 110 110 110
rwx --- --- = 111 000 000
rwx = 111 in binary = 7
rw- = 110 in binary = 6
r-x = 101 in binary = 5
r-- = 100 in binary = 4
例如,如果你想设置 some_file 文件为私有的,所有者有读写权限,其他用户不可见:
$ chmod 600 some_file
以下是一些常用设置值的表。数字 7 用于可执行程序。
值 | 意义 |
---|---|
777 | (rwxrwxrwx )没有权限限制。任何人可以对文件做任何事。通常来说这样设置是不可取的 |
755 | (rwxr-xr-x )文件所有者可读写执行。其他用户可读可执行。通常用于所有用户可使用的程序 |
700 | (rwx------ )文件所有者有所有权限。其他用户无权限。通常用于所有者的私有可执行程序 |
666 | (rw-rw-rw- )所有用户可读可写 |
644 | (rw-r--r-- )所有者可读可写,其他用户只可读。通常用于只有所有者可修改,其他用户只可查看的情况 |
600 | (rw------- )所有者可读可写。其他用户无权限。通常用于所有者的私有文件 |
目录权限
chmod
也可用于控制目录的权限。也可以使用八进制来设置权限,但 r
、w
、x
的属性和意义不一样:
r
:允许列出目录的内容,x
属性需为已设置w
:允许创建、删除或重命名目录下的文件,x
属性需为已设置x
:允许进入目录(也就是cd dir
)
以下是一些常用的设置:
值 | 意义 |
---|---|
777 | (rwxrwxrwx )没有权限限制。任何人都可以在目录下查看文件,创建文件及删除文件。通常不是一个好的设置 |
755 | (rwxr-xr-x )目录所有者有所有权限。所有其他用户可以在目录下查看,但是不能创建和删除。通常用于和其他用户共享目录 |
700 | (rwx------ )目录所有者有所有权限。其他用户无权限。此设置通常用于用户私有目录 |
成为临时超级用户
我们经常需要执行重要的系统管理员任务,但是你不应该用超级用户登录。大部分发行版都有一个程序来给你临时的超级用户权限。这个程序叫做 su
(substitute user,替代用户),可以用于上述场景。只需要在命令行输入 su
,并按照提示输入超级用户的密码即可。
执行 su
命令后,你就拥有一个超级用户的新的 shell 对话了。输入 exit
退出超级用户会话并返回上一会话。
在 Unbuntu 等发行版中,可以使用 sudo
命令来代替。这样多个用户可以赋予超级用户权限以满足最基本的需要。在命令行输入 sudo
命令后,按照提示输入普通用户而不是超级用户的密码即可。
$ sudo some_command
改变文件所有者
你可以通过 chown
命令来改变文件的所有者。例如,我想将 some_file 的所有者由 me 改成 you:
$ su
$ chown you some_file
$ exit
chown
对目录也是同样的方式。
改变所属组
使用 chgrp
命令可以改变文件或目录的所有组。
$ chgrp new_group some_file
要执行 chgrp
命令,我们必须是文件或目录的所有者。