程序员必须了解的Linux基础(用户和权限)

2022-08-25 13:47:20 浏览数 (1)

引言:我们的程序绝大多数都运行在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---

0 人点赞