2018-05-28 《鸟哥的Linux私房菜 基础学习篇(第四版)》 第13章 Linux 帐号管理与 ACL 权限设定 笔记

目录:linux

一、/etc/passwd 用户文件shell

二、shadow 用户密码文件
bash

三、/etc/group 群组文件服务器

四、/etc/gshadow 群组密码文件网络

五、用户命令工具

  • useradd    命令新建用户
  • passwd     命令设定新密码
  • chage     更详细的密码参数的显示与设定
  • usermod    帐号相关数据的微调
  • userdel     删除用户的相关数据
  • id       查询某人或本身的相关 UID/GID 等等的信息
  • finger     显示用户相关的信息
  • chfn      更改本身账号的相关信息
  • chsh      修改/etc/passwd文件的第段Shell

群组相关命令:测试

  • groupadd    新增群组
  • groupmod   进行 group 相关参数的修改
  • groupdel    删除群组
  • gpasswd    群组管理员功能

rhcsa7 第5题ui

六、主机的细部权限规划:ACL 的使用编码

  • dmesg | grep -i acl  #检查一下核心挂载时显示的信息
  • setfacl        #设定某个目录/文件的 ACL 规范
  • getfacl      #取得某个文件/目录的 ACL 设定项目
  • rhcsa7 d6

 

 

跟使用者帐号有关的有两个很是重要的文件,一个是管理使用者 UID/GID重要参数的 /etc/passwd ,一个则是专门管理密码相关数据的 /etc/shadow。加密

跟使用者群组有关的两个文件:/etc/group 与 /etc/gshadow。

一、/etc/passwd 用户文件

每一行都表明一个帐号,有几行就表明有几个帐号在你的系统中! 不过须要特别留意的是,里头不少帐号原本就是系统正常运做所必需要的,咱们能够简称他为系统帐号,例如 bin, daemon, adm, nobody 等等,这些帐号请不要随意的杀掉他呢!

每行有7列,每列对应的说明:

1. 帐号名称:
就是帐号啦!用来提供给对数字不太敏感的人类使用来登入系统的!须要用来对应 UID 喔。例如 root 的UID 对应就是 0 (第三字段);
2. 密码:
早期 Unix 系统的密码就是放在这字段上!可是由于这个文件的特性是全部的程序都可以读取,这样一来很容易形成密码数据被窃取, 所以后来就将这个字段的密码数据给他改放到 /etc/shadow 中了。因此这里你会看到一个『 x 』,呵呵!
3. UID:
这个就是使用者标识符啰!一般 Linux 对于 UID 有几个限制须要说给您了解一下:

id 范围 该 ID 使用者特性
0
(系统管理员)
当 UID 是 0 时,表明这个帐号是『系统管理员』! 因此当你要让其余的帐号名称
也具备 root 的权限时,将该帐号的 UID 改成 0 便可。 这也就是说,一部系统上
面的系统管理员不见得只有 root 喔! 不过,很不建议有多个帐号的 UID 是 0
啦~容易让系统管理员混乱!
1~999
(系统帐号)

保留给系统使用的 ID,其实除了 0 以外,其余的 UID 权限与特性并无不同。
默认 1000 如下的数字让给系统做为保留帐号只是一个习惯。
因为系统上面启动的网络服务或背景服务但愿使用较小的权限去运做,所以不但愿
使用 root 的身份去执行这些服务, 因此咱们就得要提供这些运做中程序的拥有者
帐号才行。这些系统帐号一般是不可登入的, 因此才会有咱们在第十章提到的
/sbin/nologin 这个特殊的 shell 存在。

根据系统帐号的由来,一般这类帐号又约略被区分为两种:
1~200:由 distributions 自行创建的系统帐号;
201~999:若用户有系统帐号需求时,可使用的帐号 UID。

1000~60000
(可登入帐号)

给 一 般 使 用 者 用 的。 事实 上 , 目 前 的 linux 核心 (3.10.x 版 ) 已 经 可 以支 持 到

4294967295 (2^32-1) 这么大的 UID 号码喔!

