查看权限
用ls -l file
来查看某个文件的权限,结果的前10个字符代表权限信息。这十位字符,可分为四组,第一个字符一组,剩余九个每三个一组。
第一个字符可是是d
或者-
:
d
: 文件夹-
: 文件
比如drwxrwxr-x 6 yalei yalei 4096 Jun 18 08:50 ××××××
,表示这是一个文件夹,剩下三组的意思是:
-
rwx: 当前用户的权限:读,写,执行。r,w和x分别对应read,write和execute
-
rwx: 当前用户所属的用户组权限:读,写,执行
-
r-x: 其他用户的权限:读,执行
类似的,下边的文件,当前用户有读写权限;而该用户所属的用户组有读的权限,不能写入;其他用户组的用户没有任何权限。
-rw-r----- 1 yalei yalei 3052535 Jun 23 15:54 ××××××
更改权限
用chmod xxx file_name
命令修改权限。其中参数xxx
主要是u o g
, +-
, r w x
的不同组合。u,g,o分别代表user,group和others;即当前用户,用户组和其他用户。+ -
表示赋予和撤消,r w x
即读,写,执行。合在一起就是给用户赋予或撤消某种权限。
chmod u+x file # 只给当前用户加上可执行权限
chmod u+rwx,o+rw,g-rwx file # 当前用户加读写和执行权限,用户组加读写权限,其他用户撤消所有权限
更改权限的另一种方式是把参数xxx
写成三位数的形式,比如chmod 777 file
就是给所有用户赋予所有权限。解读方式是:
- 4 读
- 2 写
- 1 执行
所以7=4+2+1,表示读写和执行权限,6表示读写,5表示可读和可执行,3表示可写和可执行(这个比较奇葩,能写但不能读),0表示没有任何权限。777分别对应的是user,group和others的权限。那么chmod 600 file
就是只给当前用户读写权限。
如果更改整个文件夹的所有文件,加上chmod -R ...
的参数就好。
更改拥有者
通常有权限问题都是因为该文件(夹)不属于自己。比如下边的文件夹,文件夹属于root
这个用户和wheel
这个用户组。可以看到用户组也是没有写入权限的,只有root
用户有权限。
$ ll /etc
lrwxr-xr-x@ 1 root wheel 11B Aug 5 2015 /etc -> private/etc
这时需要写入操作的话,有好几种方案:
(1) 可以在命令前加上sudo
关键字,表示以超级管理员的身份运行,需要输入密码。适用于不常用的特殊写入访问,比如修改host文件。最后,如果你的用户不是超级管理员,那就放弃吧。
(2) 添加用户组的写入权限并把自己的用户加到该用户组。适用于公共目录下常用的写入操作,此处公共目录就是除自身主目录的其他所有目录。
sudo chmod -R 775 /etc # 添加用户组的写入权限
sudo usermod -a -G wheel YOUR_USER_NAME # 给自己的用户添加用户组
(3) 更改文件夹的拥有者(owner)。适用于一些私密文件夹里常用的写入操作,比如一些文件夹不想让其他用户访问。 比如经常需要装Python的包,但又不想让其他用户乱装。跟第二个方案差不多。
把/etc
文件夹改成某个用户和某个用户组下的命令:
sudo chown -R /etc YOUR_USER_NAME:USER_GROUP