Linux基本权限
Linux基本权限
权限和用户的关系
linux中访问文件/目录有三种身份:
- u:文件的拥有者
- g:文件所属的群组
- o:其他用户
对于每个身份,又有四种权限
-
r:读权限(read)
对于文件来讲就是可以读取其内容的权限,对于目录来讲无法查看目录里面的内容(ls 失败)
-
w:写权限(write)
写权限:对于文件来讲就是可以向文件写数据,对于目录来讲无法删除目录里面的文件
-
x:可执行权限(execute)
对于可执行文件来讲无法用行(可以看到颜色都变了),对于目录来讲无法进入目录(cd 失败)
-
s:特殊权限
当我们使用ls -l查看一个文件的详细属性时,能看到每个文件都有一个9位基本权限位 比如:rwxr-xr-x其中每三位字符为一组,分别表示属主权限位,属组权限位,其他用户权限位。
字母 | 含义 | 对应权限 |
---|---|---|
对应权限 r(read) | 读取权限 | 4 |
w(write) | 写入权限 | 2 |
x(execute) | 执行权限 | 1 |
-(没有权限) | 没有权限 | 0 |
权限修改命令chmod
chmod:change mode
语法:
chmod 权限 文件名
选项:
-R:递归授权
授权方式:
1.数字方式
mkdir dir //建立目录
touch dir/file //建立文件
示例1:
chmod 777 dir/ //修改dir目录权限为777
chmod u+rwx,g+rwx,o+rwx
示例2:
chmod 666 dir/file //修改file文件权限为666
chmod u+rw,g+rw,o+rw
示例3:
chmod -R 766 dir/ //修改目录及子目录权限
2.ugo方式
u:user用户权限
g:group用户组权限
o:other其他用户权限
a:all所有权限位
+:加上后面指定的权限
-:减去后面指定的权限
=:等于后面指定的权限
权限对目录的影响
目录在只有单权限的情况下,什么都做不了
-
r:能看见目录下的文件,但是看不见文件的详细属性
-
w:只写,会覆盖之前的内容
-
x:什么都做不了
文件权限需要组合使用:
- rw:可读,可写,正常的使用vim编辑,但是不能执行
- rx:可读,可执行,但是不能编辑
- rwx:可读,可写,可执行
权限对目录的影响
目录只有r权限:
具有浏览目录及子目录权限 不能进入目录
-
能使用ls命令浏览目录及子目录, 同时会提示权限拒绝
-
能使用ls -l命令浏览目录及子目录, 会带问号,同时只能看到文件名
总结: 目录只有r权限,仅仅只能浏览内的文件名,无其他操作权限
写入权限(w)
单纯的w权限没有任何意义。
如果目录只有w权限: 具有增加、删除或修改目录内文件名权限(需要x配合)
//注意: 如果目录有w权限, 可以在目录内创建文件, 删除文件(跟文件本身权限无关) 不能进入目录、不能复制目录、不能删除目录、不能移动目录
执行权限(x)
目录只有x权限
- 只能进入目录
- 其他什么都做不了
属主属组修改命令chown
chown //更改属主以及属组 -R:递归修改
chown:change owner
## 语法
chown [选项]... 属主.属组文件名
chown [选项]... 属主:属组文件名
[root@localhost opt]# chown luowei1:luowei2 abc
## 只修改属主
[root@localhost opt]# chown root abc
## 只改属组
[root@localhost opt]# chown :luowei3 abc
## 选项-R:递归修改属组和属主
[root@localhost opt]# chown -R zls:luowei1 /o
拓展:替换命令
tr
[root@localhost ~]# ll|tr 'rwx-' '4210'
## 使用命令,获取文件的数字权限
[root@localhost ~]# ll|tr 'rwx-' '4210'|sed -n '2p'|awk -F '''{print$2+$3+$4""$5+$6+$7""$8+$9+$10}'
755
[root@localhost ~]# ll|tr 'rwx-' '4210'|awk -F '' 'NR==2{print$2+$3+$4""$5+$6+$7""$8+$9+$10}'
755
[root@localhost ~]# stat zls|awk -F '[(/]' 'NR==4{print $2}'
0755
[root@localhost ~]# stat zls|awk -F '(' 'NR==4{print $2}'0755/drwxr-xr-x) Uid:
[root@localhost ~]# stat zls|awk -F '(' 'NR==4{print $2}'|awk -F '/' '{print $1}'
0755
正规取出文件数字权限的命令
[root@localhost ~]# stat -c %a zls
755
[root@localhost ~]# stat -c %a /etc/sysconfig/network-scripts/ifcfg-eth
0644
查看文件数字权限的方式
tr:按字符替换
sed:按整体替换sed i's#SELINUX=enforcing#SELINUX=disabled#g'/etc/sysconfig/selinux
vim:按整体替换 :%s#SELINUX=enforcing#SELINUX=disable
## Linux中的单引号和双引号含义:
bash:-有变量的情况下,有区别
-双引号解析变量
-单引号所见即所得
-纯字符串的情况下,没有区别
awk:-有变量的情况下,有区别
-单引号解析变量
-双引号所见即所得
awk-F'指定分隔符''{print $N}'
awk-F'[分隔符1分隔符2]''{print $N}