linux+权限+777+775,Linux权限
Linux中的主要权限有: R(读), W(写), X(执行)两大文件类型目录和文件, 分别对应上面的三种权限,目录:R: 可以用ls -l命令查看目录自己的元数据W:可以在此目录中创建或者删除文件, 前提是一定要有执行权限X: 可以cd到目录中,执行相关操作文件:R: 可以用ls -l命令查看文件的元数据W: 可以修改文件X: 可以执行文件(启动成进程,并且提给进程), 默认文件没有执行权限,
Linux中的主要权限有: R(读), W(写), X(执行)
两大文件类型目录和文件, 分别对应上面的三种权限,
目录:
R: 可以用ls -l命令查看目录自己的元数据
W:可以在此目录中创建或者删除文件, 前提是一定要有执行权限
X: 可以cd到目录中,执行相关操作
文件:
R: 可以用ls -l命令查看文件的元数据
W: 可以修改文件
X: 可以执行文件(启动成进程,并且提给进程), 默认文件没有执行权限, 为了避免权限过高的人误运行脚本文件.
下面说下文件或目录权限修改的命令的几种格式
1.八进制权限修改模式
chmod [OPTION]... OCTAL-MODE FILE...
用八进制码来表示权限
每个文件都有属主, 属组, 和其他关系, 且分别对应RWX, 所有当我们ls -l查看某个文件时可以看到所有的权限
下图, a的属主,属组为root, 分别对应读写和只读, 其他对应的权限是只读
[root@CentOS02 ~]# ls -l a
-rw-r--r-- 1 root root 22 Sep 11 01:33 a
所以这里一共有这八种组合
权限表示
对应的八进制格式
---
0
--x
1
-w-
2
-wx
3
r--
4
r-x
5
rw-
6
rwx
7
例
[root@CentOS02 ~]# chmod 774 a
[root@CentOS02 ~]# ls -l a
-rwxrwxr-- 1 root root 22 Sep 11 01:33 a
2. 直接指定使用者的权限
chmod [OPTION]... MODE[,MODE]... FILE...
前提:只有文件的属主或root才能修改权限
直接用u或者g或者o后边=r,w,x来指定权限, 什么都不加等于---
可以多选项指定uo=r
[root@CentOS02 ~]# chmod u= a
[root@CentOS02 ~]# ls -l a
----rwxr-- 1 root root 22 Sep 11 01:33 a
[root@CentOS02 ~]# chmod g=rw a
[root@CentOS02 ~]# ls -l a
----rw-r-- 1 root root 22 Sep 11 01:33 a
[root@CentOS02 ~]# chmod uo=w a
[root@CentOS02 ~]# ls -l a
--w--wx-w- 1 root root 22 Sep 11 01:33 a
或者直接用+rwx 或-rwx来设定说有三个的权限, 注意:如果有w在,只修改属主的
也可以分别只配置三个选项中的任意 go+x
[root@CentOS02 ~]# chmod -rwx a
chmod: a: new permissions are ----w----, not ---------
[root@CentOS02 ~]# ls -l a
-----w---- 1 root root 22 Sep 11 01:33 a
[root@CentOS02 ~]# chmod go+x a
[root@CentOS02 ~]# ls -l a
-----wx--x 1 root root 22 Sep 11 01:33 a
3. 参考文件权限
chmod [OPTION]... --reference=RFILE FILE...
[root@CentOS02 ~]# ls -l {a,b}
--w--wx-w- 1 root root 22 Sep 11 01:33 a
-rw-r--r-- 1 root root 0 Sep 11 02:21 b
[root@CentOS02 ~]# chmod --reference a b
[root@CentOS02 ~]# ls -l {a,b}
--w--wx-w- 1 root root 22 Sep 11 01:33 a
--w--wx-w- 1 root root 0 Sep 11 02:21 b
4, 修改目录和目录里所有文件的属性
加选项-R
[root@CentOS02 ~]# ls -ld test/
drwxr-xr-x 2 root root 4096 Sep 11 02:28 test/
[root@CentOS02 ~]# ls -l test/
total 0
-rw-r--r-- 1 root root 0 Sep 11 02:28 a
-rw-r--r-- 1 root root 0 Sep 11 02:28 b
[root@CentOS02 ~]# chmod -R 777 test/
[root@CentOS02 ~]# ls -l test/
total 0
-rwxrwxrwx 1 root root 0 Sep 11 02:28 a
-rwxrwxrwx 1 root root 0 Sep 11 02:28 b
[root@CentOS02 ~]# ls -ld test/
drwxrwxrwx 2 root root 4096 Sep 11 02:28 test/
[root@CentOS02 ~]#
修改属主属组命令
chown [OPTION]... [OWNER][:[GROUP]] FILE...
前提: 只有root才能修改属主属组.
1. 引号两边加要修改的属主属组, joice:jerry
2. 如果只修改属主就不加引号 joice
3 .如果属主属组都修改成相同的 joice: 或者joice:joice
4. 只修改属组 :joice
[root@CentOS02 ~]# ls -l a
--w--wx-w- 1 root root 22 Sep 11 01:33 a
[root@CentOS02 ~]# chown joice:jerry a
[root@CentOS02 ~]# ls -l a
--w--wx-w- 1 joice jerry 22 Sep 11 01:33 a
chown [OPTION]... --reference=RFILE FILE... 上chmod一样, 也可以用引用修改
[root@CentOS02 ~]# ls -l a
--w--wx-w- 1 joice jerry 22 Sep 11 01:33 a
[root@CentOS02 ~]# ls -l {a,b}
--w--wx-w- 1 joice jerry 22 Sep 11 01:33 a
--w--wx-w- 1 root root 0 Sep 11 02:21 b
[root@CentOS02 ~]# chown --reference a b
[root@CentOS02 ~]# ls -l {a,b}
--w--wx-w- 1 joice jerry 22 Sep 11 01:33 a
--w--wx-w- 1 joice jerry 0 Sep 11 02:21 b
-R修改目录和文件的属主属组
[root@CentOS02 ~]# chown -R :jerry test/
[root@CentOS02 ~]# ls -l test/
total 0
-rwxrwxrwx 1 root jerry 0 Sep 11 02:28 a
-rwxrwxrwx 1 root jerry 0 Sep 11 02:28 b
[root@CentOS02 ~]# ls -ld test/
drwxrwxrwx 2 root jerry 4096 Sep 11 02:28 test/21
只修改属组命令
chgrp [OPTION]... GROUP FILE... 和上面命令类似, 但只修改属组
[root@CentOS02 test]# chgrp joice a
[root@CentOS02 test]# ls -l a
-rwxrwxrwx 1 root joice 0 Sep 11 02:28 a
chgrp [OPTION]... --reference=RFILE FILE... 和上面命令类似, 但只引用属组
[root@CentOS02 test]# ll
total 0
-rwxrwxrwx 1 tom tom 0 Sep 11 02:28 a
-rwxrwxrwx 1 tom jerry 0 Sep 11 02:28 b
[root@CentOS02 test]# chgrp --reference a b
[root@CentOS02 test]# ls -l
total 0
-rwxrwxrwx 1 tom tom 0 Sep 11 02:28 a
-rwxrwxrwx 1 tom tom 0 Sep 11 02:28 b
文件的特殊权
先来说说, 命令也是文件的一种, 它们的权限一般是775, 也就是说对所有人都有执行权限
[root@centos test]# ll `which grep`
-rwxr-xr-x. 1 root root 111680 Jun 4 2014 /bin/grep
[root@centos test]# ll `which find`
-rwxr-xr-x. 1 root root 238976 Nov 11 2010 /bin/find
如果运行cat命令也就是用户通过cat发起一个进程, 这个进程的权限就是用户本身, 如果用cat打开一个文件,也就是以用户的权限来打开文件. 而文件时候允许执行, 就需要一次查看文件属主属组和其他的属性有无匹配.
权限匹配模型的顺序
进程的发起者与被访问文件的属主有为相同
进程的发起者与在不在被访问文件的属组里
也other的访问权限
特殊权限1: suid:Set UID
前提: 文件为可执行文件或脚本
功效:任何用户运行此文件文一个进程时, 进程的权限不是用本身, 而是命令文件的属主
查询: 属主的执行位为s, 如果本身有执行权限位小写s, 没有为大写S
设置: chmod u+s 文件
[root@centos test]# ll `which passwd`
-rwsr-xr-x. 1 root root 30768 Feb 22 2012 /usr/bin/passwd
[root@centos test]# chmod u+s a
[root@centos test]# ll
total 48
-r-Sr--r--. 1 root root 23617 Sep 16 23:35 a
-rw-r--r--. 1 user1 root 23057 Sep 16 23:36 b
-rw-rw-r--. 1 502 root 0 Sep 16 23:14 c
[root@centos test]#
特殊权限2: sgid: Set GID
前提:作用于目录
功效: 在此文件夹内创建的文件都属于目录的组, 也就是说所有用户可以修改对方的文件, 如果umask002
查询: 属组的执行位为s, 如果本身有执行权限位小写s, 没有为大写S
设置: chmod g+s 目录
[root@centos test]# chmod g+s test01/
[root@centos test]# ll -d test01/
drwxr-sr-x. 2 root root 4096 Sep 17 14:11 test01/
[root@centos test]# chgrp user1 test01/
[root@centos test]# ll -d test01/
drwxr-sr-x. 2 root user1 4096 Sep 17 14:11 test01/
#修改sgid, 并制定user1为属组
[root@centos test]# touch test01/a
[root@centos test]# ll test01/
total 0
-rw-r--r--. 1 root user1 0 Sep 17 14:15 a
特殊权限3: sticky
前提: 作用于目录
功效: 在此文件的
[user2@centos test]$ id user1
uid=500(user1) gid=500(user1) groups=500(user1)
[user2@centos test]$ id user2
uid=501(user2) gid=501(user2) groups=501(user2),500(user1)
[root@centos test]# chmod o+t test01/
[root@centos test]# ll -d test01/
drwxrwsr-t. 3 root user1 4096 Sep 17 15:13 test01/
#修改文件t权限
[user2@centos test]$ touch test01/d
[user2@centos test]$ ll test01/
total 4
-rw-r--r--. 1 root user1 0 Sep 17 14:15 a
-rw-r--r--. 1 root user1 0 Sep 17 14:17 b
-rw-r--r--. 1 root user1 0 Sep 17 14:51 c
-rw-rw-r--. 1 user2 user1 0 Sep 17 15:13 d
drwxr-sr-x. 2 root user1 4096 Sep 17 14:16 folder01
[user2@centos test]$ rm test01/a
rm: remove write-protected regular empty file `test01/a'? y
rm: cannot remove `test01/a': Operation not permitted
#目录对组user1有写权限, 而user1, 和user2 都属于user1的组,user2不能删除user1创建的文件
特殊权限的八进制权限位
suid
sgid
sticky
0
0
0
0
0
0
1
1
0
1
0
2
0
1
1
3
1
0
0
4
1
0
1
5
1
1
0
6
1
1
1
7
在一般的3为权限前多出一位表示特殊权限
chmond 2700 /tmp/test/a , a文件的guid设置为有效和 chmond g+s /etc/test/a相同.
补充: 一般文件不能随便修改属主属组, 我们又不能随便给o写权限, 所有就引入了facl的概念
FACL: File Access Control List
前提: 必须是root用户执行
例子
[root@centos test]# setfacl -m u:user2:rw b
[root@centos test]# getfacl b
# file: b
# owner: user1
# group: user1
user::rwx
user:user2:rw-
group::rwx
mask::rwx
other::rwx
#给user2读写权限, 也可以设置组权限
[root@centos test]# setfacl -m g:user2:rw b
[root@centos test]# getfacl b
# file: b
# owner: user1
# group: user1
user::rwx
user:user2:rw-
group::rwx
group:user2:rw-
mask::rwx
other::rwx
#或删除user2的权限
[root@centos test]# setfacl -x u:user2 b
[root@centos test]# getfacl b
# file: b
# owner: user1
# group: user1
user::rwx
group::rwx
group:user2:rw-
mask::rwx
other::rwx
-R 选项和chmond相同可以,改变目录里的所有文件.
facl和普通权限的访问模型
用户访问这个文件时候
1. 先检查原有属主. 2. facl的属主. 3. 原有的属组. 4. facl的属组. 5原有的其他
更多推荐
所有评论(0)