众所周知,Linux是一个多用户、多任务的系统。而当很多用户同时登录时,系统是怎样管理用户,并给他们赋予相应的权限呢?

Linux中有三类用户

    超级用户(UID为0)

    系统用户(伪用户、非登录)

        仅运行服务程序

        centos6.x中UID为1-499

centos7.x中UID为1-999

    登录用户(普通用户)

centos6.x中UID:500-65535

centos7.x中UID:1000-65535


    用户解析库文件(任何人都可以访问):

/etc/passwd 

name:password:UID:GID:GECOS:directory:shell

            第一列(name):用户名

    第二列(password):密码,用X占位,而真正的密码存放        在/etc/shadow中

    第三列(UID):用户的UID

    第四列(GID):用户的基本组GID

    第五列(GECOS):用户的描述信息

    第六列(directory):用户的家目录

    第七列(shell):用户的登录shell


    用户口令文件shadow(只有root可以访问):

/etc/passwdcat /etc/shadow

用户名:加密密码:上次更改密码的时间:最小更改密码间隔:密码有效期限:密码过期提示时间:密码锁定期:账户有效期:保留字段

        用户名:

口令:存放加密口令,如果第一个字符是!,表示该用户不能登录

最后一次修改时间:

最大时间间隔:0 可以随时改变

最小时间间隔:99999 表示永远不过期

警告时间:1周

不活动时间:

失效时间:


用户管理:

    添加用户:useradd

useradd [options] LOGIN

            常用选项:

        -c: 注释信息

-d: 家目录路径

-g:用户的基本组组名或GID;

-G: 用户所属的附加组列表

-m: 强制创建家目录; 

-M:不创建用户主目录

-r:创建一个系统账户

-s: 用户的登录 shell 名

-u: 用户的 UID 。

    删除用户:userdel

userdel [options] LOGIN

常用选项:

            -r:删除用户时连同该用户家目录一起删除


        修改账号信息:usermod

    -c: 注释信息

    -d: 修改家目录为新的位置,应该同时使用-m选项让原家目录中的文件移动到新目录中;

    -g:指定基本组

    -G:修改时会覆盖原有的附加组;一同使用-a选项,表示为用户添加新的附加组;

    -l:修改当前用户的用户名;

    -s:更改登录shell

    -u:更改UID

    -L:锁定用户的密码。

    -U:解锁用户的密码。


用户组管理:

    用户组的管理文件:group /etc/group

        group_name/password/GID/user_list

  分为四个部分:

    组名:用户登录时所在的组名

    组密码:切换到一个新组时用到的密码

    组标识码(GID):组ID

    组内用户列表:属于改组的所有用户列表


    添加用户组

useradd username (默认建立username用户组)

groupadd 组帐号名称 

    修改组名

groupmod -n newName groupName

    删除组帐号

groupdel 组帐号名称

注意:删除的帐号必须存在,且不能是某个用户的私有组

    添加用户到组

gpasswd -a userName groupName


    从组中删除用户

gpasswd -d userName groupName


    查看某个用户属于哪个组

groups userName


    查看某个组有哪些用户

grep "组名" /etc/group


权限管理(chmod):

    当使用ll命令查看某个文件时会出现如下:

[root@localhost ~]# 
lltotal 4
-rw-------. 1 root root 2639 Mar  4 16:53 anaconda-ks.cfg
-rw-r--r--  1 root root    0 Mar  8 12:43 test.sh


-rwxr--r--

第一个字符-:表示为普通文件

第2-4个字符:表示属主的权限为rwx

第5-7个字符:表示属组的权限为r

第8-10个字符:表示其他人的权限为r

    r(4):可读的

    w(2):可写的

    x(1):可执行的


    文件:

        r:可获取文件的数据;

        w:可修改文件的数据;

        x:可将此文件运行为进程;

     三类用户:

         属主:owner, u

         属组:group, g

         其它:other, o


 chmod命令:改变文件权限

 授权表示法:直接操作一类用户一位或多位权限

[root@localhost test]# chmod u+x,g+w fstab 
[root@localhost test]#
 lltotal 36
 -rw-r--r-- 1 root root  261 Mar  9 16:07 adduser
 -rwxr--r-- 1 root root  251 Mar  8 09:49 adduser.sh
 -rwxrw-r-- 1 root root  595 Mar  9 15:06 fstab
 -rw-r--r-- 1 root root 4179 Mar  9 16:25 grub.cfg
 -rw-r--r-- 1 root root 2255 Mar  9 15:09 passwd
 -rw-r--r-- 1 root root  102 Mar  9 12:26 rmlog.sh
 -rwxr-xr-x 1 root root  366 Mar  8 16:33 sum.sh
 -rwxr--r-- 1 root root   67 Mar  8 16:25 test.sh


  赋权表示法:直接操作一类用户的所有权限位rwx;

[root@localhost test]# chmod ug=rwx,o=rw ./passwd 
[root@localhost test]# 
lltotal 36
-rw-r--r-- 1 root root  261 Mar  9 16:07 adduser
-rwxr--r-- 1 root root  251 Mar  8 09:49 adduser.sh
-rwxrw-r-- 1 root root  595 Mar  9 15:06 fstab
-rw-r--r-- 1 root root 4179 Mar  9 16:25 grub.cfg
-rwxrwxrw- 1 root root 2255 Mar  9 15:09 passwd
-rw-r--r-- 1 root root  102 Mar  9 12:26 rmlog.sh
-rwxr-xr-x 1 root root  366 Mar  8 16:33 sum.sh
-rwxr--r-- 1 root root   67 Mar  8 16:25 test.sh


还有一种数字表示法:

[root@localhost test]# chmod 755 ./grub.cfg 
[root@localhost test]# 
lltotal 36
-rw-r--r-- 1 root root  261 Mar  9 16:07 adduser
-rwxr--r-- 1 root root  251 Mar  8 09:49 adduser.sh
-rwxrw-r-- 1 root root  595 Mar  9 15:06 fstab
-rwxr-xr-x 1 root root 4179 Mar  9 16:25 grub.cfg
-rwxrwxrw- 1 root root 2255 Mar  9 15:09 passwd
-rw-r--r-- 1 root root  102 Mar  9 12:26 rmlog.sh
-rwxr-xr-x 1 root root  366 Mar  8 16:33 sum.sh
-rwxr--r-- 1 root root   67 Mar  8 16:25 test.sh


chown命令:改变属主和属组

    常用选项:

        -R, --recursive:递归修改;

[root@localhost tao]# chown root:tao first.sh 
[root@localhost tao]#
 lltotal 8
-rwxrwxr-x 1 tao  tao 80 Mar  7 12:02 adduser.sh
-rwxrwxr-x 1 root tao 64 Mar  7 11:03 first.sh

 chgrp命令:改变属组

用法:

     chgrp [OPTION]... GROUP FILE...

or:  chgrp [OPTION]... --reference=RFILE FILE...

[root@localhost tao]# chgrp root ./adduser.sh 
[root@localhost tao]# 
lltotal 8
-rwxrwxr-x 1 tao  root 80 Mar  7 12:02 adduser.sh
-rwxrwxr-x 1 root tao  64 Mar  7 11:03 first.sh