上面这样说明能够了解了吗?是的, UID 为 0 的时候,就是 root 呦!因此请特别留意一下你的/etc/passwd 文件!
4. GID:
这个与 /etc/group 有关!其实 /etc/group 的观念与 /etc/passwd 差很少,只是他是用来规范组名与 GID 的对应而已!GID为初始群组 (initial group) 』!也就是说,当用户一登入系统,马上就拥有这个群组的相关权限的意思。一般有效群组的做用是在新建文件。由于是初始群组, 使用者一登入就会主动取得,不须要在 /etc/group 的第四个字段写入该帐号的!

5. 用户信息说明栏:
这个字段基本上并无什么重要用途,只是用来解释这个帐号的意义而已!不过,若是您提供使用 finger 的功能时, 这个字段能够提供不少的讯息呢!本章后面的 chfn 指令会来解释这里的说明。
6. 家目录:
这是用户的家目录,以上面为例, root 的家目录在 /root ,因此当 root 登入以后,就会马上跑到 /root 目录里头啦!呵呵! 若是你有个帐号的使用空间特别的大,你想要将该帐号的家目录移动到其余的硬盘去该怎么做? 没有错!能够在这个字段进行修改呦!默认的用户家目录在 /home/yourIDname
7. Shell:
咱们在第十章 BASH 提到不少次,当用户登入系统后就会取得一个 Shell 来与系统的核心沟通以进行用户的操做任务。那为什么预设 shell 会使用 bash 呢?就是在这个字段指定的啰! 这里比较须要注意的是,有一个 shell 能够用来替代成让帐号没法取得 shell 环境的登入动做!那就是 /sbin/nologin 这个东西!这也能够用来制做纯 pop 邮件帐号者的数据呢!

 

二、shadow 用户密码文件

一样以『:』做为分隔符,共9个字段:

1. 帐号名称:
因为密码也须要与帐号对应啊~所以,这个文件的第一栏就是帐号,必需要与 /etc/passwd 相同才行!
2. 密码:
这个字段内的数据才是真正的密码,并且是通过编码的密码 (加密) 啦! 你只会看到有一些特殊符号的字母就是了!须要特别留意的是,虽然这些加密过的密码很难被解出来, 可是『很难』不等于『不会』,因此,这个文件的预设权限是『-rw-------』或者是『----------』,亦即只有 root 才能够读写就是了!你得随时注意,不要不当心更动了这个文件的权限呢!
另外,因为各类密码编码的技术不同,所以不一样的编码系统会形成这个字段的长度不相同。 举例来讲,旧式的 DES, MD5 编码系统产生的密码长度就与目前惯用的 SHA 不一样(注 2)!SHA 的密码长度明显的比较长些。由固定的编码系统产生的密码长度必须一致,所以『当你让这个字段的长度改变后,该密码就会失效(算不出来)』。 不少软件透过这个功能,在此字段前加上 ! 或 * 改变密码字段长度,就会让密码『暂时失效』了。
3. 最近更动密码的日期:
这个字段记录了『更动密码那一天』的日期,不过,很奇怪呀!在个人例子中怎么会是 16559 呢?呵呵,这个是由于计算 Linux 日期的时间是以 1970 年 1 月 1 日做为 1 而累加的日期,1971 年 1 月 1 日则为 366 啦! 得注意一下这个资料呦!上述的 16559 指的就是 2015-05-04 那一天啦!了解乎? 而想要了解该日期可使用本章后面 chage 指令的帮忙!至于想要知道某个日期的累积日数, 可以使用以下的程序计算:

[root@study ~]# echo $(($(date --date="2015/05/04" +%s)/86400+1))
16559

