您的位置:新葡亰496net > 电脑系统 > 权力及客商,linux相识相知

权力及客商,linux相识相知

发布时间:2019-09-17 09:19编辑:电脑系统浏览(194)

    linux系统是多用户(Multi-users)和多任务(Multi-tasks)的,这样的目的是为了一台linux主机可以给很多用户提供服务同时运行多种服务,但是我们是怎么区分每个用户呢?作为一个管理员我对linux系统权限有哪些?作为一个普通的用户又可以对linux系统有哪些操作呢?这里就牵扯到了linux的用户类别和权限管理。本次博客就用户和权限管理作出详细的解释。

    【linux相识相知】用户及权限管理,linux相识相知

    linux系统是多用户(Multi-users)和多任务(Multi-tasks)的,这样的目的是为了一台linux主机可以给很多用户提供服务同时运行多种服务,但是我们是怎么区分每个用户呢?作为一个管理员我对linux系统权限有哪些?作为一个普通的用户又可以对linux系统有哪些操作呢?这里就牵扯到了linux的用户类别和权限管理。本次博客就用户和权限管理作出详细的解释。

    每个用户对其拥有的文件具有控制权,同时,用户又属于由一个或多个用户组成的用户组。用户组成员由文件和目录的所有者授予对文件和目录的访问权限。如此设计可保证每个用户的操作是独立的,不会影响到其他用户。

    【文件管理、管道、用户及组管理、用户及权限管理】用户及组管理

    用户和组类型

    在linux系统中,有着用户和组着两个概念,用户是被包含在组里面的。

    用户可以分为以下2中类别:

    管理员:也就是我们常说的root

    普通用户:分为系统用户(为了能够让有些后台进程或服务类进程以非管理员的身份运行,通常需要为此创建多个普通用户,这类用户从不用登录系统)和登录用户

    作为合法居民都应该有自己的ID号,在linux中,用户也有自己的用户标识的UID,是由16bits的二进制数字来标识的,所以取值范围为0-65535.不同类型的用户取值范围如下:
    管理员:0

    普通用户:

        系统用户:1-499(centos6),1-999(centos7)

        登录用户:500-60000(centos6),1000-60000(centos7)

    组按不同的分类可以分为以下3中类型的组:

    1.按管理员组合普通用户组

    管理员组:对系统有着管理权限的组

    普通用户组:和普通用户对应也有着系统组和登录组

    组也有着自己的GID,不同组的取值范围如下(和用户取值范围相同)

    管理员组:0

    普通用户组:

        系统用户组:1-499(CentOS6), 1-999(CentOS7)

        登录用户组:500-60000(CentOS6), 1000-60000(CentOS7)

     

    2.按基本组和附加组

    基本组:用户在创建的时候,都会默认创建一个与其名字相同的基本组

    附加组:一个用户可以属于一个基本组后,也可以添加其他的组中,这个其他组就称为这个用户的附加组

     

    3.按用户数目

    私有组:组名通用户名,且只包含一个用户

    公用组:组内包含着多个用户

     

    下面我们来说一下系统是怎么识别这个用户是合法用户的,用户在登录的时候,必须要键入用户名和密码,系统会把用户提供密码与系统中配置文件中的密码对比(当然这里不是简简单单的明文对比),如果相同则允许登入,否则不允许。管理员在定义用户密码的时候后最好要遵循以下定义标准(虽然linux允许用户设置弱类型密码):

    1.使用随机的密码

    2.最短长度不要低于8位

    3.应该使用大写字母、小写字母、数字和标点符号四类字符中至少三类

    4.定期更换

    我们都知道,定义的密码都是明文的,那么保存在配置文件中是以明文的吗?那肯定不是的,密码一般都会被算法加密,在centos中有以下加密算法,密码被加密成的bit位也不一样,越长说明安全性越高,加密等级为(1-6),在加密前还会添加上一段随机数进行加密,centos默认以sha512加密:

    1    md5:128bits

    2    sha:160bits

    3    sha224:224bits

    4    sha256:256bits

    5    sha384:384bits

    6    sha512:512bits

    可以使用命令对一段明文加密:

    [root@localhost ~]# echo "Frank" | sha512sum 
    d373aa36ac1061fab63c4a8ee098102476de1ff1bdff11be3629c54ccb14a35d27f658a4745a61ec183fbbd1077561a5bfcba5ead0fa4b32e2e63492e8fed3ea  -
    

     

    用户和组类型

    在linux系统中,有着用户和组着两个概念,用户是被包含在组里面的。

    用户可以分为以下2中类别:

    管理员:也就是我们常说的root

    普通用户:分为系统用户(为了能够让有些后台进程或服务类进程以非管理员的身份运行,通常需要为此创建多个普通用户,这类用户从不用登录系统)和登录用户

    作为合法居民都应该有自己的ID号,在linux中,用户也有自己的用户标识的UID,是由16bits的二进制数字来标识的,所以取值范围为0-65535.不同类型的用户取值范围如下:
    管理员:0

    普通用户:

        系统用户:1-499(centos6),1-999(centos7)

        登录用户:500-60000(centos6),1000-60000(centos7)

    组按不同的分类可以分为以下3中类型的组:

    1.按管理员组合普通用户组

    管理员组:对系统有着管理权限的组

    普通用户组:和普通用户对应也有着系统组和登录组

    组也有着自己的GID,不同组的取值范围如下(和用户取值范围相同)

    管理员组:0 普通用户组:     系统用户组:1-499(CentOS6), 1-999(CentOS7)     登录用户组:500-60000(CentOS6), 1000-60000(CentOS7)

     

    2.按基本组和附加组

    基本组:用户在创建的时候,都会默认创建一个与其名字相同的基本组

    附加组:一个用户可以属于一个基本组后,也可以添加其他的组中,这个其他组就称为这个用户的附加组

     

    3.按用户数目

    私有组:组名通用户名,且只包含一个用户

    公用组:组内包含着多个用户

     

    下面我们来说一下系统是怎么识别这个用户是合法用户的,用户在登录的时候,必须要键入用户名和密码,系统会把用户提供密码与系统中配置文件中的密码对比(当然这里不是简简单单的明文对比),如果相同则允许登入,否则不允许。管理员在定义用户密码的时候后最好要遵循以下定义标准(虽然linux允许用户设置弱类型密码):

    1.使用随机的密码

    2.最短长度不要低于8位

    3.应该使用大写字母、小写字母、数字和标点符号四类字符中至少三类

    4.定期更换

    我们都知道,定义的密码都是明文的,那么保存在配置文件中是以明文的吗?那肯定不是的,密码一般都会被算法加密,在centos中有以下加密算法,密码被加密成的bit位也不一样,越长说明安全性越高,加密等级为(1-6),在加密前还会添加上一段随机数进行加密,centos默认以sha512加密:

    1    md5:128bits 2    sha:160bits 3    sha224:224bits 4    sha256:256bits 5    sha384:384bits 6    sha512:512bits

    可以使用命令对一段明文加密:

    [[email protected] ~]# echo "Frank" | sha512sum 
    d373aa36ac1061fab63c4a8ee098102476de1ff1bdff11be3629c54ccb14a35d27f658a4745a61ec183fbbd1077561a5bfcba5ead0fa4b32e2e63492e8fed3ea  -
    

     

    id命令,查看自己的身份信息

    用户与组管理

      Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。每个用户账号都拥有一个惟一的用户名和各自的口令。用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。实现用户账号的管理,要完成的工作主要有如下几个方面:

      1.用户账号的添加、删除与修改。

      2.用户口令的管理。

      3.用户组的管理。

      Linux用户分为两种,分别是管理员(UID:0)和普通用户(UID:1-65535),普通用户又分为系统用户与登录用户。

      :一个程序可以访问哪些内容取决于这个程序的发行者是哪一个的。

      linux组可分为管理员组(GID:0)与普通用户组(1-60000)

      :centos6版本与centos7版本的UID与GID略有不同。

      此外,用户组还可以划分为基本组(用户在创建时默认创建一个与其名字相同的基本组)与附加组(除了已有的基本组以外,还可以添加其他组,其他组就是此用户附加组)

      所以组名通用户名,且只包含一个用户就叫做私有组,而组内包含多个用户叫做公有组

    用户和组的相关配置文件

    /etc/passwd

    我们先看一下这个文件:

    [root@localhost ~]# cat /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    ......(省略)
    tcpdump:x:72:72::/:/sbin/nologin
    claire:x:1001:1001::/home/claire:/bin/bash
    

    会看到一行从左到右被冒号分割成了7个部分,下面就这七个部分作出解释,我们以最后一行为例:

    1.claire,也就是用户名啦

    2.x,密码占位符,密码不是没有保存在这个文件下,后面会讲

    3.1001,UID,也就是用户ID

    4.1001,GID,也就是组ID

    5.空的,这里一般是注释信息,可能是用户的全称

    6./home/claire,用户的家目录

    7./bin/bash,用户登录的默认shell

    我们可以看到前面为UID为0的为管理员root,那些UID小于等于999的,如bin为1,是系统用户,他的默认shell为/nologin,也就是不允许登录的。

     

    /etc/shadow

    我们先来看一下这个文件:

    [root@localhost ~]# cat /etc/shadow
    root:$6$0CIKvP15hvSin5V5$oc.amWyL11jfB1pYxYiaGNfyN8HVq2s0iaVW0KiUd5RrS2SwKmWhTTqUzJ5uNnHi7.pc3OEqO/BMeLIFPOnpJ.::0:99999:7:::
    bin:*:17110:0:99999:7:::
    daemon:*:17110:0:99999:7:::
    adm:*:17110:0:99999:7:::
    lp:*:17110:0:99999:7:::
    sync:*:17110:0:99999:7:::
    .....(省略)
    tcpdump:!!:17348::::::
    claire:$6$ZZ5ZKnr4$UI7/gW2z6rtmZygBpH81V8MawY7oLgPTaU65w.zmNyi8Bd9rWVgLQPuZtB1.Q6p6T5KOcd9wnCEJapqcAKCLj.:17357:0:99999:7:::
    

    会看到一行被冒号分为了9个部分,我们还是以claire为例子来说明:

    1.claire,用户名

    2.用户被加密后的密码,第一个$和$之间的为加密等级,"6"为sha512(前面说过咯),第二个$和第三个$之间为随机数(也被称为加salt),之后为加密后的密文,当密码前有"!"或者"*"代表这个用户被禁用了

    3.用户最近修改密码的日期,用天数表示,表示从1970年1月1日到被修改那天之间的天数,可以通过以下方法将天数换算成具体的日期:

    [root@localhost ~]# date -u -d "1970-01-01 UTC $((17357 * 86400 )) seconds"
    Mon Jul 10 00:00:00 UTC 2017
    

    4.密码最短使用天数,"0"表示可以随时修改密码,如果为"3",那么表示用户只有在最近一次修改的三天之后才能修改改密码

    5.密码最长使用天数,"99999"就不需要修改了,对你来说也就是永久的了

    6.密码告警时间,也就是你密码最长使用天数的,前多少天提醒你,如果的你的密码最长使用天数为100天,密码告警时间为7,那么在      94天的时候,就会提示用户改修改密码了

    7.密码过期的恕限时间,如果这里的值为2,当你在告警时间结束之后,仍然没有修改密码,那么在2天内,你还可以使用这个密码登录

    8.账号失效时间,也是基于1970年1月1日的天数,当用户到了这个时间的时候,就无法在使用了,这一项一般会被使用在收费服务的系统中,当超过这个时间的时候,账户就不能使用了。

    9.保留位,未来有可能会使用

     

    /etc/group

    我们还是先看一下这配置文件下有什么

    [root@localhost ~]# cat /etc/group
    root:x:0:
    bin:x:1:
    daemon:x:2:
    sys:x:3:
    adm:x:4:
    ......(省略)
    slocate:x:21:
    tcpdump:x:72:
    claire:x:1001:
    

    每一行被冒号从左至右分割成了4个部分,还是以最后一行来说明:

    1.claire:默认创建一个用户,就会自己创建一个与其同名的组

    2.x,组密码占位符,密码也不是放在这里的哦

    3.1001,GID,组ID

    4.是一个以逗号分隔的用户列表,以此组为附加组的用户的用户列表

     

    /etc/gshadow

    先打开文件看一下:

    [root@localhost ~]# cat /etc/gshadow
    root:::
    bin:::
    daemon:::
    sys:::
    ......
    avahi:!::
    slocate:!::
    tcpdump:!::
    claire:!::
    

    每一行被冒号从左至右分割成了4个部分,还是以最后一行来说明:

    1.claire:默认创建一个用户,就会自己创建一个与其同名的组

    2.如果为"!"或者是"*",那么其他用户就不需要密码就可以加入到这个组中,如果组是设置的密码,则为一串密文,如果是空,则表示只有该组的成员可以获得组的权限

    3.用户组管理员,是一个以逗号分隔的用户列表,用户组管理员可以修改密码和组成员,也很组里其他成员拥有相同的权限

    4.成员,是一个以逗号分隔的用户列表,以此组为附加组的用户的用户列表,应该要和/etc/group下的用户列表一样

     

    用户和组的相关配置文件

    /etc/passwd

    我们先看一下这个文件:

    [[email protected] ~]# cat /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    ......(省略)
    tcpdump:x:72:72::/:/sbin/nologin
    claire:x:1001:1001::/home/claire:/bin/bash
    

    会看到一行从左到右被冒号分割成了7个部分,下面就这七个部分作出解释,我们以最后一行为例:

    1.claire,也就是用户名啦

    2.x,密码占位符,密码不是没有保存在这个文件下,后面会讲

    3.1001,UID,也就是用户ID

    4.1001,GID,也就是组ID

    5.空的,这里一般是注释信息,可能是用户的全称

    6./home/claire,用户的家目录

    7./bin/bash,用户登录的默认shell

    我们可以看到前面为UID为0的为管理员root,那些UID小于等于999的,如bin为1,是系统用户,他的默认shell为/nologin,也就是不允许登录的。

     

    /etc/shadow

    我们先来看一下这个文件:

    [[email protected] ~]# cat /etc/shadow
    root:$6$0CIKvP15hvSin5V5$oc.amWyL11jfB1pYxYiaGNfyN8HVq2s0iaVW0KiUd5RrS2SwKmWhTTqUzJ5uNnHi7.pc3OEqO/BMeLIFPOnpJ.::0:99999:7:::
    bin:*:17110:0:99999:7:::
    daemon:*:17110:0:99999:7:::
    adm:*:17110:0:99999:7:::
    lp:*:17110:0:99999:7:::
    sync:*:17110:0:99999:7:::
    .....(省略)
    tcpdump:!!:17348::::::
    claire:$6$ZZ5ZKnr4$UI7/gW2z6rtmZygBpH81V8MawY7oLgPTaU65w.zmNyi8Bd9rWVgLQPuZtB1.Q6p6T5KOcd9wnCEJapqcAKCLj.:17357:0:99999:7:::
    

    会看到一行被冒号分为了9个部分,我们还是以claire为例子来说明:

    1.claire,用户名

    2.用户被加密后的密码,第一个$和$之间的为加密等级,"6"为sha512(前面说过咯),第二个$和第三个$之间为随机数(也被称为加salt),之后为加密后的密文,当密码前有"!"或者"*"代表这个用户被禁用了

    3.用户最近修改密码的日期,用天数表示,表示从1970年1月1日到被修改那天之间的天数,可以通过以下方法将天数换算成具体的日期:

    [[email protected] ~]# date -u -d "1970-01-01 UTC $((17357 * 86400 )) seconds"
    Mon Jul 10 00:00:00 UTC 2017
    

    4.密码最短使用天数,"0"表示可以随时修改密码,如果为"3",那么表示用户只有在最近一次修改的三天之后才能修改改密码

    5.密码最长使用天数,"99999"就不需要修改了,对你来说也就是永久的了

    6.密码告警时间,也就是你密码最长使用天数的,前多少天提醒你,如果的你的密码最长使用天数为100天,密码告警时间为7,那么在      94天的时候,就会提示用户改修改密码了

    7.密码过期的恕限时间,如果这里的值为2,当你在告警时间结束之后,仍然没有修改密码,那么在2天内,你还可以使用这个密码登录

    8.账号失效时间,也是基于1970年1月1日的天数,当用户到了这个时间的时候,就无法在使用了,这一项一般会被使用在收费服务的系统中,当超过这个时间的时候,账户就不能使用了。

    9.保留位,未来有可能会使用

     

    /etc/group

    我们还是先看一下这配置文件下有什么

    [[email protected] ~]# cat /etc/group
    root:x:0:
    bin:x:1:
    daemon:x:2:
    sys:x:3:
    adm:x:4:
    ......(省略)
    slocate:x:21:
    tcpdump:x:72:
    claire:x:1001:
    

    每一行被冒号从左至右分割成了4个部分,还是以最后一行来说明:

    1.claire:默认创建一个用户,就会自己创建一个与其同名的组

    2.x,组密码占位符,密码也不是放在这里的哦

    3.1001,GID,组ID

    4.是一个以逗号分隔的用户列表,以此组为附加组的用户的用户列表

     

    /etc/gshadow

    先打开文件看一下:

    [[email protected] ~]# cat /etc/gshadow
    root:::
    bin:::
    daemon:::
    sys:::
    ......
    avahi:!::
    slocate:!::
    tcpdump:!::
    claire:!::
    

    每一行被冒号从左至右分割成了4个部分,还是以最后一行来说明:

    1.claire:默认创建一个用户,就会自己创建一个与其同名的组

    2.如果为"!"或者是"*",那么其他用户就不需要密码就可以加入到这个组中,如果组是设置的密码,则为一串密文,如果是空,则表示只有该组的成员可以获得组的权限

    3.用户组管理员,是一个以逗号分隔的用户列表,用户组管理员可以修改密码和组成员,也很组里其他成员拥有相同的权限

    4.成员,是一个以逗号分隔的用户列表,以此组为附加组的用户的用户列表,应该要和/etc/group下的用户列表一样

     

    [root@senlong tmp]# id
    uid=0(root) gid=0(root) groups=0(root)
    

    Linux用户和组相关的配置文件

      用户和用户组相关的信息都存放在/etc/passwd,/etc/shadow,/etc/group以及/etc/gshadow文件下。下面分别介绍这些文件的具体内容。

      1./etc/passwd

      此文件下保存了用户及其属性信息。其中每条信息从左到右被冒号分割成了7个部分,username(用户名):x(密码占位符,真正的密码自然不能放在这里了,太不安全了):UID(用户ID):GID(用户组ID):存放用户的注释信息:用户家目录:用户默认使用的shell。

      2./etc/shadow

      此文件保存了用户密码及其相关属性信息,其中每条信息从左到右被冒号分割成9个部分,用户名:密码(被加密过的,密码中有“!”或者“*”用户已被禁用):最近一次修改密码的日期,自linux元年开始的天数(1970年1月1日开始):密码最短使用时间:密码最长使用时间:密码告警时间(在密码过期前n天进行告警,需要修改密码了):不活动时间(超出警告时间后m天仍可登录):失效时间(到达此时间,用户无法使用):保留位暂不使用。

      3./etc/group

      此文件保存了用户组及其属性信息,每一行被冒号从左至右分割成了4个部分,组名(创建一个用户就会创建一个同名的组):x组密码占位符(与用户密码一样也是存放在其他位置):GID:以逗号分隔的用户列表,以此组为附加组的用户的用户列表。

      4./etc/gshadow

      此文件保存了组密码及其相关属性信息,每一行被冒号从左至右分割成了4个部分,组名(创建一个用户就会创建一个同名的组):密文密码(为空时只有该组成员可获得权限,“!”与“*”则不需要密码可直接加入):用户组管理员(是逗号分隔的用户列表,用户组管理员可以修改密码和组成员,也很组里其他成员拥有相同的权限):成员(以此组为附加组的用户的用户列表,应该要和/etc/group下的用户列表一样)

    用户和组管理常用命令

     作为一个管理员,我们可以增删用户、增删组、修改用户和组属性,下面我们就来介绍常用的用户和组管理命令。

     groupadd

    NAME:创建一个新的组

    SYNOPSIS:groupadd [options] group

    常用选项:

    -g GID:指定GID,默认是上一个组的GID 1

    -r:创建系统组

    举例如下:

    [root@localhost ~]# groupadd my_group
    [root@localhost ~]# tail -2 /etc/group
    claire:x:1001:
    my_group:x:1002:    #默认上一个组号加一,注意必须是同类型的组,这里都位登录用户组
    [root@localhost ~]# groupadd -g 1500 cloud    #指定GID为1500
    [root@localhost ~]# tail -2 /etc/group
    my_group:x:1002:
    cloud:x:1500:    #GID被指定为1500
    [root@localhost ~]# groupadd -r my_sys    #创建系统用户组 my_sys
    [root@localhost ~]# tail -2 /etc/group
    cloud:x:1500:
    my_sys:x:983:    #系统用户组的GID为983
    

     

     groupmod

    NAME:修改组的属性

    SYNOPSIS:groupmod [options] GROUP

    常用选项:

    -g GID:修改GID

    -n new_name:修改组名

    举例如下:

    [root@localhost ~]# tail -3 /etc/group
    my_group:x:1002:
    cloud:x:1500:
    my_sys:x:983:
    [root@localhost ~]# groupmod -g 1003 cloud    #修改GID为1003
    [root@localhost ~]# tail -3 /etc/group
    my_group:x:1002:
    cloud:x:1003:
    my_sys:x:983:
    [root@localhost ~]# groupmod -n  my_system my_sys    #将组名my_sys修改为my_system
    [root@localhost ~]# tail -3 /etc/group
    my_group:x:1002:
    cloud:x:1003:
    my_system:x:983:
    

     

    groupdel

    NAME:删除一个组

    SYNOPSIS:groupdel [options] GROUP

    举例如下:

    [root@localhost ~]# tail -3 /etc/group
    my_group:x:1002:
    cloud:x:1003:
    my_system:x:983:
    [root@localhost ~]# groupdel my_system   #删除系统组my_system
    [root@localhost ~]# tail -3 /etc/group
    claire:x:1001:
    my_group:x:1002:
    cloud:x:1003:
    

     

    useradd

    NAME:创建一个用户或者更新用户的信息

    SYNOPSIS:useradd [options] LOGIN

                           useradd -D

                           useradd -D [options]

    常用选项:

    -u:--uid UID:指定UID

    -g:--gid GROUP:指定基本组,此组得事先存在

    -G:--groups GROUP1[,GROUP2,...[,GROUPN]]]:指定用户所属的附加组,多个组之间用逗号分隔

    -c:--comment COMMENT:指明注释信息

    -d:--home HOME_DIR:指定的路径为用户的家目录:通过复制/etc/skel此目录并重命名实现,指定的家目录路径如果事先存在,则不                                            会为用户复制环境配置文件

    -s:--shell SHELL:指定用户的默认shell,可用所有的shell存放在/etc/shells下

    -r:--system:创建系统用户

    举个例子

    创建一个组ID为1200,基本组为cloud(已存在),附加组为"my_group",注释信息为"my_test",家目录为"/home/my_home",shell为csh,用户名为my_test的用户

    [root@localhost ~]# useradd -u 1200 -g cloud -G my_group -c "my_test" -d /home/my_home  -s /bin/csh my_test 
    [root@localhost home]# id my_test    id命令后面会讲到
    uid=1200(my_test) gid=1003(cloud) groups=1003(cloud),1002(my_group)
    [root@localhost home]# 
    [root@localhost home]# tail -1 /etc/passwd
    my_test:x:1200:1003:my_test:/home/my_home:/bin/csh
    [root@localhost home]# tail -3 /etc/group
    claire:x:1001:
    my_group:x:1002:my_test
    cloud:x:1003:
    [root@localhost home]# ll -a  /home/my_home/
    total 12
    drwx------. 3 my_test cloud  78 Jul 10 06:23 .
    drwxr-xr-x. 5 root    root   48 Jul 10 06:23 ..
    -rw-r--r--. 1 my_test cloud  18 Aug  2  2016 .bash_logout
    -rw-r--r--. 1 my_test cloud 193 Aug  2  2016 .bash_profile
    -rw-r--r--. 1 my_test cloud 231 Aug  2  2016 .bashrc
    drwxr-xr-x. 4 my_test cloud  39 Jul  1 07:56 .mozilla
    

     注意:创建用户时的默认设定配置文件为/etc/login.defs如:

    PASS_MAX_DAYS    99999
    PASS_MIN_DAYS    0
    PASS_MIN_LEN    5
    PASS_WARN_AGE    7
    #
    # Min/max values for automatic uid selection in useradd
    #
    UID_MIN                  1000
    UID_MAX                 60000
    # System accounts
    SYS_UID_MIN               201
    SYS_UID_MAX               999
    #
    # Min/max values for automatic gid selection in groupadd
    #
    GID_MIN                  1000
    GID_MAX                 60000
    # System accounts
    SYS_GID_MIN               201
    SYS_GID_MAX               999
    .....
    CREATE_HOME    yes
    UMASK           077
    ENCRYPT_METHOD SHA512 
    

     也可使用useradd -D显示创建用户的默认配置

    [root@localhost home]# useradd -D
    GROUP=100
    HOME=/home
    INACTIVE=-1
    EXPIRE=
    SHELL=/bin/bash
    SKEL=/etc/skel
    CREATE_MAIL_SPOOL=yes
    

    修改默认的属性

    useradd -D 

    选项:

    -b,--base-dir:家目录

    -e,--expiredate:账号失效时间

    -f,--inactive:密码过期的恕限时间

    -g,--gid:在创建新的用户的时候,一般都会自动创建与其同命的组,当在创建用户的时候使用了-N/--no-user-group,也就是不创建组或者在/etc/login.defs里的USERGROUPS_ENAB变量被设置成了no,就会将默认指定的组(默认为组100,user)指定改用户的组。

    [root@localhost ~]# useradd -N no_group
    [root@localhost ~]# id no_group
    uid=1201(no_group) gid=100(users) groups=100(users)
    

     -s,--shell:用户登录的shell

     

     usermod

    NAME:修改一个用户的属性

    SYNOPSIS:usermod [options] LOGIN

    常用选项:

    -u, --uid UID:修改用户的ID为此处指定的新UID;

    -g, --gid GROUP:修改用户所属的基本组;

    -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改用户所属的附加组;原来的附加组会被覆盖;

    -a, --append:与-G一同使用,用于为用户追加新的附加组;

    -c, --comment COMMENT:修改注释信息;

    -d, --home HOME_DIR:修改用户的家目录;用户原有的文件不会被转移至新位置;

    -m, --move-home:只能与-d选项一同使用,用于将原来的家目录移动为新的家目录;

    -l, --login NEW_LOGIN:修改用户名;

    -s, --shell SHELL:修改用户的默认shell;

    -L, --lock:锁定用户密码;即在用户原来的密码字符串之前添加一个"!";

    -U, --unlock:解锁用户的密码;

    与useradd类型,这里就不在多说了

     

     userdel

    NAME:删除一个用户和其相关的文件

    SYNOPSIS:userdel [options] LOGIN

    常用选项:

    -r:删除用户时一并删除其家目录,默认不删除

    [root@localhost home]# userdel no_group
    [root@localhost home]# ll /home/
    total 0
    drwx------. 3 claire  claire 78 Jul 10 03:35 claire
    drwx------. 2 frank   frank  62 Jun 30 10:17 frank
    drwx------. 3 my_test cloud  78 Jul 10 06:23 my_home
    drwx------. 3    1201 users  78 Jul 10 06:49 no_group
    

     

    passwd

    NAME:修改用户的认证信息

    SYNOPSIS: passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]

    仅适用passwd,修改用户自己的密码,要输入2次,输入密码的密码为隐藏状态

    [root@localhost home]# passwd
    Changing password for user root.
    New password: 
    Retype new password: 
    passwd: all authentication tokens updated successfully.
    

    passwd  USERNAME:修改指定用户的密码,一般只用管理员root才可以修改

    常用选项:

    -l,-u:锁定和解锁用户

    -d:清除用户密码

    -e DATE:账户失效时间,日期,也可以使用1970年1月1日到现在的天数,试过不可用,如果兄弟试了可用,麻烦告知,可以通过设置/etc/default/useradd的EXPIRE的day数,默认不设置,当设置为"99999"时,创建账户Never_user默认账户失效时间就被设为了"99999",也可以使用后面的命令chage,后面再说!

    [root@localhost home]# cat /etc/default/useradd 
    # useradd defaults file
    GROUP=100
    HOME=/home
    INACTIVE=-1
    EXPIRE=99999
    SHELL=/bin/bash
    SKEL=/etc/skel
    CREATE_MAIL_SPOOL=yes
    [root@localhost home]# useradd Never_user
    [root@localhost home]# tail -1 /etc/shadow   #用户失效时间被设置为了99999
    Never_user:!!:0:0:99999:7::99999:
    

    -i DAYS:密码过期的恕限时间

    -n DAYS:密码的最短使用期限;

    -x DAYS:密码的最长使用期限;

    -w DAYS:警告期限;

    以上亲测(除-e之外)均可设置,

    --stdin:标准输入,避免重复输入2次密码

    使用方法:

    [root@localhost home]# echo "Never_user" | passwd --stdin Never_user
    Changing password for user Never_user.
    passwd: all authentication tokens updated successfully.
    [root@localhost home]# tail -1 /etc/shadow
    Never_user:$6$vogq3txX$7pcR5l4sb6YMRbE9CK2gNg2ZR12tCeqdgMWb3vmhlZmcnw2hfgjozcSellI7w7QLTHoQpuik1EGFkAn.74py30:17357:0:99999:7::99999:
    

     

    gpasswd

    NAME:可以设置组密码

    SYNOPSIS:gpasswd [option] group

    常用选项:

    -a USERNAME:向组中添加用户

    -d USERNAME:从组中移除用户

    比如我们将用户"Never_user"添加到组"cloud"中

    [root@localhost home]# gpasswd -a Never_user cloud
    Adding user Never_user to group cloud
    [root@localhost home]# tail -3 /etc/group
    my_group:x:1002:my_test
    cloud:x:1003:Never_user
    Never_user:x:1201:
    [root@localhost home]# 
    

     

    newgrp

    NAME:临时切换基本组

    SYNOPSIS:newgrp [-] [group]

    常用选项:

    -:会模拟用户重新登录以实现初始化其工作环境,返回以前的状态,是用exit退出

    #我们切换到Never_user下,Never_user基本组为Never_user和cloud
    [Never_user@localhost ~]$ id
    uid=1201(Never_user) gid=1201(Never_user) groups=1201(Never_user),1003(cloud) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
    [Never_user@localhost ~]$ touch test.txt
    [Never_user@localhost ~]$ ll     #我们可以看见创建的文件的组为Never
    total 0
    -rw-rw-r--. 1 Never_user Never_user 0 Jul 10 08:07 test.txt
    [Never_user@localhost ~]$ newgrp - cloud   #切换为组cloud
    [Never_user@localhost ~]$ 
    [Never_user@localhost ~]$ touch test1.txt   #test1文件的用户组为cloud
    [Never_user@localhost ~]$ ll
    total 0
    -rw-r--r--. 1 Never_user cloud      0 Jul 10 08:07 test1.txt
    -rw-rw-r--. 1 Never_user Never_user 0 Jul 10 08:07 test.txt
    

     

    chage

    NAME:修改用户密码的过期信息

    SYNOPSIS:chage [options] LOGIN

    常用选项:

    -d:修改最后一次修改密码时间

    -E:修改用户失效时间

    -I:修改密码过期怒限时间

    -W:修改告警天数

    -m:修改密码最小使用天数

    -M:修改密码最长使用天数

    举个例子:修改Never_user账户失效的时间为2017年07月30日

    [root@localhost home]# chage  -E  2017-07-30 Never_user
    [root@localhost home]# tail -1 /etc/shadow   #2017年07月30日,自动转换为了从1970年1月1日到2017年07月30日的天数
    Never_user:$6$vogq3txX$7pcR5l4sb6YMRbE9CK2gNg2ZR12tCeqdgMWb3vmhlZmcnw2hfgjozcSellI7w7QLTHoQpuik1EGFkAn.74py30:17357:0:99999:7::17377:
    

     

    id

    NAME:显示真的和有效的用户和组ID

    SYNOPSIS:id [OPTION]... [USER]

    常用选项:

    -u: 仅显示有效的UID

    -g: 仅显示用户的基本组ID

    -G:仅显示用户所属的所有组的ID

    [root@localhost home]# id frank
    uid=1000(frank) gid=1000(frank) groups=1000(frank)
    [root@localhost home]# id -u frank
    1000
    [root@localhost home]# id -g frank
    1000
    [root@localhost home]# id -G frank
    1000
    

     

     su

    NAME:切换用户

    SYNOPSIS:su [options...] [-] [user [args...]]

    登录式时切换,会通过读取目标用户的配置文件来重新初始化

    su - USERNAME

    非登录式时切换,不会读取目的用户的配置文件进行初始化

    su USERNAME

    管理员可以无密码切换至其他任何用户

    -c  'COMMADN':仅以指定用户的身份运行此处制定的命令

    [root@localhost home]# su -c "whoami" Never_user
    Never_user
    

     

    用户和组管理常用命令

     作为一个管理员,我们可以增删用户、增删组、修改用户和组属性,下面我们就来介绍常用的用户和组管理命令。

     groupadd

    NAME:创建一个新的组

    SYNOPSIS:groupadd [options] group

    常用选项:

    -g GID:指定GID,默认是上一个组的GID 1

    -r:创建系统组

    举例如下:

    [[email protected] ~]# groupadd my_group
    [[email protected] ~]# tail -2 /etc/group
    claire:x:1001:
    my_group:x:1002:    #默认上一个组号加一,注意必须是同类型的组,这里都位登录用户组
    [[email protected] ~]# groupadd -g 1500 cloud    #指定GID为1500
    [[email protected] ~]# tail -2 /etc/group
    my_group:x:1002:
    cloud:x:1500:    #GID被指定为1500
    [[email protected] ~]# groupadd -r my_sys    #创建系统用户组 my_sys
    [[email protected] ~]# tail -2 /etc/group
    cloud:x:1500:
    my_sys:x:983:    #系统用户组的GID为983
    

     

     groupmod

    NAME:修改组的属性

    SYNOPSIS:groupmod [options] GROUP

    常用选项:

    -g GID:修改GID

    -n new_name:修改组名

    举例如下:

    [[email protected] ~]# tail -3 /etc/group
    my_group:x:1002:
    cloud:x:1500:
    my_sys:x:983:
    [[email protected] ~]# groupmod -g 1003 cloud    #修改GID为1003
    [[email protected] ~]# tail -3 /etc/group
    my_group:x:1002:
    cloud:x:1003:
    my_sys:x:983:
    [[email protected] ~]# groupmod -n  my_system my_sys    #将组名my_sys修改为my_system
    [[email protected] ~]# tail -3 /etc/group
    my_group:x:1002:
    cloud:x:1003:
    my_system:x:983:
    

     

    groupdel

    NAME:删除一个组

    SYNOPSIS:groupdel [options] GROUP

    举例如下:

    [[email protected] ~]# tail -3 /etc/group
    my_group:x:1002:
    cloud:x:1003:
    my_system:x:983:
    [[email protected] ~]# groupdel my_system   #删除系统组my_system
    [[email protected] ~]# tail -3 /etc/group
    claire:x:1001:
    my_group:x:1002:
    cloud:x:1003:
    

     

    useradd

    NAME:创建一个用户或者更新用户的信息

    SYNOPSIS:useradd [options] LOGIN

                           useradd -D

                           useradd -D [options]

    常用选项:

    -u:--uid UID:指定UID

    -g:--gid GROUP:指定基本组,此组得事先存在

    -G:--groups GROUP1[,GROUP2,...[,GROUPN]]]:指定用户所属的附加组,多个组之间用逗号分隔

    -c:--comment COMMENT:指明注释信息

    -d:--home HOME_DIR:指定的路径为用户的家目录:通过复制/etc/skel此目录并重命名实现,指定的家目录路径如果事先存在,则不                                            会为用户复制环境配置文件

    -s:--shell SHELL:指定用户的默认shell,可用所有的shell存放在/etc/shells下

    -r:--system:创建系统用户

    权力及客商,linux相识相知。举个例子

    创建一个组ID为1200,基本组为cloud(已存在),附加组为"my_group",注释信息为"my_test",家目录为"/home/my_home",shell为csh,用户名为my_test的用户

    [[email protected] ~]# useradd -u 1200 -g cloud -G my_group -c "my_test" -d /home/my_home  -s /bin/csh my_test 
    [[email protected] home]# id my_test    id命令后面会讲到
    uid=1200(my_test) gid=1003(cloud) groups=1003(cloud),1002(my_group)
    [[email protected] home]# 
    [[email protected] home]# tail -1 /etc/passwd
    my_test:x:1200:1003:my_test:/home/my_home:/bin/csh
    [[email protected] home]# tail -3 /etc/group
    claire:x:1001:
    my_group:x:1002:my_test
    cloud:x:1003:
    [[email protected] home]# ll -a  /home/my_home/
    total 12
    drwx------. 3 my_test cloud  78 Jul 10 06:23 .
    drwxr-xr-x. 5 root    root   48 Jul 10 06:23 ..
    -rw-r--r--. 1 my_test cloud  18 Aug  2  2016 .bash_logout
    -rw-r--r--. 1 my_test cloud 193 Aug  2  2016 .bash_profile
    -rw-r--r--. 1 my_test cloud 231 Aug  2  2016 .bashrc
    drwxr-xr-x. 4 my_test cloud  39 Jul  1 07:56 .mozilla
    

     注意:创建用户时的默认设定配置文件为/etc/login.defs如:

    PASS_MAX_DAYS    99999
    PASS_MIN_DAYS    0
    PASS_MIN_LEN    5
    PASS_WARN_AGE    7
    #
    # Min/max values for automatic uid selection in useradd
    #
    UID_MIN                  1000
    UID_MAX                 60000
    # System accounts
    SYS_UID_MIN               201
    SYS_UID_MAX               999
    #
    # Min/max values for automatic gid selection in groupadd
    #
    GID_MIN                  1000
    GID_MAX                 60000
    # System accounts
    SYS_GID_MIN               201
    SYS_GID_MAX               999
    .....
    CREATE_HOME    yes
    UMASK           077
    ENCRYPT_METHOD SHA512 
    

     也可使用useradd -D显示创建用户的默认配置

    [[email protected] home]# useradd -D
    GROUP=100
    HOME=/home
    INACTIVE=-1
    EXPIRE=
    SHELL=/bin/bash
    SKEL=/etc/skel
    CREATE_MAIL_SPOOL=yes
    

    修改默认的属性

    useradd -D 

    选项:

    -b,--base-dir:家目录

    -e,--expiredate:账号失效时间

    -f,--inactive:密码过期的恕限时间

    -g,--gid:在创建新的用户的时候,一般都会自动创建与其同命的组,当在创建用户的时候使用了-N/--no-user-group,也就是不创建组或者在/etc/login.defs里的USERGROUPS_ENAB变量被设置成了no,就会将默认指定的组(默认为组100,user)指定改用户的组。

    [[email protected] ~]# useradd -N no_group
    [[email protected] ~]# id no_group
    uid=1201(no_group) gid=100(users) groups=100(users)
    

     -s,--shell:用户登录的shell

     

     usermod

    NAME:修改一个用户的属性

    SYNOPSIS:usermod [options] LOGIN

    常用选项:

    -u, --uid UID:修改用户的ID为此处指定的新UID; -g, --gid GROUP:修改用户所属的基本组; -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改用户所属的附加组;原来的附加组会被覆盖; -a, --append:与-G一同使用,用于为用户追加新的附加组; -c, --comment COMMENT:修改注释信息; -d, --home HOME_DIR:修改用户的家目录;用户原有的文件不会被转移至新位置; -m, --move-home:只能与-d选项一同使用,用于将原来的家目录移动为新的家目录; -l, --login NEW_LOGIN:修改用户名; -s, --shell SHELL:修改用户的默认shell; -L, --lock:锁定用户密码;即在用户原来的密码字符串之前添加一个"!"; -U, --unlock:解锁用户的密码;

    与useradd类型,这里就不在多说了

     

     userdel

    NAME:删除一个用户和其相关的文件

    SYNOPSIS:userdel [options] LOGIN

    常用选项:

    -r:删除用户时一并删除其家目录,默认不删除

    [[email protected] home]# userdel no_group
    [[email protected] home]# ll /home/
    total 0
    drwx------. 3 claire  claire 78 Jul 10 03:35 claire
    drwx------. 2 frank   frank  62 Jun 30 10:17 frank
    drwx------. 3 my_test cloud  78 Jul 10 06:23 my_home
    drwx------. 3    1201 users  78 Jul 10 06:49 no_group
    

     

    passwd

    NAME:修改用户的认证信息

    SYNOPSIS: passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]

    仅适用passwd,修改用户自己的密码,要输入2次,输入密码的密码为隐藏状态

    [[email protected] home]# passwd
    Changing password for user root.
    New password: 
    Retype new password: 
    passwd: all authentication tokens updated successfully.
    

    passwd  USERNAME:修改指定用户的密码,一般只用管理员root才可以修改

    常用选项:

    -l,-u:锁定和解锁用户

    -d:清除用户密码

    -e DATE:账户失效时间,日期,也可以使用1970年1月1日到现在的天数,试过不可用,如果兄弟试了可用,麻烦告知,可以通过设置/etc/default/useradd的EXPIRE的day数,默认不设置,当设置为"99999"时,创建账户Never_user默认账户失效时间就被设为了"99999",也可以使用后面的命令chage,后面再说!

    [[email protected] home]# cat /etc/default/useradd 
    # useradd defaults file
    GROUP=100
    HOME=/home
    INACTIVE=-1
    EXPIRE=99999
    SHELL=/bin/bash
    SKEL=/etc/skel
    CREATE_MAIL_SPOOL=yes
    [[email protected] home]# useradd Never_user
    [[email protected] home]# tail -1 /etc/shadow   #用户失效时间被设置为了99999
    Never_user:!!:0:0:99999:7::99999:
    

    -i DAYS:密码过期的恕限时间

    -n DAYS:密码的最短使用期限; -x DAYS:密码的最长使用期限; -w DAYS:警告期限;

    以上亲测(除-e之外)均可设置,

    --stdin:标准输入,避免重复输入2次密码

    使用方法:

    [[email protected] home]# echo "Never_user" | passwd --stdin Never_user
    Changing password for user Never_user.
    passwd: all authentication tokens updated successfully.
    [[email protected] home]# tail -1 /etc/shadow
    Never_user:$6$vogq3txX$7pcR5l4sb6YMRbE9CK2gNg2ZR12tCeqdgMWb3vmhlZmcnw2hfgjozcSellI7w7QLTHoQpuik1EGFkAn.74py30:17357:0:99999:7::99999:
    

     

    gpasswd

    NAME:可以设置组密码

    SYNOPSIS:gpasswd [option] group

    常用选项:

    -a USERNAME:向组中添加用户

    -d USERNAME:从组中移除用户

    比如我们将用户"Never_user"添加到组"cloud"中

    [[email protected] home]# gpasswd -a Never_user cloud
    Adding user Never_user to group cloud
    [[email protected] home]# tail -3 /etc/group
    my_group:x:1002:my_test
    cloud:x:1003:Never_user
    Never_user:x:1201:
    [[email protected] home]# 
    

     

    newgrp

    NAME:临时切换基本组

    SYNOPSIS:newgrp [-] [group]

    常用选项:

    -:会模拟用户重新登录以实现初始化其工作环境,返回以前的状态,是用exit退出

    #我们切换到Never_user下,Never_user基本组为Never_user和cloud
    [[email protected] ~]$ id
    uid=1201(Never_user) gid=1201(Never_user) groups=1201(Never_user),1003(cloud) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
    [[email protected] ~]$ touch test.txt
    [[email protected] ~]$ ll     #我们可以看见创建的文件的组为Never
    total 0
    -rw-rw-r--. 1 Never_user Never_user 0 Jul 10 08:07 test.txt
    [[email protected] ~]$ newgrp - cloud   #切换为组cloud
    [[email protected] ~]$ 
    [[email protected] ~]$ touch test1.txt   #test1文件的用户组为cloud
    [[email protected] ~]$ ll
    total 0
    -rw-r--r--. 1 Never_user cloud      0 Jul 10 08:07 test1.txt
    -rw-rw-r--. 1 Never_user Never_user 0 Jul 10 08:07 test.txt
    

     

    chage

    NAME:修改用户密码的过期信息

    SYNOPSIS:chage [options] LOGIN

    常用选项:

    -d:修改最后一次修改密码时间

    -E:修改用户失效时间

    -I:修改密码过期怒限时间

    -W:修改告警天数

    -m:修改密码最小使用天数

    -M:修改密码最长使用天数

    举个例子:修改Never_user账户失效的时间为2017年07月30日

    [[email protected] home]# chage  -E  2017-07-30 Never_user
    [[email protected] home]# tail -1 /etc/shadow   #2017年07月30日,自动转换为了从1970年1月1日到2017年07月30日的天数
    Never_user:$6$vogq3txX$7pcR5l4sb6YMRbE9CK2gNg2ZR12tCeqdgMWb3vmhlZmcnw2hfgjozcSellI7w7QLTHoQpuik1EGFkAn.74py30:17357:0:99999:7::17377:
    

     

    id

    NAME:显示真的和有效的用户和组ID

    SYNOPSIS:id [OPTION]... [USER]

    常用选项:

    -u: 仅显示有效的UID

    -g: 仅显示用户的基本组ID

    -G:仅显示用户所属的所有组的ID

    [[email protected] home]# id frank
    uid=1000(frank) gid=1000(frank) groups=1000(frank)
    [[email protected] home]# id -u frank
    1000
    [[email protected] home]# id -g frank
    1000
    [[email protected] home]# id -G frank
    1000
    

     

     su

    NAME:切换用户

    SYNOPSIS:su [options...] [-] [user [args...]]

    登录式时切换,会通过读取目标用户的配置文件来重新初始化

    su - USERNAME

    非登录式时切换,不会读取目的用户的配置文件进行初始化

    su USERNAME

    管理员可以无密码切换至其他任何用户

    -c  'COMMADN':仅以指定用户的身份运行此处制定的命令

    [[email protected] home]# su -c "whoami" Never_user
    Never_user
    

     

    这些信息的来源文件:/etc/passwd

     用户与组相关管理常用命令

       一、用户创建:useradd

      使用方法:useradd [options] login

      常用选项:

      -u:--uid UID:指定UID,定义在/etc/login.defs

      -g:--gid GROUP:指明用户基本组,可为组名也可以是GID

      -G: GROUP1[,GROUP2,...[,GROUPN]]]:指定用户所属的附加组,组事先存在

      -c:--comment COMMENT:用户注释信息

      -d:/PATH/TO/ HOME_DIR:指定的路径为用户的家目录:通过复制/etc/skel此目录并重命名实现,指定的家目录路径如果事先存在,则不会为用户复制环境配置文件

      -s:--shell SHELL:指定用户的默认shell,可用列表存放在/etc/shells下

      -r:创建系统用户。

      :默认值设定在/etc/default/useradd中。可用 useradd -D命令查看创建用户的默认配置

      二、创建组:groupadd

      使用方法:groupadd [option]...  group_name

      常用选项:

      -g GID:指明GID号

      -r:创建系统组

      三、查看用户相关ID信息:id

      使用方法:id [OPTION]... [USER]

      常用选项:

      -u: 仅显示有效的UID

      -g: 仅显示用户的基本组ID

      -G:仅显示用户所属的所有组的ID

       四、切换用户或以其他用户身份执行命令:su

      使用方法:su [options...] [-] [user [args...]]

      切换用户方式:

        非登录式切换,不会读取目的用户的配置文件进行初始化:su USERNAME

        登录式切换,会读取目的用户配置文件,完全切换:su - USERNAME或者su -l USERNAME

     

      换身份执行命令:

      su [-] username -c  'COMMADN'

    权力及客商,linux相识相知。  五、用户加密:passwd

      使用方法:passwd[options]username:修改指定用户密码,仅root用户有权限。

      常用选项:

      -l:锁定指定用户

      -u:解锁指定用户

      -n:mindays:指定最短使用期限

      -x:maxdays:最大使用期限

      -w:warndays:提前告警期限

      -i:inactivedays:非活动期限

      从标准输入接收用户密码:echo “password” | passwd --stdin username

      六、用户属性修改:usermod

      使用方法:usermod [options] LOGIN

      常用选项:

      -u,UID:修改用户的ID为新UID;

      -g, --gid GROUP:修改用户到新基本组;

      -G,  GROUP1[,GROUP2,...[,GROUPN]]]:修改用户所属的附加组;原来的附加组会被覆盖;若保留原有,则同时使用-a选项(append)

      -s,新的默认shell

      -c,  COMMENT:新的注释信息;

      -d,  HOME_DIR:新的用户家目录;用户原有的文件不会被转移至新家目录下;若要移动则使用-m选项。

      -l, login name:新的用户名;

      -L,lock:锁定用户密码;即在用户原来的密码字符串之前添加一个"!";

      -U, --unlock:解锁用户的密码;

      七、删除用户:userdel

      使用方式:userdel [options] LOGIN

      常用选项-r:删除用户时一并删除其家目录,默认不删除

      八、组属性修改:groupmod

      使用方式:groupmod [options] GROUP

      常用选项:

      -g GID:新的GID

      -n group_name:新组名

      九、组删除:groupdel

      使用方式:groupdel GROUP

      十、组密码:gpasswd

      使用方式:gpasswd [option] group

      常用选项:

      -a USER:将user添加至指定组

      -d USER:删除用户以当前组命名的附加组

      -A USER1,USER2,...:设置有管理权限的用户列表

      十一、修改用户属性:chage

      使用方式:chage [options] LOGIN

      常用选项:

      -d:修改最后一次修改密码的时间

      -E:修改用户失效时间

      -I:修改密码过期怒限时间

      -W:修改告警天数

      -m:修改密码最小使用天数

      -M:修改密码最长使用天数

    权限的定义

     我们先任意看一下目录下的文件:

    [root@localhost ~]# ll /etc/default/
    total 12
    -rw-r--r--. 1 root root  254 Jun 30 10:19 grub
    -rw-r--r--. 1 root root 1756 Nov  4  2016 nss
    -rw-r--r--. 1 root root  124 Jul 10 07:20 useradd
    

    每一行的最左位为文件的类型,-代表普通文件,那么接下来的9为又是什么呢?

    左三位:定义了owner(属主)的权限,也就是user的

    中三位:定义了group(属组)的权限

    右三位:定义了others(其他人)的权限

     新葡亰496net 1

    进程以其发起者的身份运行,进程对文件的访问权限,取决于发起此进程的用户的权限;当使用一个进程对一个文件进行操作的时候,会对比进行的发起者是不是和文件的属主一致,如果一致,则应用属主的权限,如果不一致,则对比进程的发起者是不是属于文件的属组,如果属于则执行属组的权限,如果都不是,则只能应用其他人的权限。用户也只能修改那些属主是自己的那些文件。

    那么rwx分别代表什么呢?

    r:readable,可读

    w:writable,可写

    x:excutable,可执行

    rwx对文件和目录的操作是不同的:

    新葡亰496net,对文件:

    r:可获取该文件的数据

    w:可修改文件的数据

    x:该文件可以执行

    对目录:

    r:可以使用ls命令回去其下的所有文件的列表,如果只有r,则只能看到目录下的文件名列表

    w:可修改此文件目录下的文件列表,就是可以删除和创建文件,前提必须有x的权限,如果只有w,不能干任何事

    x:且可使用ls -l来获取所有文件的详细属性信息,前提必须是有r的权限,如果只有x,只能cd到目录下

     
    权限与二进制和八进制的对应关系表

     新葡亰496net 2

     

    权限的定义

     我们先任意看一下目录下的文件:

    [[email protected] ~]# ll /etc/default/
    total 12
    -rw-r--r--. 1 root root  254 Jun 30 10:19 grub
    -rw-r--r--. 1 root root 1756 Nov  4  2016 nss
    -rw-r--r--. 1 root root  124 Jul 10 07:20 useradd
    

    每一行的最左位为文件的类型,-代表普通文件,那么接下来的9为又是什么呢?

    左三位:定义了owner(属主)的权限,也就是user的

    中三位:定义了group(属组)的权限

    右三位:定义了others(其他人)的权限

     新葡亰496net 3

    进程以其发起者的身份运行,进程对文件的访问权限,取决于发起此进程的用户的权限;当使用一个进程对一个文件进行操作的时候,会对比进行的发起者是不是和文件的属主一致,如果一致,则应用属主的权限,如果不一致,则对比进程的发起者是不是属于文件的属组,如果属于则执行属组的权限,如果都不是,则只能应用其他人的权限。用户也只能修改那些属主是自己的那些文件。

    那么rwx分别代表什么呢?

    r:readable,可读

    w:writable,可写

    x:excutable,可执行

    rwx对文件和目录的操作是不同的:

    对文件:

    r:可获取该文件的数据

    w:可修改文件的数据

    x:该文件可以执行

    对目录:

    r:可以使用ls命令回去其下的所有文件的列表,如果只有r,则只能看到目录下的文件名列表

    w:可修改此文件目录下的文件列表,就是可以删除和创建文件,前提必须有x的权限,如果只有w,不能干任何事

    x:且可使用ls -l来获取所有文件的详细属性信息,前提必须是有r的权限,如果只有x,只能cd到目录下

     
    权限与二进制和八进制的对应关系表

     新葡亰496net 4

     

    新葡亰496net 5

    通过文件的方式增加用户

      在linux中一切皆文件,那么我们操作文件就可以自己创建出一个用户来。当然实际操作时不会这样创建用户只是用来帮助理解。

      第一步,在/etc/passwd 中创建一个用户;

    rose:x:1003:1003:/home/rose:/bin/bash
    

      第二步,在/etc/shadow增加密码等信息;

    rose:!!:17321:0:99999:7:::
    

      第三步,在/etc/group 增加主组;

    rose:x:1003:
    

      第四步,在/etc/gshadow 设置组密码信息;

    rose:!::
    

      第五步,为用户设置邮箱;

    [root@localhost /]# touch /var/spool/mail/rose
    

      第六步,设置家目录,并为家目录中增加一些隐藏文件

    [root@localhost /]# mkdir /home/rose
    [root@localhost /]# cp -r /etc/skel/.[!.]* /home/rose/
    
    [root@localhost /]# id rose
    uid=1003(rose) gid=1003(rose) groups=1003(rose)
    

     权限的管理命令

     chmod

    NAME:change file mode bits,修改文件的权限

    SYNOPSYS:

          1. chmod [OPTION]... MODE[,MODE]... FILE...

           2.chmod [OPTION]... OCTAL-MODE FILE...

           3.chmod [OPTION]... --reference=RFILE FILE...

    下面来介绍一下这三种方式,每种方式适合不同的场景

    1. chmod [OPTION]... MODE[,MODE]... FILE...

    首先我们来了解一下,在命令中使用以下字母代表相应用户类型

    u:属主

    g:属组

    o:其他人

    a:所有

    (1)可以直接将rwx直接赋值给相应的用户类型,比如:u=rwx,g=x,o= ,空代表该位没有权限

    举个例子:

    [root@localhost ~]# cd /tmp/read/
    [root@localhost read]# ll
    total 4
    -rw-r--r--. 1 root root 4 Jul 10 09:49 read.txt
    [root@localhost read]# chmod u=rwx,g=rw,o= /tmp/read/read.txt 
    [root@localhost read]# ll
    total 4
    -rwxrw----. 1 root root 4 Jul 10 09:49 read.txt
    

    (2)直接操作一类用户的一个权限位

    举个例子:

    [root@localhost read]# ll
    total 4
    -rwxrw----. 1 root root 4 Jul 10 09:49 read.txt
    [root@localhost read]# chmod u-x /tmp/read/read.txt
    [root@localhost read]# ll
    total 4
    -rw-rw----. 1 root root 4 Jul 10 09:49 read.txt
    

    2.chmod [OPTION]... OCTAL-MODE FILE...

    直接指定八进制

    举个例子:

    [root@localhost read]# chmod 777 /tmp/read/read.txt 
    [root@localhost read]# ll
    total 4
    -rwxrwxrwx. 1 root root 4 Jul 10 09:49 read.txt
    

    3.chmod [OPTION]... --reference=RFILE FILE...

    参考其他文件的权限

    [root@localhost read]# chmod --reference=/etc/passwd  /tmp/read/read.txt 
    [root@localhost read]# ll
    total 4
    -rw-r--r--. 1 root root 4 Jul 10 09:49 read.txt
    

    常用选项:

    -R:--recursive:递归修改

     

     chown

    只有管理员可以修改文件的属主和属组

    NAME:修改文件的属主和属组

    SYNOPSIS:

           chown [OPTION]... [OWNER][:[GROUP]] FILE...

           chown [OPTION]... --reference=RFILE FILE...

    举个例子:

    [root@localhost read]# ll
    total 4
    -rw-r--r--. 1 root root 4 Jul 10 09:49 read.txt
    [root@localhost read]# chown frank:frank ./read.txt 
    [root@localhost read]# ll
    total 4
    -rw-r--r--. 1 frank frank 4 Jul 10 09:49 read.txt
    

    常用选项:

    -R:如果修改目录,也想递归修改下面的文件,则是用该参数

     

    chgrp

    NAME:修改属组

    SYNOPSIS:

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

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

    其实直接使用chown就可以了

    这里补充一个内容就是umask,当我们创建一个普通文件或者目录文件的时候,都会有默认的权限,那么这个默认权限是怎么定义的呢?

    默认umask(只看后三位):

    [root@localhost read]# umask
    0022
    

    对于新建文件的权限为666-umask=644=rw-r--r--

    [root@localhost read]# touch test.txt
    [root@localhost read]# ll
    total 4
    -rw-r--r--. 1 frank frank 4 Jul 10 09:49 read.txt
    drwxr-xr-x. 2 root  root  6 Jul 10 10:36 test
    -rw-r--r--. 1 root  root  0 Jul 10 10:37 test.txt
    

    对于新建目录的权限为777-umask=755=rwxr-xr-x

    [root@localhost read]# mkdir ./test
    [root@localhost read]# ll
    total 4
    -rw-r--r--. 1 frank frank 4 Jul 10 09:49 read.txt
    drwxr-xr-x. 2 root  root  6 Jul 10 10:36 test
    

    可以使用umask MASK来设置umask,当然只对当前Shell进程有效

     

    补充命令:

    install

    NAME:复制文件并设置属性,也可以创建目录,不能复制目录和递归复制

    SYNOPSYS:

           install [OPTION]... [-T] SOURCE DEST

           install [OPTION]... SOURCE... DIRECTORY

           install [OPTION]... -t DIRECTORY SOURCE...

           install [OPTION]... -d DIRECTORY...

    和cp的用法类似,这里不再敖述,新的用法是install -d 可以创建目录

    常用选项:

    -m:设置目标文件的属性,默认属性为755

    -o:设置目标文件的属主

    -g:设置目标文件的属组

    [root@localhost read]# install -o frank -g frank /etc/fstab /tmp/
    [root@localhost read]# ll /tmp/
    total 48
    drwxr-xr-x. 2 root  root      6 Jul  7 02:44 07070244
    drwxr-xr-x. 2 root  root      6 Jul  7 02:45 07070245
    drwxr-xr-x. 2 root  root      6 Jul  7 02:53 07070253
    drwxr-xr-x. 2 root  root      6 Jul  7 01:18 a_c
    drwxr-xr-x. 2 root  root      6 Jul  7 01:18 a_d
    drwxr-xr-x. 2 root  root      6 Jul  7 01:18 b_c
    drwxr-xr-x. 2 root  root      6 Jul  7 01:18 b_d
    drwxr-xr-x. 2 root  root    279 Jul  9 00:57 conf.d
    -rwxr-xr-x. 1 frank frank     5 Jul 10 10:44 fstab
    -rw-r--r--. 1 root  root    126 Jul  9 01:22 fstab1.out
    

     

    mktemp

    NAME:创建临时的文件或者目录文件,会直接返回文件名称

    SYNOPSIS: mktemp [OPTION]... [TEMPLATE]

    TEMPLATE为:name.XXXX  name可以自定义,XXXX必须为大写的X且最少三位

    [root@localhost tmp]# mktemp case.XXX
    case.rMB
    [root@localhost tmp]# mktemp case.XXXXX
    case.HeqBH
    [root@localhost tmp]# mktemp case.XXXXX
    case.MatKC
    

    常用选项:

    -d:创建临时目录

    [root@localhost tmp]# mktemp -d case.XXXXX
    case.TGRtu
    

    新葡亰496net 6

     

     权限的管理命令

     chmod

    NAME:change file mode bits,修改文件的权限

    SYNOPSYS:

          1. chmod [OPTION]... MODE[,MODE]... FILE...        2.chmod [OPTION]... OCTAL-MODE FILE...        3.chmod [OPTION]... --reference=RFILE FILE... 下面来介绍一下这三种方式,每种方式适合不同的场景 1. chmod [OPTION]... MODE[,MODE]... FILE...

    首先我们来了解一下,在命令中使用以下字母代表相应用户类型

    u:属主

    g:属组

    o:其他人

    a:所有

    (1)可以直接将rwx直接赋值给相应的用户类型,比如:u=rwx,g=x,o= ,空代表该位没有权限

    举个例子:

    [[email protected] ~]# cd /tmp/read/
    [[email protected] read]# ll
    total 4
    -rw-r--r--. 1 root root 4 Jul 10 09:49 read.txt
    [[email protected] read]# chmod u=rwx,g=rw,o= /tmp/read/read.txt 
    [[email protected] read]# ll
    total 4
    -rwxrw----. 1 root root 4 Jul 10 09:49 read.txt
    

    (2)直接操作一类用户的一个权限位

    举个例子:

    [[email protected] read]# ll
    total 4
    -rwxrw----. 1 root root 4 Jul 10 09:49 read.txt
    [[email protected] read]# chmod u-x /tmp/read/read.txt
    [[email protected] read]# ll
    total 4
    -rw-rw----. 1 root root 4 Jul 10 09:49 read.txt
    

    2.chmod [OPTION]... OCTAL-MODE FILE...

    直接指定八进制

    举个例子:

    [[email protected] read]# chmod 777 /tmp/read/read.txt 
    [[email protected] read]# ll
    total 4
    -rwxrwxrwx. 1 root root 4 Jul 10 09:49 read.txt
    

    3.chmod [OPTION]... --reference=RFILE FILE...

    参考其他文件的权限

    [[email protected] read]# chmod --reference=/etc/passwd  /tmp/read/read.txt 
    [[email protected] read]# ll
    total 4
    -rw-r--r--. 1 root root 4 Jul 10 09:49 read.txt
    

    常用选项:

    -R:--recursive:递归修改

     

     chown

    只有管理员可以修改文件的属主和属组

    NAME:修改文件的属主和属组

    SYNOPSIS:

           chown [OPTION]... [OWNER][:[GROUP]] FILE...        chown [OPTION]... --reference=RFILE FILE...

    举个例子:

    [[email protected] read]# ll
    total 4
    -rw-r--r--. 1 root root 4 Jul 10 09:49 read.txt
    [[email protected] read]# chown frank:frank ./read.txt 
    [[email protected] read]# ll
    total 4
    -rw-r--r--. 1 frank frank 4 Jul 10 09:49 read.txt
    

    常用选项:

    -R:如果修改目录,也想递归修改下面的文件,则是用该参数

     

    chgrp

    NAME:修改属组 SYNOPSIS:        chgrp [OPTION]... GROUP FILE...        chgrp [OPTION]... --reference=RFILE FILE... 其实直接使用chown就可以了 这里补充一个内容就是umask,当我们创建一个普通文件或者目录文件的时候,都会有默认的权限,那么这个默认权限是怎么定义的呢? 默认umask(只看后三位):

    [[email protected] read]# umask
    0022
    

    对于新建文件的权限为666-umask=644=rw-r--r--

    [[email protected] read]# touch test.txt
    [[email protected] read]# ll
    total 4
    -rw-r--r--. 1 frank frank 4 Jul 10 09:49 read.txt
    drwxr-xr-x. 2 root  root  6 Jul 10 10:36 test
    -rw-r--r--. 1 root  root  0 Jul 10 10:37 test.txt
    

    对于新建目录的权限为777-umask=755=rwxr-xr-x

    [[email protected] read]# mkdir ./test
    [[email protected] read]# ll
    total 4
    -rw-r--r--. 1 frank frank 4 Jul 10 09:49 read.txt
    drwxr-xr-x. 2 root  root  6 Jul 10 10:36 test
    

    可以使用umask MASK来设置umask,当然只对当前Shell进程有效

     

    补充命令:

    install

    NAME:复制文件并设置属性,也可以创建目录,不能复制目录和递归复制

    SYNOPSYS:

           install [OPTION]... [-T] SOURCE DEST        install [OPTION]... SOURCE... DIRECTORY        install [OPTION]... -t DIRECTORY SOURCE...        install [OPTION]... -d DIRECTORY...

    和cp的用法类似,这里不再敖述,新的用法是install -d 可以创建目录

    常用选项:

    -m:设置目标文件的属性,默认属性为755

    -o:设置目标文件的属主

    -g:设置目标文件的属组

    [[email protected] read]# install -o frank -g frank /etc/fstab /tmp/
    [[email protected] read]# ll /tmp/
    total 48
    drwxr-xr-x. 2 root  root      6 Jul  7 02:44 07070244
    drwxr-xr-x. 2 root  root      6 Jul  7 02:45 07070245
    drwxr-xr-x. 2 root  root      6 Jul  7 02:53 07070253
    drwxr-xr-x. 2 root  root      6 Jul  7 01:18 a_c
    drwxr-xr-x. 2 root  root      6 Jul  7 01:18 a_d
    drwxr-xr-x. 2 root  root      6 Jul  7 01:18 b_c
    drwxr-xr-x. 2 root  root      6 Jul  7 01:18 b_d
    drwxr-xr-x. 2 root  root    279 Jul  9 00:57 conf.d
    -rwxr-xr-x. 1 frank frank     5 Jul 10 10:44 fstab
    -rw-r--r--. 1 root  root    126 Jul  9 01:22 fstab1.out
    

     

    mktemp

    NAME:创建临时的文件或者目录文件,会直接返回文件名称

    SYNOPSIS: mktemp [OPTION]... [TEMPLATE]

    TEMPLATE为:name.XXXX  name可以自定义,XXXX必须为大写的X且最少三位

    [[email protected] tmp]# mktemp case.XXX
    case.rMB
    [[email protected] tmp]# mktemp case.XXXXX
    case.HeqBH
    [[email protected] tmp]# mktemp case.XXXXX
    case.MatKC
    

    常用选项:

    -d:创建临时目录

    [[email protected] tmp]# mktemp -d case.XXXXX
    case.TGRtu
    

    新葡亰496net 7

     那今天就写到这里了,如果有误之处,还望各位大佬多多指教。

     

    linux系统是多用户(Multi-users)和多任务(Multi-tasks)的,这样的目的是为了一台linux主机可...

    linux权限与用户

    新葡亰496net 8

    特殊权限

    SUID

    默认情况下,用户发起的进程,进程的属主是其发起者1,因此,以发起者的身份在运行

    作用:用户运行某程序时,如果此程序拥有SUID权限,那么程序运行为进程时,进程的属主不是发起者,而是程序文件自己的属主

    修改SUID的权限:

    chmod u( |-)s  FILE

    展现的位置:属主的执行权限位,如果属主原本有执行权限,显示为小写s,否则为大写S

    举例:passwd这个命令对/etc/shadow,/etc/shadow保存的是用户的密码等信息,默认只有管理员可以修改,但是passwd这个命令普通的用户也可以用来修改密码,因为当用户执行passwd这个命令的时候,进程的发起者不是用户本身,而是管理员root

    [root@localhost ~]# ls -l /usr/bin/passwd
    -rwsr-xr-x. 1 root root 27832 6月  10 2014 /usr/bin/passwd
    

     

    SGID

    作用:当目录属组有写权限的时候,且有SGID权限时,那么所有属于此目录的属组,且以属组身份在此目录中新建文件或目录时,新文件的属组不是用户的基本组,而是此目录的属组。

    管理文件的SGID:

    chmod g |-s FILE

    展现位置:属组的执行权限位,如果属组原本就有执行权限,显示为小写s,否则为大写S

    举例

    修改/tmp/myper的权限:

    [root@localhost tmp]# chmod g s  ./myper/
    [root@localhost tmp]# ls -ld ./myper/
    drwxrwsr-x. 2 root root 76 7月  23 09:28 ./myper/
    

    给用户添加frank的附件组root

    [root@localhost tmp]# usermod  -aG root frank
    [root@localhost tmp]# id frank
    uid=1000(frank) gid=1000(frank) 组=1000(frank),0(root)
    

    su到frank用户下,在/tmp/myper下创建新文件myer5,这时我们会看到文件myper5的属组并不是frank,而是其属组

    [root@localhost tmp]# su - frank
    上一次登录:日 7月 23 09:26:49 CST 2017pts/1 上
    [frank@localhost ~]$ touch /tmp/myper/myper5
    [frank@localhost ~]$ ls -l /tmp/myper/
    总用量 16
    -rw---x--x. 1 root  root 7 7月  23 07:57 myper1
    -r---w--w-. 1 root  root 7 7月  23 07:57 myper2
    ---xr-xr-x. 1 root  root 7 7月  23 07:57 myper3
    -rwxr-xr-x. 1 root  root 7 7月  23 07:57 myper4
    -rw-rw-r--. 1 frank root 0 7月  23 09:28 myper5
    

     

    sticky

    作用:对于属组或全局可写的目录,组内所有的用户或系统的所有用户对在此目录中都能创建或删除自己的文件,如果此类目录设置了sticky权限,则每个用户能创建新文件,且只能删除自己的

    管理sticky:

    chmod o |-t FILE

    展现位置:其他用户的执行权限位,如果其他用户原本就有执行权限,为小写t,否则为大写T

    举例:/tmp目录本身就是有sticky权限的,每个用户能在其目录下创建文件且只能删除自己的文件

    我们也可以使用八进制的方式进行权限的修改:

    新葡亰496net 9

    赋权方式,在默认的三位八进制左侧再加一位八进制数字如:

    chmod  2755  FILE
    

     

     

    用户及用户组

    用户UID

    • 管理员:root, 0
    • 普通用户:1-65535
      • 系统用户:1-499, 1-999(centos7) 作用:对守护进程获取资源进行权限分配
      • 登录用户:500 , 1000

    用户组GID

    • 管理员组:root, 0
    • 普通组:
      • 系统组:1-499, 1-999(centos7)
      • 普通组:500 , 1000

    Linux安全上下文

    • 运行中的程序:进程 (process)
    • 以进程发起者的身份运行:
    • 进程所能够访问的所有资源的权限取决于进程的发起者的身份;

    Linux组的类别:

    • 用户的基本组(主组):组名同用户名,且仅包含一个用户:私有组
    • 用户的附加组(额外组):

    Linux用户和组相关的配置文件:

    • /etc/passwd:用户及其属性信息(名称、UID、基本组ID等等);
    • /etc/group:组及其属性信息;
    • /etc/shadow:用户密码及其相关属性;
    • /etc/gshadow:组密码及其相关属性;

    文件的权限

      文件权限针对的对象是:

      owner:属主,u

      group:属组,g

      other:其他,o

      对于文件而言:

      文件可读(r):可以查看其内容。

      文件可写(w):可修改文件内容。

      文件可执行(x):可以把文件提请内核启动为一个进程。

      对于目录而言:

      目录可读(r):可以使用ls查看目录中文件列表

      目录可写(w):可在此目录中创建或删除文件

      目录可执行(x):可以使用ls-l查看目录中文件,可以cd进目录。

    文件的访问控制列表facl

    facl:file access control lists

    在原来的ugo之外,还可以给用户和组另外的赋权

     

    getfacl:可以查看是否有facl

    [root@localhost myper]# getfacl myper1
    # file: myper1
    # owner: root
    # group: root
    user::rw-
    group::--x
    other::--x
    

    setfacl:设置facl

    赋权给用户:

    setfacl -m u:USERNAME:MODE  FILE

    赋权给组:

    setfacl  -m g:GROUPNAME:MODE FILE

    撤销赋权:

    setfacl -x  u:USERNAME FILE

    setfacl -x  g:GROUPNAME FILE

    举例:给用户centos对/tmp/myper/myer1的读写权限,centos的附件组没有root

    [root@localhost myper]# setfacl -m u:centos:rw myper1
    

     查看其权限,对权限匹配时,先会查看是否为属主,若不是会匹配facl的权限

    [root@localhost myper]# getfacl /tmp/myper/myper1 
    getfacl: Removing leading '/' from absolute path names
    # file: tmp/myper/myper1
    # owner: root
    # group: root
    user::rw-
    user:centos:rw-
    group::--x
    mask::rwx
    other::--x
    

     su到centos用户下,查看文件

    [root@localhost myper]# su - centos
    上一次登录:日 7月 23 09:51:30 CST 2017pts/1 上
    [centos@localhost ~]$ cat /tmp/myper/myper1
    myper1
    [centos@localhost ~]$ ll /tmp/myper/
    总用量 16
    -rw-rwx--x  1 root  root 7 7月  23 07:57 myper1
    -r---w--w-. 1 root  root 7 7月  23 07:57 myper2
    ---xr-xr-x. 1 root  root 7 7月  23 07:57 myper3
    -rwxr-xr-x. 1 root  root 7 7月  23 07:57 myper4
    -rw-rw-r--. 1 frank root 0 7月  23 09:28 myper5
    

     

    小练习

    1.创建组distro,其GID为2016

    新葡亰496net 10新葡亰496net 11

    [root@localhost ~]# groupadd -g 2016 distro
    [root@localhost ~]# tail -1 /etc/group
    distro:x:2016:
    

    View Code

    2.创建用户mandriva,其ID号为1005,基本组为distro

    新葡亰496net 12新葡亰496net 13

    [root@localhost ~]# useradd mandirva -u 1005 -g distro
    [root@localhost ~]# 
    [root@localhost ~]# id mandirva
    uid=1005(mandirva) gid=2016(distro) 组=2016(distro)
    

    View Code

    3.创建用户mageia,其ID号为1100,家目录为/home/linux

    新葡亰496net 14新葡亰496net 15

    [root@localhost ~]# useradd mageia -u 1100 -d /home/linux
    [root@localhost ~]# 
    [root@localhost ~]# id mageia
    uid=1100(mageia) gid=1100(mageia) 组=1100(mageia)
    [root@localhost ~]# 
    [root@localhost ~]# cd /home/
    [root@localhost home]# ll
    总用量 4
    drwx------.  5 centos   centos  128 7月  23 09:53 centos
    drwx------. 16 frank    frank  4096 7月  23 09:28 frank
    drwx------.  3 Frank    Frank    78 7月  18 13:15 Frank
    drwx------.  3 hadoop   hadoop   78 7月  23 08:16 hadoop
    drwx------.  3 mageia   mageia   78 7月  23 18:55 linux
    drwx------.  3 mandirva distro   78 7月  23 18:54 mandirva
    drwx------.  5 hadoop   hadoop  128 7月  23 00:08 mygrp
    

    View Code

    4.给用户mageia添加密码,其密码为mageedu

    新葡亰496net 16新葡亰496net 17

    [root@localhost home]# echo "mageedu" | passwd --stdin mageia
    更改用户 mageia 的密码 。
    passwd:所有的身份验证令牌已经成功更新。
    

    View Code

    5.删除mandriva,但保留其家目录

    新葡亰496net 18新葡亰496net 19

    [root@localhost home]# userdel mandirva
    

    View Code

    6.创建用户slackware,其ID号为2002,基本组为distro,附加组peguin

    新葡亰496net 20新葡亰496net 21

    [root@localhost home]# groupadd peguin
    [root@localhost home]# useradd slackware -u 2002 -g distro -G peguin
    [root@localhost home]# id slackware
    uid=2002(slackware) gid=2016(distro) 组=2016(distro),2017(peguin)
    

    View Code

    7.修改slackware的默认shell为/bin/tcsh

    新葡亰496net 22新葡亰496net 23

    [root@localhost home]# usermod -s /bin/tcsh slackware 
    [root@localhost home]# tail -2 /etc/passwd
    mageia:x:1100:1100::/home/linux:/bin/bash
    slackware:x:2002:2016::/home/slackware:/bin/tcsh
    

    View Code

    8.为用户slackware新增附加组admins

    新葡亰496net 24新葡亰496net 25

    [root@localhost home]# groupadd admins
    [root@localhost home]# usermod -aG admins slackware
    [root@localhost home]# id slackware
    uid=2002(slackware) gid=2016(distro) 组=2016(distro),2017(peguin),2018(admins)
    

    View Code

     9.复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其他用户均没有任何访问权限

    新葡亰496net 26新葡亰496net 27

    mkdict  mkdir   
    [root@localhost ~]# mkdir /home/tuser1
    [root@localhost ~]# cp /etc/skel/.*  /home/tuser1
    [root@localhost ~]# chmod -R g=,o= /home/tuser1/
    

    View Code

    10.编辑/etc/group文件,添加组hadoop

    新葡亰496net 28新葡亰496net 29

    [root@localhost tuser1]# tail -1  /etc/group   #使用vim
    hadoop:x:2019:
    

    View Code

    11.手动编辑/etc/passwd文件新增一行,添加用户hadoop,其基本组ID为hadoop组的ID号,其家目录为/home/hadoop

    新葡亰496net 30新葡亰496net 31

    [root@localhost ~]# tail -1 /etc/passwd
    hadoop:x:2003:2019::/home/hadoop:/bin/bash
    

    View Code

    12.复制/etc/skel目录为/home/hadoop,要求修改hadoop目录的属组和其他用户没有任何访问权限

    新葡亰496net 32新葡亰496net 33

    [root@localhost hadoop]# cp -r /etc/skel  /home/hadoop
    [root@localhost home]# chmod g=,o= hadoop/
    [root@localhost home]# ll
    总用量 4
    drwx------.  5 centos    centos  128 7月  23 09:53 centos
    drwx------. 16 frank     frank  4096 7月  23 09:28 frank
    drwx------.  3 Frank     Frank    78 7月  18 13:15 Frank
    drwx------.  3 root      root     78 7月  23 19:36 hadoop
    drwx------.  3 mageia    mageia   78 7月  23 18:55 linux
    drwx------.  3      1005 distro   78 7月  23 18:54 mandirva
    drwx------.  5      1003   1003  128 7月  23 00:08 mygrp
    drwx------.  3 slackware distro   78 7月  23 18:59 slackware
    drwx------.  2 root      root     62 7月  23 19:17 tuser1
    

    View Code

    13.修改/home/hadoop目录及其内部所有文件的属主为hadoop,属组为hadoop

    新葡亰496net 34新葡亰496net 35

    [root@localhost home]# chown -R hadoop:hadoop ./hadoop/
    [root@localhost home]# ll
    总用量 4
    drwx------.  5 centos    centos  128 7月  23 09:53 centos
    drwx------. 16 frank     frank  4096 7月  23 09:28 frank
    drwx------.  3 Frank     Frank    78 7月  18 13:15 Frank
    drwx------.  3 hadoop    hadoop   78 7月  23 19:36 hadoop
    drwx------.  3 mageia    mageia   78 7月  23 18:55 linux
    drwx------.  3      1005 distro   78 7月  23 18:54 mandirva
    drwx------.  5      1003   1003  128 7月  23 00:08 mygrp
    drwx------.  3 slackware distro   78 7月  23 18:59 slackware
    drwx------.  2 root      root     62 7月  23 19:17 tuser1
    [root@localhost home]# ll -a  ./hadoop/
    总用量 12
    drwx------.  3 hadoop hadoop  78 7月  23 19:36 .
    drwxr-xr-x. 11 root   root   133 7月  23 19:36 ..
    -rw-r--r--.  1 hadoop hadoop  18 7月  23 19:36 .bash_logout
    -rw-r--r--.  1 hadoop hadoop 193 7月  23 19:36 .bash_profile
    -rw-r--r--.  1 hadoop hadoop 231 7月  23 19:36 .bashrc
    drwxr-xr-x.  4 hadoop hadoop  39 7月  23 19:36 .mozilla
    

    View Code

     

    更新历史:

    2017-7-23-10:02:更新了特殊权限及文件访问控制列表facl;

     

    加密机制

    相同密码的不同用户其加密串也不同

    [root@senlong tmp]# useradd tom
    [root@senlong tmp]# useradd jerry
    [root@senlong tmp]# echo 'redhat' | passwd --stdin tom
    Changing password for user tom.
    passwd: all authentication tokens updated successfully.
    [root@senlong tmp]# echo 'redhat' | passwd --stdin jerry
    Changing password for user jerry.
    passwd: all authentication tokens updated successfully.
    [root@senlong tmp]# tail -n 2 /etc/shadow
    tom:$6$iZ29ET3u$eAxeb87ezlGjkcNPHkvHMievPk.57AinM0vpkI92yxcPY649kWg.2pgGTR01tBeAUDe7wLyWHx9DHVRHdxEeY.:17182:0:99999:7:::
    jerry:$6$aSOCF9UE$WYjJi4V6f0hHfx2FkfDWEwFgeROYLrio4e2rhjYdKsI5dtUgCkXmgwCVJ8zvIQ4r/33addrH/5j/o4Mi1S5Yg0:17182:0:99999:7:::
    

    权限管理类命令

      一、修改文件权限(chmod)

      使用方法:

      1. chmod [OPTION]... MODE[,MODE]... FILE...

      可以直接将rwx直接赋值给相应的用户类型:u为属主,g为属组,o为其他用户,a为所有用户(同ugo=---)

      或者直接操作一类用户的一个权限位(u x,o-r)

           2.chmod [OPTION]... OCTAL-MODE FILE...

      直接使用八进制来修改r=4,w=2,x=1.其中-R可递归修改权限。

           3.chmod [OPTION]... --reference=RFILE FILE..

      参考其他文件的权限

    查看文件权限
    [root@localhost /]# ll -lh /dj
    total 16K
    -rw-r--r-- 1 root root  51 Jun 14 10:36 hello_world.py
    -rw-r--r-- 1 root root  92 Jun 15 10:00 name_daxiaoxie.py
    -rw-r--r-- 1 root root  84 Jun 15 09:44 name.py
    -rw-r--r-- 1 root root 359 Jul 23 02:48 test.py
    修改权限
    [root@localhost /]# chmod 775 /dj/hello_world.py 
    [root@localhost /]# ll -lh /dj
    total 16K
    -rwxrwxr-x 1 root root  51 Jun 14 10:36 hello_world.py
    -rw-r--r-- 1 root root  92 Jun 15 10:00 name_daxiaoxie.py
    -rw-r--r-- 1 root root  84 Jun 15 09:44 name.py
    -rw-r--r-- 1 root root 359 Jul 23 02:48 test.py
    使用第三种方式
    [root@localhost /]# chmod --reference=/dj/hello_world.py /dj/test.py 
    [root@localhost /]# ll -lh /dj
    total 16K
    -rwxrwxr-x 1 root root  51 Jun 14 10:36 hello_world.py
    -rw-r--r-- 1 root root  92 Jun 15 10:00 name_daxiaoxie.py
    -rw-r--r-- 1 root root  84 Jun 15 09:44 name.py
    -rwxrwxr-x 1 root root 359 Jul 23 02:48 test.py
    [root@localhost /]# 
    

      二、修改文件的属组属主(仅使用root用户)

      1.修改属主(chown)

      使用方式:chown[OPTION]...[OWNER][:[GROUP]]FILE...或使用--referrence

      chown owner|owner:group|:group file (其中:可用.替换,并且可以使用-R递归更换)

      2.修改属组(chgrp)

      chgrp[option]...group file或--referrence方式

      3.文件或目录创建时的遮罩码:umask

      file:666-umask(若某类用户权限减得结果中存在x权限则将其权限 1)

      dir:777-umask

      umask:查看当前值

      umask#:设定值

    用户和组相关命令

    用户创建:useradd

    useradd [options] LOGIN

    • -u UID: [UID_MIN, UID_MAX], 定义在/etc/login.defs
    • -g GID:指明用户所属基本组,可为组名,也可以GID;
    • -c "COMMENT":用户的注释信息;
    • -d /PATH/TO/HOME_DIR: 以指定的路径为家目录;
    • -s SHELL: 指明用户的默认shell程序,可用列表在/etc/shells文件中;
    • -G GROUP1[,GROUP2,...[,GROUPN]]]:为用户指明附加组;组必须事先存在;
    • -r: 创建系统用户
    [root@senlong tmp]# cat /etc/login.defs # 查看用户帐号限制的文件
    #
    # Min/max values for automatic uid selection in useradd
    #
    UID_MIN           500
    UID_MAX         60000
    ...
    

    组创建:groupadd

    groupadd [OPTION]... group_name

    • g GID: 指明GID号;[GID_MIN, GID_MAX]
    • r: 创建系统组

    切换用户或以其他用户身份执行命令:su

    su [options...] [-] [user [args...]]

    切换用户的方式:

    • su UserName:非登录式切换,即不会读取目标用户的配置文件;
    • su - UserName:登录式切换,会读取目标用户的配置文件;完全切换;

    Note:root su至其他用户无须密码;非root用户切换时需要密码;

    换个身份执行命令:

    su [-] UserName -c 'COMMAND'

    用户属性修改:usermod

    usermod [OPTION] login

    • -u UID: 新UID
    • -g GID: 新基本组
    • -G GROUP1[,GROUP2,...[,GROUPN]]]:新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项,表示append;
    • -s SHELL:新的默认SHELL;
    • -c 'COMMENT':新的注释信息;
    • -d HOME: 新的家目录;原有家目录中的文件不会同时移动至新的家目录;若要移动,则同时使用-m选项;
    • -l login_name: 新的名字;
    • -L: lock指定用户
    • -U: unlock指定用户
    • -e YYYY-MM-DD: 指明用户账号过期日期;
    • -f INACTIVE: 设定非活动期限;

    给用户添加密码:passwd

    passwd [OPTIONS] UserName: 修改指定用户的密码,仅root用户权限
    passwd: 修改自己的密码;

    • -l: 锁定指定用户
    • -u: 解锁指定用户
    • -n mindays: 指定最短使用期限
    • -x maxdays:最大使用期限
    • -w warndays:提前多少天开始警告
    • -i inactivedays:非活动期限;
    • --stdin:从标准输入接收用户密码;
    echo "PASSWORD" | passwd --stdin USERNAME
    

    删除用户:userdel

    userdel [OPTION]... login

    • -r: 删除用户家目录;

    组属性修改:groupmod

    groupmod [OPTION]... group

    • -n group_name: 新名字
    • -g GID: 新的GID;

    组删除:groupdel

    groupdel GROUP

    组密码:gpasswd

    gpasswd [OPTION] GROUP

    • -a user: 将user添加至指定组中;
    • -d user: 删除用户user的以当前组为组名的附加组
    • -A user1,user2,...: 设置有管理权限的用户列表

    修改用户属性:chage

    chage [OPTION]... LOGIN

    • -d LAST_DAY
    • -E, --expiredate EXPIRE_DATE
    • -I, --inactive INACTIVE
    • -m, --mindays MIN_DAYS
    • -M, --maxdays MAX_DAYS
    • -W, --warndays WARN_DAYS

    权限管理

    文件的权限主要针对三类对象进行定义:

    • owner: 属主, u
    • group: 属组, g
    • other: 其他, o

    每个文件针对每类访问者都定义了三种权限:

    • r: Readable
    • w: Writable
    • x: eXcutable

    文件:

    • r: 可使用文件查看类工具获取其内容;
    • w: 可修改其内容;
    • x: 可以把此文件提请内核启动为一个进程;

    目录:

    • r: 可以使用ls查看此目录中文件列表;
    • w: 可在此目录中创建文件,也可删除此目录中的文件;
    • x: 可以使用ls -l查看此目录中文件列表,可以cd进入此目录;

    权限用数字表示

    权限 二进制 十进制
    --- 000 0
    --x 001 1
    -w- 010 2
    -wx 011 3
    r-- 100 4
    r-x 101 5
    rw- 110 6
    rwx 111 7

    简化记忆:读(r) = 4 写(w) = 2 执行(x) = 1

    如:

    640: rw-r-----
    rwxr-xr-x: 755

    修改文件权限:chmod

    chmod [OPTION]... OCTAL-MODE FILE...

    • -R: 递归修改权限

    chmod [OPTION]... MODE[,MODE]... FILE...

    修改一类用户的所有权限:

    • u=
    • g=
    • o=
    • ug=
    • a=
    • u=,g=

    修改一类用户某位或某些位权限

    • u
    • u-

    修改文件的属主:chown

    chown [OPTION]... [OWNER][:[GROUP]] FILE...
    chown [OPTION]... --reference=RFILE FILE...

    • -R: 递归

    修改文件的属组:chgrp

    chgrp [OPTION]... GROUP FILE...
    chgrp [OPTION]... --reference=RFILE FILE...

    • -R

    umask

    文件或目录创建时的遮罩码(指定了创建文件/目录的默认权限):umask

    • FILE: 666-umask 如果某类的用户的权限减得的结果中存在x权限,则将其权限 1(仅限文件)
    • DIR: 777-umask
    [root@senlong tmp]# umask # 查看掩码
    0022
    [root@senlong tmp]# umask 3 # 修改掩码
    [root@senlong tmp]# umask
    0003
    

    本文由新葡亰496net发布于电脑系统,转载请注明出处:权力及客商,linux相识相知

    关键词: