用户与组

linux是多用户多任务分时操作系统,有多用户,所以每个用户自然就有不同的权限。
linux平时运行程序以用户或用户组来区别权限。创建文件时以..来生成权限文件。

用户信息存贮在文件/etc/passwd里.

/etc/passwd 文件结构
  1. [root@iZuf6ay9wx8ybghfwlkw6kZ ~]# head /etc/passwd
  2. root:x:0:0:root:/root:/bin/bash
  3. bin:x:1:1:bin:/bin:/sbin/nologin
  4. daemon:x:2:2:daemon:/sbin:/sbin/nologin
  5. adm:x:3:4:adm:/var/adm:/sbin/nologin
  6. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
  7. sync:x:5:0:sync:/sbin:/bin/sync
  8. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
  9. halt:x:7:0:halt:/sbin:/sbin/halt
  10. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
  11. operator:x:11:0:operator:/root:/sbin/nologin

这个文件有许多行,每一行是一个帐号的所有信息,有多少行就说明此操作系统下有多少帐号。

这些帐号分为几种:
root,安装完系统就有了,当然不能删除。
其实由root创建的用户帐号,可以删除。
还有一些是系统正常运行所需要的,不是由root创建的,或者叫做系统帐号,比如bin daemon adm nobody等。不能随便删除。
行之间的列用”:”号分隔。

  1. 第一列是帐号名称.
    为了对抗人类记忆数字差所以每个帐号起了一个名字。

  2. 第二列 密码
    早期UNIX系统密码就是放在这个字段上,但是因为这个文件的特性是所有的程序都能够读取,这样一来很容易造成密码数据被窃取,所以后来这个字段不放存在密码,全部写上x,个人觉得写成空白也行吧。实际的密码存到另外的/etc/shadow文件里。

  3. 第三个字段 UID
    这是用户标识符,是纯数字,所有的权限判断其实是以这个数字为准。
    系统管理员uid是0。(当你要让其它的帐号也具有root权限时,只要把那个帐号uid改成0就行。也就是说一台系统上面的系统管理员不见得只有root,不过正常人没这么做的.)
    1-999 uid 保留给系统使用的ID,其实际了0之外,其它的UID权限与特性并没有不一样。默认1000以下的数字留给系统用为保留帐号只是一个习惯.
    由于系统上面启动的网络服务或后台服务希望使用较小的权限去运行,因此不希望使用root的身份去执行这些服务,所以我们就得要提供这些运行中的程序的拥有者帐号才行。这些系统帐号通常是不可登陆的,通常很多是给/sbin/nologin.
    1 ~ 200 由linux发行版自行建立的系统帐号
    201 ~ 999 若用户有系统帐号需求时,可以使用的帐号UID。
    1000 ~ 6000 可登陆帐号,给一般用户使用。以前的内核支持最大Uid是原来是65536,3.1以上的内核,最多可以支持2^23-1也就是4294967295。

  4. 第四个字段 GID
    每个用户都有对应的组,这个是对应的组ID。

  5. 第五个字段 用户信息说明
    这个没什么实际的作用,就是个用户备注

  6. 第六个字段 系统给当前用户分配的目录
    系统给root分配的目录是/root,所以当root登陆后就会把/root为当前目录。
    也就是用户名分配的用户私有目录就是/home/用户名。

  7. shell
    用户登出时使用什么shell,就在这个字段来指定。比如root使用bash。其它系统帐号因为不需要登陆,使用/sbin/nologin这个shell.

真正的密码实际上加密后存在/etc/shadow文件里.
  1. [root@iZuf6ay9wx8ybghfwlkw6kZ ~]# head /etc/shadow
  2. root:$6$ZafJFS55$ICEsVMOsWZ7qHeVTbpd/A.UeEuUxk69R0F6YBN4mzqndSzO0hPrx8l48rof.kMi8LnZkfjImpkPPchub4I3V91:17620:0:99999:7:::
  3. bin:*:17110:0:99999:7:::
  4. daemon:*:17110:0:99999:7:::
  5. adm:*:17110:0:99999:7:::
  6. lp:*:17110:0:99999:7:::
  7. sync:*:17110:0:99999:7:::
  8. shutdown:*:17110:0:99999:7:::
  9. halt:*:17110:0:99999:7:::
  10. mail:*:17110:0:99999:7:::
  11. operator:*:17110:0:99999:7:::

shadow以”:”作为分隔符,共有9个字段。
1 帐号名称
2 密码
3 最近修改密码的日期
4 密码不可被修改的天数
5 密码需要重新修改的天数
6 密码需要修改前的警告天数
7 密码过期后的帐号宽限时间(密码失败日)
8 帐号失效日期
9 保留

操作命令

所有者 u;
所属组 g;
其它用户 o;
所有用户 a;

以数字形式表示
4 r 可读
2 w 可写
1 1 执行

  1. 新增用户
    useradd
  2. 编辑用户
    usermode
  3. 删除用户
    userdel

  4. 新增用户组
    groupadd

  5. 编辑用户组
    groupmode
  6. 删除用户组
    groupdel