上述指令中,2015/05/04 为你想要计算的日期,86400 为每一天的秒数, %s 为 1970/01/01 以来的累积总秒数。 因为 bash 仅支持整数,所以最终须要加上 1 补齐 1970/01/01 当天。
4. 密码不可被更动的天数:(与第 3 字段相比)
第四个字段记录了:这个帐号的密码在最近一次被更改后须要通过几天才能够再被变动!若是是 0 的话,表示密码随时能够更动的意思。这的限制是为了怕密码被某些人一改再改而设计的!若是设定为 20 天的话,那么当你设定了密码以后, 20 天以内都没法改变这个密码呦!
5. 密码须要从新变动的天数:(与第 3 字段相比)
常常变动密码是个好习惯!为了强制要求用户变动密码,这个字段能够指定在最近一次更改密码后, 在多少天数内须要再次的变动密码才行。你必需要在这个天数内从新设定你的密码,不然这个帐号的密码将会『变为过时特性』。 而若是像上面的 99999 (计算为 273 年) 的话,那就表示,呵呵,密码的变动没有强制性之意。
6. 密码须要变动期限前的警告天数:(与第 5 字段相比)
当帐号的密码有效期限快要到的时候 (第 5 字段),系统会依据这个字段的设定,发出『警告』言论给这个帐号,提醒他『再过 n 天你的密码就要过时了,请尽快从新设定你的密码呦!』,如上面的例子,则是密码到期以前的 7 天以内,系统会警告该用户。
7. 密码过时后的帐号宽限时间(密码失效日):(与第 5 字段相比)
密码有效日期为『更新日期(第 3 字段)』+『从新变动日期(第 5 字段)』,过了该期限后用户依旧没有更新密码,那该密码就算过时了。 虽然密码过时可是该帐号仍是能够用来进行其余工做的,包括登入系统取得bash 。不过若是密码过时了, 那当你登入系统时,系统会强制要求你必需要从新设定密码才能登入继续使用喔,这就是密码过时特性。
那这个字段的功能是什么呢?是在密码过时几天后,若是使用者仍是没有登入更改密码,那么这个帐号的密码将会『失效』, 亦即该帐号再也没法使用该密码登入了。要注意密码过时与密码失效并不相同。
8. 帐号失效日期:
这个日期跟第三个字段同样,都是使用 1970 年以来的总日数设定。这个字段表示: 这个帐号在此字段规定的日期以后,将没法再使用。 就是所谓的『帐号失效』,此时不论你的密码是否有过时,这个『帐号』都不能再被使用! 这个字段会被使用一般应该是在『收费服务』的系统中,你能够规定一个日期让该帐号不能再使用啦!
9. 保留:
最后一个字段是保留的,看之后有没有新功能加入。

 

查询shadow使用哪一种加密的机制 :authconfig --test | grep hashing

 

三、/etc/group 群组文件

1. 组名:
就是组名啦!一样用来给人类使用的,基本上须要与第三字段的 GID 对应。
2. 群组密码:
一般不须要设定,这个设定一般是给『群组管理员』使用的,目前不多有这个机会设定群组管理员啦! 一样的,密码已经移动到 /etc/gshadow 去,所以这个字段只会存在一个『x』而已;
3. GID:
就是群组的 ID 啊。咱们 /etc/passwd 第四个字段使用的 GID 对应的群组名,就是由这里对应出来的!
4. 此群组支持的帐号名称:
咱们知道一个帐号能够加入多个群组,那某个帐号想要加入此群组时,将该帐号填入这个字段便可。 举例来讲,若是我想要让 dmtsai 与 alex 也加入 root 这个群组,那么在第一行的最后面加上『dmtsai,alex』,注意不要有空格, 使成为『 root:x:0:dmtsai,alex 』就能够啰~

 

[dmtsai@study ~]$ groups  #有效与支持群组的观察

 

[dmtsai@study ~]$ newgrp 有效群组  #有效群组的切换。想要切换的群组必须是你已经有支持的群组。

[dmtsai@study ~]$ exit  # 注意!记得离开 newgrp 的环境喔!

      newgrp 的运做示意图

 

四、/etc/gshadow 群组密码文件

1. 组名
2. 密码栏,一样的,开头为 ! 表示无合法密码,因此无群组管理员
3. 群组管理员的帐号 (相关信息在 gpasswd 中介绍)
4. 有加入该群组支持的所属帐号 (与 /etc/group 内容相同!)

以系统管理员的角度来讲,这个 gshadow 最大的功能就是创建群组管理员。当有使用者想要加入某些群组时, root 或许会没有空管理。此时若是可以创建群组管理员的话,那么该群组管理员就可以将那个帐号加入本身管理的群组中! 能够免去 root 的忙碌啦!不过,因为目前有相似 sudo 之类的工具, 因此这个群组管理员的功能已经不多使用了。

 

