Linux用户身份与文件权限
用户的身份与能力
root
为超级用户,但是真正让他成为超级用户的是UID
UID:每个用户都有对应的UID值
类型 | UID | 解释 |
---|---|---|
超级用户 | 0 | 即root用户为0 |
系统用户 | 1-999 | 系统服务用户,被限制登录 |
普通用户 | 1000- | 即普通用户 |
帐户名称与UID保存在/etc/passwd
文件中,而帐户密码则保存在/etc/shadow
文件中
GID:可以将多个用户加入某个组,方便管理
每个用户在创建的时候会创建一默认组(UID与GID相同,也叫基本组),后加入的叫扩展组。
用户组名称与GID保存在/etc/group
文件中。
文件的普通权限:
文件或者目录的权限-来分别规定 所有者,所有组,其他人 的 读,写,执行 权限
读(read),写(write),执行(execute),简写为(r,w,x),或者数字(4,2,1)
文件属性:
符号 | 意义 |
---|---|
- | 普通文件 |
d | 目录文件 |
l | 链接文件 |
b | 块设备文件 |
c | 字符设备文件 |
p | 管道文件 |
例如:
[root@VM_221_21_centos ~]# ls -ll
total 28
-rw-r--r-- 1 root root 0 Dec 1 16:21 1.c
-rw-r--r-- 1 root root 0 Dec 1 16:21 2.c
-rw-r--r-- 1 root root 0 Dec 1 16:21 3.c
-rwxr-xr-x 1 root root 34 Dec 1 17:27 dirname.sh
-rwxr-xr-x 1 root root 230 Dec 1 17:45 fibonacci.sh
-rw-r--r-- 1 root root 0 Dec 1 16:17 fortest
-rw-r--r-- 1 root root 242 Dec 18 15:57 helloworld.pyc
drwxr-xr-x 5 root root 4096 Dec 22 15:34 leanote
drwxr-xr-x 4 root root 4096 Dec 19 09:30 python_learn
-rwxr-xr-x 1 root root 334 Dec 1 18:23 sumOfArr.sh
drwxr-xr-x 2 root root 4096 Dec 1 19:52 testfor
-rw-r–r–:
表示它是一个普通文件,
所有者权限为rw-
即可读可写不可执行,
所有组权限为r--
即可读不可写不可执行,
其他人的权限为r--
即可读不可写不可执行。
文件的特殊权限
SUID :让执行者临时拥有属主的权限(仅对拥有执行权限的二进制程序有效)
比如:所有用户都可以执行用于修改密码的passwd
,但是用户密码保存在/etc/shadow
,默认权限是000
,即除了超级用户之外所有用户都没有查看或者编辑改文件权限,那passwd
命令是怎么做到的呢?
所以对passwd
命令加上了 SUID
权限位,就可让普通用户临时获得所有者的权限,即用root
用户的权限将更改的密码写入到shadow
文件中去。
SGID :
1. 让执行者临时拥有属组的权限(对用于执行权限的二进制程序设置)
2. 在该目录中创建的文件自动继承此目录的用户组
chmod
修改文件或者目录的权限
chmod [参数] 权限 文件/目录
chown
修改文件或者目录的所属主和所属组
chown [参数] 所属主:所属组 文件/目录
ps:对于文件不加参数,遇到目录加大写-R(递归,修改目录内所有文件的属性)。
GID例子:
[root@VM_221_21_centos ~]# vim test.sh
[root@VM_221_21_centos ~]# ls -ll
total 4
drwxr-xr-x 7 root root 4096 Jan 4 19:55 blog
-rw-r--r-- 1 root root 0 Jan 6 09:55 test.sh
[root@VM_221_21_centos ~]# chmod -Rf 777 test.sh
[root@VM_221_21_centos ~]# chmod -Rf g+s 777 test.sh
[root@VM_221_21_centos ~]# ls -ll
total 4
drwxr-xr-x 7 root root 4096 Jan 4 19:55 blog
-rwxrwsrwx 1 root root 0 Jan 6 09:55 test.sh
文件访问控制链表
即对某个特定的用户进行单独的权限设置,就要用到文件的访问控制链表了ACL。
setfacl
用于增加或者修改ACL规则,格式为:setfacl [参数] 文件
参数 | 作用 |
---|---|
-R | 递归(对目录而言) |
-m | 设置文件的acl规则 |
-b | 删除acl规则 |
getfacl
用于显示文件的ACL规则,格式为:getfacl 文件
例:
Link用户切换到root目录是不允许的,在赋予权限之后,就可以访问了。
[Link@VM_221_21_centos ~]$ cd /root
bash: cd: /root: Permission denied
[Link@VM_221_21_centos ~]$ su
Password:
[root@VM_221_21_centos ~]# setfacl -Rm u:Link:rwx /root
[root@VM_221_21_centos ~]# su Link
[Link@VM_221_21_centos root]$ cd /root
[Link@VM_221_21_centos root]$