# 权限问题
如果有过linux基础的人,就会明白这个权限问题。其实*nix的系统,都是一个root用户,然后自己创建其他用户使用。用户和用户之前通过权限互相独立。
对一般的用户而言,不需要太关注这个权限问题,但是对程序员来说,这一点应该是必知必会的。不然我们常常会被`npm install -g xx`出现的报错而不知所措。
### root:“超级用户”
在 Mac OS X 中,在安装系统时将会创建一个名为 root 的超级用户。 root 用户对计算机上的所有文件和文件夹都有完全的访问权限,并且还具有一般用户没有的其他管理访问权限。在计算机的正常使用中,您并不需要以 root 用户的身份登录。事实上,默认情况下, root 用户是被禁用的。
### 普通用户
mac系统创建的用户,会和root在一个group中,一般叫做`staff`或者`admin`。root用户的权限高于其他用户。
### 定义的权限
- 读取 (r--)
- 写入 (-w-)
- 执行 (--x)
当您可以做到所有三种操作时,您就拥有了“rwx”权限。文件夹的权限与此类似。具有内含文档的文件夹的只读权限,您可以打开和读取其中的文档,但不能保存对该文件夹所做的更改,也不能为该文件夹添加新的文档。只读 (r--) 权限是常用于客户访问的文件共享。
### 所有者、组、其他
像“rwx”和“r-x”这样的简写描述了一个用户或一个实体的权限。每个文件或文件夹的权限设置都定义了三个实体的访问能力:所有者、组和其他。
- 所有者: 所有者通常是创建该文件的用户。在您的 root 目录下的几乎所有文件和文件夹都将您的用户名列作所有者。
- 组: Admin 用户就是一些被称为“staff”和“admin”的组的成员。超级用户“root”是这些及其他一些组的成员。通常情况下,所有文件和文件夹都被分配到“staff”、“admin”或“wheel”等组中。
- 其他: 其他是指某个文件或文件夹的所有者或组成员之外的其他所有用户。
因为每个实体都有其自己的权限,如一个完整的权限组可能为“-rwxrw-r--”。前面的连字符指定该项目是一个文件而不是文件夹。文件夹的权限以“d”开头,如“drwxrw-r--”。“d”代表 directory(目录),表示文件夹。
### 使用 Terminal 查看权限
在终端中输入`list -l`,你会得到类似如下的信息:
~~~
total 0
drwx------ 6 leohxj staff 204B Jan 27 21:50 Applications
drwx------+ 3 leohxj staff 102B Mar 11 14:54 Desktop
drwx------+ 7 leohxj staff 238B Jan 18 22:11 Documents
drwx------+ 5 leohxj staff 170B Mar 10 23:39 Downloads
drwx------@ 16 leohxj staff 544B Mar 11 14:54 Dropbox
drwx------@ 62 leohxj staff 2.1K Jan 17 23:22 Library
drwx------+ 4 leohxj staff 136B Jan 3 21:37 Movies
drwx------+ 7 leohxj staff 238B Jan 6 09:45 Music
drwx------+ 8 leohxj staff 272B Feb 7 15:23 Pictures
drwxr-xr-x+ 6 leohxj staff 204B Jan 6 10:28 Public
~~~
- `drwx------`:这一段是对文件或者目录的用户权限描述,d代表目录,后面九个字符,每三个为一组,代表所有者,组成员和其他用户。
- `leohxj`:这一栏表示所有者。
- `staff`: 这一栏表示所在组。
### 参考资料
- [Mac OS X 中权限问题的故障排除](https://support.apple.com/zh-cn/HT2963)
- 介紹
- 程序员基础知识
- 字符编码
- 技术名词
- 语义化版本
- 命名规范
- 书写文档
- 开源协议
- 目录结构
- 正则表达式
- 平凡之路
- 数据结构与算法
- 堆和栈
- 浮点数类型
- XML和JSON
- 算法学习之路
- 排序算法
- 代码架构
- 设计模式
- 常用的Javascript设计模式
- 面向对象编程
- 继承
- 多态
- 封装
- 面向接口编程
- 代码评审
- 六种量化你代码的方式
- 程序员必备的代码审查(Code Review)清单
- 服务器部署
- AWS简介
- 网络知识
- HTTPS, SPDY和 HTTP/2性能的简单对比
- HTTP状态码
- 懂点设计
- 佳作赏析
- 无缝平铺
- Sketch学习
- 设计与实现的平衡
- 写点东西
- 使用gitbook
- 合格的PM
- 一个好的产品经理
- 产品经理的技能
- 团队合作
- 关于招聘
- 培训新人
- 领导能力
- 获取知识
- MOOC
- Podcasts
- 英语学习
- 设计学习
- 前端学习
- iOS学习
- 游戏开发
- 关注健康
- 过劳检测
- 关于睡眠
- 提升效率
- 学会阅读
- 学会提问
- 善用搜索
- 学会写作
- 时间管理
- 知识管理
- 文件管理
- 密码管理
- 制作视频
- 制作PPT
- 论音乐对效率的影响
- 程序员效率指南
- SOHO
- 创业资源
- Hacker
- 保护隐私
- 关于工作
- 找工作前需要思考的问题
- 原则与技巧
- 关于简历
- 其他方面
- 硬件相关
- 常用软件
- Windows
- 硬件配置
- 系统安装
- 常用软件
- Mac
- 通用设置
- 权限问题
- alias设置
- 常用软件
- 开发环境
- 快捷键设置
- 常用终端命令
- dotfiles
- Android
- 常用软件
- 如何登录美国区GooglePlay
- 开发工具
- git
- EditorConfig
- node
- shadowsocks
- ST3--Windows篇
- ST3--Mac篇
- gulp
- 字体的选择
- Emacs
- WebStorm
- tmux
- Sketch
- Sketch中文学习资料
- Trello
- 使用Trello管理项目的经验
- git进阶
- 15分钟学会使用Git和远程代码库
- GitHub秘籍
- JetBrains
- IDE设置
- 附录
- 计算机科学与技术
- 网站
- 书籍
- 工具