五、相关命令

5.一、useradd 命令新建用户

语法:

  • useradd [-u UID] [-g 初始群组] [-G 次要群组] [-mM] [-c 说明栏] [-d 家目录绝对路径] [-s shell] 使用者帐号名

选项与参数:

  • -u :  后面接的是 UID ,是一组数字。直接指定一个特定的 UID 给这个帐号;
  • -g :  后面接的那个组名就是咱们上面提到的 initial group 啦~该群组的 GID 会被放置到 /etc/passwd 的第四个字段内。
  • -G:  后面接的组名则是这个帐号还能够加入的群组。这个选项与参数会修改 /etc/group 内的相关资料喔!
  • -M :  强制!不要创建用户家目录!(系统帐号默认值)
  • -m :  强制!要创建用户家目录!(通常帐号默认值)
  • -c :  这个就是 /etc/passwd 的第五栏的说明内容啦~能够随便咱们设定的啦~
  • -d :  指定某个目录成为家目录,而不要使用默认值。务必使用绝对路径!
  • -r :  创建一个系统的帐号,这个帐号的 UID 会有限制 (参考 /etc/login.defs)
  • -s :  后面接一个 shell ,若没有指定则预设是 /bin/bash 的啦~
  • -e :  后面接一个日期,格式为『YYYY-MM-DD』此项目可写入 shadow 第八字段,亦即帐号失效日的设定项目啰;
  • -f:  后面接 shadow 的第七字段项目,指定密码是否会失效。0 为马上失效,-1 为永远不失效(密码只会过时而强制于登入时从新设定而已。)

系统已经帮咱们规定好很是多的默认值:

  • 在 /etc/passwd 里面创建一行与帐号相关的数据,包括创建 UID/GID/家目录等;
  • 在 /etc/shadow 里面将此帐号的密码相关参数填入,可是还没有有密码;
  • 在 /etc/group 里面加入一个与帐号名称如出一辙的组名;
  • 在 /home 底下创建一个与帐号同名的目录做为用户家目录,且权限为 700

使用 useradd 创建使用者帐号时,会更改的文件:

  • 用户帐号与密码参数方面的文件:/etc/passwd, /etc/shadow
  • 使用者群组相关方面的文件:/etc/group, /etc/gshadow
  • 用户的家目录:/home/帐号名称

