chown [user] [file/directory]
change owner 将后面的目标文件或者目录的所有者替换成[user]
chgrp [group] [file/directory]
change group 将目标文件或者目录的所有组替换成[group]
chmod +/-[rwx] [file/directory]
将目标文件或者目录的所有者(与当前登陆用户一致时)增加/去掉可读(r)可写(w)可执行(x)权限,更改非本用户文件时需要sudo
chmod 777 [file/directory]
直接更改目标文件的所有者(第一个数字所对应),所有组用户(第二个数字对应),其他组用户(第三个数字对应)的rwx权限
r=4,w=2,x=1, 各种组合相加出现8种状态(0-7)
三种命令都支持 -R 递归处理目录下的所有文件/目录
chmod u+s [file/dir]
s(强制位)权限对应的位置是x,表示当某一个用户调用这个可执行文件时暂时拥有该文件的拥有者权限,一般u+s针对可执行文件(命令)
例子(用vim编辑/etc/passwd)
which vim会显示vim命令的文件所在的位置是/usr/bin/vim
注意这个文件的权限是-rwxr-xr-x. 1 root root 2289600 Jan 30 2014 /usr/bin/vim
然后用一个普通用户尝试vim /etc/passwd更改一些内容后保存退出
报错之后用wq!推出之后文件无法被修改
使用chmod u+s /usr/bin/vim命令之后
vim文件的权限被更改成-rwsr-xr-x. 1 root root 2289600 Jan 30 2014 /usr/bin/vim
这时再用普通用户修改vim /etc/passwd
是可以wq!的,因为普通用户在调用vim命令的一瞬间获得了vim所属用户root的权限
注意s的用处不仅仅是提升权限,同样可以降低权限(自己写得shell脚本)
chmod g+s [dir]
给一个目录的所属组添加一个s的权限的作用是不管是哪个用户在这个目录下创建文件或者文件夹,文件或者文件夹的组都不属于创建用户所在的主组,而是属于有g+s的目录的主组
例子
root身份下新建一个目录:mkdir /a1
添加一个新的组:groupadd aaa
创建一个主组为aaa的用户bbb:useradd -g aaa bbb
将目录/a1的所有者和所有组改为bbb aaa:chown bbb:aaa /a1
查看一下/a1的状态:ll -d /a1
在/a1中创建一个文件aa1:touch /a1/aa1
ll查看aa1的所属用户和组都是root
给/a1目录的所属组权限加上s:chmod g+s /a1
再查看一下/a1的状态:ll -d /a1
此时用root用户在/a1下创建的文件夹和文件的组都会变成aaa而不是遵循系统的规定
chmod o+t [dir]
一般用于一个公共的目录o+rwx,设置完之后公共目录下的各用户自己创建的文件其他人无法管理,只有用户自己可以管理.(root除外)
同时这三种权限模式也可以用数字表示,加在rws前面一位即可
u+s=4,g+s=2,o+t=1
除了这三种还有多种权限模式
1是o+t 2是g+s 3是o+t和g+s 4是u+s 5是u+s和o+t 6是u+s和g+s 7是同时拥有三种状态
例子
一个文件的权限是-rwsr-xr-x
chmod 4755 file
一个文件夹的权限是drwxr-srwt
chmod 3757 dir