引言:我们的程序绝大多数都运行在Linux系统上,程序员日常开发也基本离不开Linux,所以即使不是做Linux内核开发,我们也需要掌握Linux一些常用知识,既能提高我们的开发效率,又能方便我们平时快速定位问题。
Linux用户和用户组:
登录Linux系统需要用户名和密码,用户名就对应系统中的一个用户; 为了方便用户的管理,加入了用户组的概念,修改用户组的权限会对组内的所有用户生效。
Linux把用户的账号信息存储在/etc/passwd文件中, 密码存储在 /etc/shadow文件中, 用户组信息存储在/etc/group文件中
我们在登陆Linux系统时,Linux首先会做下面三个事情
- 从/etc/passwd中读出用户信息、默认的工作目录、和shell;
- 从/ect/group中读出用户所属用户组信息;
- 从/etc/shadow中验证密码,验证成功后,系统打开默认工作目录,和命令行的shell窗口
下面我们分别介绍下/etc/passwd和/etc/shadow中的内容
/etc/passwd
以冒号分割总共分7列,其中每一列的含义
- 第一列:用户名
- 第二列:密码,很早之前存放Linux的密码,后面为了安全问题,密码移到了/etc/shadow文件中
- 第三列:UID 用户标示符,唯一标识一个用户
- 第四列:GID 用户所在组的ID
- 第五列:用户信息说明,意义不大
- 第六列:家目录
- 第七列:登陆时使用的shell
/ect/shadow
以冒号分割共9列
- 第一列:账户名称
- 第二列:密码
- 第三列:最近修改密码日期
- 第四列:密码不可被修改的参数
- 第五列:密码需要重新修改的天数
- 第六列:账号需要修改前告警天数
- 第七列:密码过去后的宽限时间
- 第八列:账号失效日期
- 第九列:保留今后使用
新增用户:useradd [用户名]
执行uaseradd命令时,Linux系统主要帮助我们处理以下几个事情:
- 1.在/etc/passwd里建立一行与账号相关的数据,包括建立UID/GID/家目录;
- 2.在/etc/shadow创建一条数据,但是密码并未初始化
- 3./etc/group创建一个与用户名一样的组
- 4./home下面创建一个与账号名同名的目录作为家目录
刚创建的用户是无法登陆,需要设置密码
设置密码:passwd [用户名] 然后在交互窗口里输入密码
删除用户:userdel -r [用户名]
记得在删除用户前 find / -user [用户名] 看看属于这个用户的文件
文件权限:
在命令行输入:ls -al
剖析以上字符含义,以空格切分逐列介绍:
第一列:drwxr-xr-x 一共九个字符,分别介绍下其中的含义 第一个字符[d]代表是目录,还可以是:[-] 文件 [l]链接 [b]外围存储设备 [c]键盘鼠标等
接下来的字符三个一组分为三组,拿第一行举例 [rwx] [r-x] [r-x] 第一组表示文件拥有者的权限, 第二组表示所属用户组账号的权限, 第三组表示非本人且非用户组成员的权限。 其中 r:可读 w:可写 x:可执行 -代表没有权限。rwx的顺序是不变的。
修改文件属性和权限的命令: 修改文件所属用户组:chgrp [用户组] [文件名] 修改文件拥有者:chown [用户] [文件名] 修改文件权限:chmod [权限] [文件名]
我们经常会执行 chmod 777 text.sh ,其中777是怎么计算出来的呢? 数字和权限之间有个简单的对应关系 其中r代表4,w代表2,x代表
比如 770= [4 2 1][4 2 1][0 0 0]= rwxrwx---