使用 useradd 创建使用者帐号时,至少会参考:

  • /etc/default/useradd
  • /etc/login.defs
  • /etc/skel/*

[root@study ~]# useradd -D  #显示useradd 命令的基本帐号设定的默认值,数据在/etc/default/useradd文件中。
GROUP=100          <==预设的群组
HOME=/home           <==默认的家目录所在目录
INACTIVE=-1           <==密码失效日,在 shadow 内的第 7 栏
EXPIRE=             <==帐号失效日,在 shadow 内的第 8 栏
SHELL=/bin/bash         <==预设的 shell
SKEL=/etc/skel         <==用户家目录的内容数据参考目录
CREATE_MAIL_SPOOL=yes  <==是否主动帮使用者创建邮件信箱(mailbox)

[root@study ~]# cat /etc/login.defs  #useradd 命令的UID、GID、密码参数的默认值

MAIL_DIR /var/spool/mail    <==用户默认邮件信箱放置目录

PASS_MAX_DAYS 99999    <==/etc/shadow 内的第 5 栏,多久需变动密码日数
PASS_MIN_DAYS 0      <==/etc/shadow 内的第 4 栏,多久不可从新设定密码日数
PASS_MIN_LEN 5      <==密码最短的字符长度,已被 pam 模块取代,失去效用!
PASS_WARN_AGE 7      <==/etc/shadow 内的第 6 栏,过时前会警告的日数

UID_MIN 1000        <==使用者最小的 UID,意即小于 1000 的 UID 为系统保留
UID_MAX 60000      <==使用者可以用的最大 UID
SYS_UID_MIN 201     <==保留给用户自行设定的系统帐号最小值 UID
SYS_UID_MAX 999     <==保留给用户自行设定的系统帐号最大值 UID
GID_MIN 1000      <==使用者自定义组的最小 GID,小于 1000 为系统保留
GID_MAX 60000      <==使用者自定义组的最大 GID
SYS_GID_MIN 201     <==保留给用户自行设定的系统帐号最小值 GID
SYS_GID_MAX 999     <==保留给用户自行设定的系统帐号最大值 GID

CREATE_HOME yes     <==在不加 -M 及 -m 时,是否主动创建用户家目录?
UMASK 077         <==用户家目录创建的 umask ,所以权限会是 700
USERGROUPS_ENAB yes   <==使用 userdel 删除时,是否会删除初始群组
ENCRYPT_METHOD SHA512 <==密码加密的机制使用的是 sha512 这一个机制!

 

使用 useradd 创建了帐号以后,在默认的状况下,该帐号是暂时被封锁的(该帐号是没法登入),瞧一瞧 /etc/shadow 内的第二个字段就晓得啰~ 下一步得用:

5.二、passwd 命令设定新密码

语法:

  • passwd [--stdin] [帐号名称]  <==全部人都可使用来改本身的密码。帮通常帐号创建密码须要使用『 passwd 帐号 』的格式,使用『 passwd 』表示修改本身的密码
  • passwd [-l] [-u] [--stdin] [-S] [-n 日数] [-x 日数] [-w 日数] [-i 日期] 帐号   <==root 功能

选项与参数:

  • --stdin :  能够透过来自前一个管线的数据,做为密码输入,对 shell script 有帮助!
  • -l :    是 Lock 的意思,会将 /etc/shadow 第二栏最前面加上 ! 使密码失效;
  • -u :    与 -l 相对,是 Unlock 的意思!
  • -S :    列出密码相关参数,亦即 shadow 文件内的大部分信息。
  • -n :    后面接天数,shadow 的第 4 字段,多久不可修改密码天数
  • -x :    后面接天数,shadow 的第 5 字段,多久内必需要更动密码
  • -w :    后面接天数,shadow 的第 6 字段,密码过时前的警告天数
  • -i :    后面接『日期』,shadow 的第 7 字段,密码失效日期

新的 distributions 是使用较严格的 PAM 模块来管理密码,这个管理的机制写在 /etc/pam.d/passwd 当中。而该文件与密码有关的测试模块就是使用:pam_cracklib.so,这个模块会检验密码相关的信息, 而且取代 /etc/login.defs 内的 PASS_MIN_LEN的设定啦!

理论上,密码最好符合以下要求:

  • 密码不能与帐号相同;
  • 密码尽可能不要选用字典里面会出现的字符串;
  • 密码须要超过 8 个字符;
  • 密码不要使用我的信息,如身份证、手机号码、其余电话号码等;
  • 密码不要使用简单的关系式,如 1+1=2, Iamvbird 等;
  • 密码尽可能使用大小写字符、数字、特殊字符($,_,-等)的组合。

实例:

[root@study ~]# echo "abc543CC" | passwd --stdin vbird2

 

5.三、chage 更详细的密码参数的显示与设定

语法:

  • chage [-ldEImMW] 帐号名

选项与参数:

  • -l :  列出该帐号的详细密码参数;
  • -d :  后面接日期,修改 shadow 第3字段(最近一次更改密码的日期),格式 YYYY-MM-DD
  • -E :  后面接日期,修改 shadow 第8字段(帐号失效日),格式 YYYY-MM-DD
  • -I :  后面接天数,修改 shadow 第7字段(密码失效日期)
  • -m :  后面接天数,修改 shadow 第4字段(密码最短保留天数)
  • -M :  后面接天数,修改 shadow 第5字段(密码多久须要进行变动)
  • -W :  后面接天数,修改 shadow 第6字段(密码过时前警告日期)

实例:

[root@study ~]# chage -d 0 agetest  #让『使用者在第一次登入时, 强制她们必定要更改密码后才可以使用系统资源

 

5.四、usermod 帐号相关数据的微调

语法:

  • usermod [-cdegGlsuLU] username

选项与参数:

  • -c :  后面接帐号的说明,即 /etc/passwd 第五栏的说明栏,能够加入一些帐号的说明。
  • -d :  后面接帐号的家目录,即修改 /etc/passwd 的第六栏;
  • -e :  后面接日期,格式是 YYYY-MM-DD 也就是在 /etc/shadow 内的第八个字段数据啦!
  • -f :  后面接天数,为 shadow 的第七字段。
  • -g :  后面接初始群组,修改 /etc/passwd 的第四个字段,亦便是 GID 的字段!
  • -G :  后面接次要群组,修改这个使用者可以支持的群组,修改的是 /etc/group 啰~
  • -a :  与 -G 合用,可『增长次要群组的支持』而非『设定』喔!
  • -l :  后面接帐号名称。亦便是修改帐号名称, /etc/passwd 的第一栏!
  • -s :  后面接 Shell 的实际文件,例如 /bin/bash 或 /bin/csh 等等。
  • -u :  后面接 UID 数字啦!即 /etc/passwd 第三栏的资料;
  • -L :  暂时将用户的密码冻结,让他没法登入。其实仅改 /etc/shadow 的密码栏。
  • -U:  将 /etc/shadow 密码栏的 ! 拿掉,解冻啦!

仔细的比对,会发现 usermod 的选项与 useradd 很是相似。-L 与 -U 这两个选项也与另外一个命令 passwd 的 -l, -u 相同。

 

5.五、userdel 删除用户的相关数据

用户的数据有:

  • 用户帐号/密码相关参数:/etc/passwd, /etc/shadow
  • 使用者群组相关参数:/etc/group, /etc/gshadow
  • 用户我的文件数据: /home/username, /var/spool/mail/username..

语法:

  • userdel [-r] username

选项与参数:

  • -r :连同用户的家目录也一块儿删除

若是该帐号只是『暂时不启用』的话,那么将/etc/shadow 里头帐号失效日期 (第八字段) 设定为 0 就可让该帐号没法使用,可是全部跟该帐号相关的数据都会留下来! 使用 userdel 的时机一般是『你真的肯定不要让该用户在主机上面使用任何数据了!』

另外,其实用户若是在系统上面操做过一阵子了,那么该用户其实在系统内可能会含有其余文件的。举例来讲,他的邮件信箱 (mailbox) 或者是例行性工做排程 (crontab, 十五章) 之类的文件。 因此,若是想要完整的将某个帐号完整的移除,最好能够在下达 userdel -r username 以前, 先以『 find /-user username 』查出整个系统内属于 username 的文件,而后再加以删除吧!

 

5.六、id 查询某人或本身的相关 UID/GID 等等的信息

语法:

  • [root@study ~]# id [username]

范例:查阅 root 本身的相关 ID 信息!
[root@study ~]# id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

 

5.七、finger 显示用户相关的信息

这个指令有点危险,因此新的版本中已经默认不安装这个软件。

语法:

  • [root@study ~]# finger [-s] username

选项与参数:

  • -s :仅列出用户的帐号、全名、终端机代号与登入时间等等;
  • -m :列出与后面接的帐号相同者,而不是利用部分比对 (包括全名部分)

命令结果,其实他列出来的几乎都是 /etc/passwd 文件里面的东西。列出的信息说明以下:

  • Login:  为使用者帐号,亦即 /etc/passwd 内的第一字段;
  • Name:  为全名,亦即 /etc/passwd 内的第五字段(或称为批注);
  • Directory: 就是家目录了;
  • Shell:    就是使用的 Shell 文件所在;
  • Never logged in.:  figner 还会调查用户登入主机的状况喔!
  • No mail.:  调查 /var/spool/mail 当中的信箱资料;
  • No Plan.:  调查 ~vbird1/.plan 文件,并将该文件取出来讲明!

 

5.八、chfn 更改本身账号的相关信息

change finger 的意思。改到/etc/passwd的第五个字段。finger命令能够显示出来。这个指令说实在的,除非是你的主机有不少的用户,不然倒真是用不着这个程序!这就有点像是 bbs里头更改你『我的属性』的那一个资料啦。

语法:

  • chfn [-foph] [帐号名]

选项与参数:

  • -f :后面接完整的大名;
  • -o :您办公室的房间号码;
  • -p :办公室的电话号码;
  • -h :家里的电话号码!

范例一:vbird1 本身更改一下本身的相关信息!
[vbird1@study ~]$ chfn
Changing finger information for vbird1.
Name []: VBird Tsai test<==输入你想要呈现的全名
Office []: DIC in KSU<==办公室号码
Office Phone []: 06-2727175#356<==办公室电话
Home Phone []: 06-1234567<==家里电话号码
Password:<==确认身份,因此输入本身的密码
Finger information changed.

 

5.九、chsh 修改/etc/passwd文件的第7段Shell

change shell的缩写。

语法:

  • chsh [-ls]

选项与参数:

  • -l :列出目前系统上面可用的 shell ,其实就是 /etc/shells 的内容!
  • -s :设定修改本身的 Shell 啰

[vbird1@study ~]$ chsh -l
/bin/sh
/bin/bash    <==通常默认选项
/sbin/nologin  <==所谓:合法不可登入的 Shell 就是这玩意!
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh    <==这就是 C shell 啦!

[vbird1@study ~]$ ll $(which chsh)
-rws--x--x. 1 root root 23856 Mar  6 13:59 /bin/chsh

chfn 与 chsh ,都是可以让通常用户修改 /etc/passwd 这个系统文件的。这两个文件的权限是什么? 必定是 SUID 的功能。

 

5.十、groupadd 新增群组

为了让使用者的 UID/GID 成对,她们建议新建的与使用者私有群组无关的其余群组时,使用小于 1000 如下的 GID 为宜。

语法:

  • groupadd [-g gid] [-r] 组名

选项与参数:

  • -g :  后面接某个特定的 GID ,用来直接给予某个 GID ~
  • -r :  创建系统群组啦!与 /etc/login.defs 内的 GID_MIN 有关。

 

5.十一、groupmod 进行 group 相关参数的修改

  • groupmod [-g gid] [-n group_name] 群组名

选项与参数:

  • -g :修改既有的 GID 数字;
  • -n :修改既有的组名

 

5.十二、groupdel 删除群组

语法:

  • groupdel [groupname]

存在用户的群组不容许删除。删除有用户的群组的两个办法:

  • 办法1:修改 vbird1 的 GID
  • 办法2:删除 vbird1 这个使用者。

 

5.1三、gpasswd 群组管理员功能

# 关于系统管理员(root)作的动做:

  • gpasswd groupname
  • gpasswd [-A user1,...] [-M user3,...] groupname
  • gpasswd [-rR] groupname

选项与参数:

  •   :  若没有任何参数时,表示给予 groupname 一个密码(/etc/gshadow)
  • -A :  将 groupname 的主控权交由后面的使用者管理(该群组的管理员)
  • -M :  将某些帐号加入这个群组当中!
  • -r :  将 groupname 的密码移除
  • -R :  让 groupname 的密码栏失效

# 关于群组管理员(Group administrator)作的动做:

  • gpasswd [-ad] user groupname

选项与参数:

  • -a :  将某位使用者加入到 groupname 这个群组当中!
  • -d :  将某位使用者移除出 groupname 这个群组当中。

 

除了本机的帐号以外,咱们可能还会使用到其余外部的身份验证服务器所提供的验证身份的功能!若是你的 Linux 主机要使用到上面提到的这些外部身份验证系统时,可能就得要额外的设定一些数据了

语法:

  • authconfig-tui

 

rhcsa7 第5题

请按照如下要求建立用户、用户组:

  • 新建一个名为adminuser的组,组id为40000
  • 新建一个名为natasha的用户,并将adiminuser做为其附属组
  • 新建一个名为harry的用户,并将adminuser做为其附属组
  • 新建一个名为sarah的用户,并不属于adimnuser组,其在系统中没有任何可交互的shell
  • natasha、harry和sarah三个用户的秘密均设置为redhat

答:
groupadd -g 40000 adminuser
useradd -G adminuser natasha
useradd -G adminuser harry
useradd -s /usr/sbin/nologin sarah
echo redhat | passwd --stdin natasha
echo redhat | passwd --stdin harry
echo redhat | passwd --stdin sarah

usermod -s /sbin/nologin saraha  #账号saraha设置错误,此时修改

 

 

六、主机的细部权限规划:ACL 的使用

ACL 是 Access Control List 的缩写,主要的目的是在提供传统的 owner,group,others 的read,write,execute 权限以外的细部权限设定。ACL 能够针对单一使用者,单一文件或目录来进行r,w,x 的权限规范,对于须要特殊权限的使用情况很是有帮助。

ACL 主要能够针对如下3方面来控制权限:

 使用者 (user):能够针对使用者来设定权限;
 群组 (group):针对群组为对象来设定其权限;
 默认属性 (mask):还能够针对在该目录下在创建新文件/目录时,规范新数据的默认权限。

目前 ACL 几乎已经预设加入在全部常见的 Linux 文件系统的挂载参数中(ext2/ext3/ext4/xfs 等等)!

6.一、dmesg | grep -i acl  #检查一下核心挂载时显示的信息

6.二、setfacl        #设定某个目录/文件的 ACL 规范

语法:

  • setfacl [-bkRd] [{-m|-x} acl 参数] 目标文件名

选项与参数:

  • -m :设定后续的 acl 参数给文件使用,不可与 -x 合用;
  • -x :删除后续的 acl 参数,不可与 -m 合用;
  • -b :移除『全部的』 ACL 设定参数;
  • -k :移除『预设的』 ACL 参数,关于所谓的『预设』参数于后续范例中介绍;
  • -R :递归设定 acl ,亦即包括次目录都会被设定起来;
  • -d :设定『预设 acl 参数』的意思!只对目录有效,在该目录新建的数据会引用此默认值

6.三、getfacl      #取得某个文件/目录的 ACL 设定项目

语法:

  • getfacl filename

选项与参数:
getfacl 的选项与 setfacl 相同

 

# 1. 针对特定使用者的方式:
# 设定规范:『 u:[使用者帐号列表]:[rwx] 』,例如针对 vbird1 的权限规范 rx :

[root@study ~]# touch acl_test1
[root@study ~]# ll acl_test1

-rw-r--r--. 1 root root 0 Jul 21 17:33 acl_test1
[root@study ~]# setfacl -m u:vbird1:rx acl_test1
[root@study ~]# ll acl_test1
-rw-r-xr--+ 1 root root 0 Jul 21 17:33 acl_test1
# 权限部分多了个 + ,且与本来的权限 (644) 看起来差别很大!但要如何查阅呢?
[root@study ~]# setfacl -m u::rwx acl_test1
[root@study ~]# ll acl_test1
-rwxr-xr--+ 1 root root 0 Jul 21 17:33 acl_test1
# 设定值中的 u 后面无使用者列表,表明设定该文件拥有者,因此上面显示 root 的权限成为 rwx 了!

# 2. 针对特定群组的方式:
# 设定规范:『 g:[群组列表]:[rwx] 』,例如针对 mygroup1 的权限规范 rx :
[root@study ~]# setfacl -m g:mygroup1:rx acl_test1
[root@study ~]# getfacl acl_test1

# 3. 针对有效权限 mask 的设定方式:
# 设定规范:『 m:[rwx] 』,例如针对刚刚的文件规范为仅有 r :
[root@study ~]# setfacl -m m:r acl_test1
[root@study ~]# getfacl acl_test1

# 4. 针对预设权限的设定方式:

# 设定规范:『 d:[ug]:使用者列表:[rwx] 』

[root@study ~]# setfacl -m d:u:myuser1:rx /srv/projecta
[root@study ~]# getfacl /srv/projecta

 

rhcsa7 d6:

复制文件/etc/fstab到/var/tmp目录下,并按照如下要求配置/var/tmp/fstab文件的权限:

  • 该文件的所属人为root
  • 该文件的所属组为root
  • 该文件对任何人均没有执行权限
  • 用户natasha对该文件有读和写的权限
  • 用户harry对该文件既不能读也不能写
  • 全部其余用户(包括当前已有用户及将来建立的用户)对该文件都有读的权限

答:

sudo cp /etc/fstab /var/tmp/
ll /var/tmp/fstab

sudo setfacl -m u:natasha:rw /var/tmp/fstab

sudo setfacl -m u:harry:--- /var/tmp/fstab

getfacl /var/tmp/fstab

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息