用户和权限
使用 Linux 系统,不免会和用户和权限打交道,本文介绍了根权限和文件的权限属性等概念和应用。
用户与群组
使用cat /etc/passwd
查看所有用户
使用cat /etc/group
查看所有用户组
修改文档所有者或群组
1 | command [-options] [账号/群组] [文件或目录] |
Linux权限
命令1
2
3chmod | u g o a | + - = | r w x | 文档路径
或
chmod | xxx | 文档路径
u,g,o
代表三种身份owner/group/other,a代表全部身份all+-=
代表三种操作行为(添加/删除/设置权限)- rwx表示三种权限,也可以使用4/2/1或者他们的和作为权限,如5代表rx
- xxx代表三位数字,rwx分别为4/2/1,三种权限相加可以得出一种身份的权限
示例:
1 | 给test文件设置所有人拥有所有权限 |
对于文件来说x表示文件可以被系统执行的权限,对于目录来说,x代表着可以进入目录的权限,即可以cd进入
文档属性
使用命令ls -al --full-time
或者ll
可以查看文件或者目录的所有属性
共有7列,分别是:
- 第一列(共10位) 第1位表示文档类型,
d
表示目录,-表示普通文件,l表示符号链接,s表示套接字,b表示块设备(光驱、磁盘),c表示字符设备(鼠标、键盘),p表示管道。其中s/b/c/p都是伪文件。第2-10位,共9位,分表对应owner/group/others的权限,rwx分表表示readable/writable/excutable,-表示没有当前权限。 - 第二列 关联硬链接数,对于一个新建文件夹来说,有两个链接,对于一个新建文件来说,有一个链接。
- 第三列 表示文档所属owner
- 第四列 表示文档所属group
- 第五列 表示文档大小,单位字节,可以通过
ls -h
选项以最合适的单位显示 - 第六列 表示文档最后修改时间
- 第七列 表示文档名,隐藏文件以
.
开头
su 和 sudo
在 Linux 中,su
命令和sudo
命令有着十分巨大的区别:
su
命令会把你切换到根用户root
sudo
会使用根权限来执行命令
我们可以通过修改(需要 root 权限)下列文件的中的用户列表,来决定哪些用户可以执行 sudo 命令:
1 | sudo /usr/sbin/visudo |
默认情况下,这个列表如下所示:
1 | User privilege specification |
每一个 sudo 行的语法是:
1 | user machine=(effective_user) command |
通过上面的语法,我们可以授予某个用户 root 权限,其中每一个域代表:
user
是新的sudo
用户的用户名machine
是sudo
生效的主机名effective_user
代表被允许执行命令的有效用户command
代表这这个用户可以执行的一系列命令
详解 umask
每一个文件和文件夹在被创建的时候都会被赋予一定的权限属性,这些值可以通过 umask 来指定。正如 umask 的名称所显示的那样,这个值本身其实就是一个可以禁用相应权限属性的掩码。
掩码由一个有效的
4
位8
进制数值。如果把少于4
位的数值作为参数传入,高位会被用 0 补全。
默认情况下,文件夹在被创建的时候能获取的权限属性是777(rwxrwxrwx)
,文件在被创建的时候能获取的权限属性是666(rw-rw-rw-)
,二者的值都可以被被 umask 的掩码给减掉。
我们可以这样来查看当前的umask
值:
1 | umask |
我们可以通过如下方式修改umask
值:1
2
3
4
5
6
7
8 当前会话中的umask设定为077
umask 077
所有者添加所有权限,删除组或其他用户的所有权限
umask u+rwx,g-rwx,o-rwx
设置所有者具有所有权限,设置组或其他用户不具有任何权限
umask u=rwx,g=,o=
drwx------ 2 zhangrui staff 64 Jan 22 23:26 **test_dir**
-rw------- 1 zhangrui staff 0 Jan 22 23:25 test_file
注意默认情况下文件创建不具备x权限,通过umask并不能给文件创建添加x权限,umask只能用来减权限,不能用于添加权限。
如果想要系统上的所有用户或者指定用户都使用设定的umask
值的话,我们需要把相应的设定写入/etc/profile
或者指定的~/.bashrc
文件中去。