Linux - 用户与权限
使用 Linux 系统,不免会和用户和权限打交道,本文介绍了根权限和文件的权限属性等概念和应用。
su 和 sudo
在 Linux 中,su
命令和 sudo
命令有着十分巨大的区别:
su
命令会把你切换到根用户root
sudo
会使用根权限来执行命令
简单的说来,sudo
其实就是代表其他授权的用户来执行 root 命令的二进制 setuid。
我们可以通过修改(需要 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
的掩码给减掉。
掩码过程相当于禁止掉相应的权限位,如果相应位上本身就不具备权限,那么掩码就不会起作用。比如说,如果使用 值为 111
的 umask
来创建一个文件,并不会影响文件的最终权限:
1 | rw-rw-rw- |
但是,如果 umask
的值是 333 的话,情况就不一样了,w
位和 x
位的权限都会被禁止掉:
1 | rw-rw-rw- |
我们可以这样来查看当前的 umask
值:
1 | $ umask |
如果我们要把当前会话中的 umask
设定为 077
的话,可以执行:
1 | $ umask 077 |
如果想要系统上的所有用户或者指定用户都使用设定的 umask
值的话,我们需要把相应的设定写入 /etc/profile
或者指定的 ~/.bashrc
文件中去。
原文作者: Kun Chen
原文链接: http://kchen.cc/2017/02/21/linux-users-and-permissions/
许可协议: 知识共享署名-非商业性使用 4.0 国际许可协议