此文涉及命令:useradd、usermod、userdel、passwd、chage、setfacl、getfacl、su、sudo、fingr、chfn、chsh、id、groupadd、groupmod、groupdel、gpasswd、visudo、w、who、lastlog、write、mesg、wall、mall、pwck、pwconv、pwunconv、chpasswd。

知识点:

  1. /etc/passwd 档案结构
    1. 账号名称。
    2. 密码
    3. UID
    4. GID
    5. 用户信息栏说明
    6. 家目录
    7. shell
  2. /etc/shadow 档案结构
    1. 账号名称
    2. 密码
    3. 最近更动密码的时间 (相对于1970年1月1日作为1而累加的日期)
    4. 密码不可被更动的天数 (与3相比)
    5. 密码需要重新变更的天数 (与3相比)
    6. 密码需要变更期限前的警告天数 (与5相比)
    7. 密码过期后的账号宽限时间(密码失效日)  (与5相比)
    8. 账号失效日期
    9. 保留
  3. 有效群组与初始群组
    • /etc/group 档案结构

      • 组名
      • 群组密码
      • GID
      • 此群组支持的账号名称
  4. 有效群组与支持群组的观察
    • [dmtsai@www ~]$ groups---------------------------查看

      • 第一个输出为有效群组
    • [dmtsai@www ~]$ newgrp USERS---------------------更改
    • /etc/gshadow 档案结构
      • 组名
      • 密码栏,同样的,开头为!表示无合法密码,所以无群组管理员
      • 群组管理员的账号
      • 该群组的所属账号(与/etc/group内容相同)
  5. 使用useradd这只程序在建立linux上的账号时,至少会参考以下档案:
    • /etc/default/useradd
    • /etc/login.defs
    • /etc/skel/*   ------新建用户家目录的内容
  6. passwd设置用户密码--------------480
    • 要帮一般账号建立密码需要使用『 passwd 账号 』的格式,使用『 passwd 』表示修改自己的密码
    • passwd -l vbird2 限制vbird2的登录
    • passwd -u vbird2 取消限制
  7. chage-----详细显示密码信息------483
    • 可通过该命令设置使用者在第一次登入时, 强制她们一定要更改密码后才能够使用系统资源
    • [root@www ~]# useradd agetest
    • [root@www ~]# echo "agetest" | passwd --stdin agetest
    • [root@www ~]# chage -d 0 agetest
    • # 此时此账号的密码建立时间会被改为 1970/1/1 ,所以会有问题!
  8. 用户功能
    1. usermod--------账户属性的修改
    2. userdel--------删除账户
    3. finger------查询用户相关的信息
      • finger [-s] username

        • -s :仅列出用户的账号、全名、终端机代号与登入时间等等;
        • -m :列出与后面接的账号相同者,而不是利用部分比对 (包括全名部分)
    4. chfn---------change finger 的意思!
      • chfn [-foph] [账号名]

        • -f :后面接完整的大名;
        • -o :您办公室的房间号码;
        • -p :办公室的电话号码;
        • -h :家里的电话号码!
    5. chsh-----------change shell
      • chsh [-ls]

        • -l :列出目前系统上面可用的 shell ,其实就是 /etc/shells 的内容!
        • -s :设定修改自己的 Shell 啰
    6. id [username]--------查询个人uid或gid相关信息。
  9. 群组的管理
    • groupadd [-g gid] [-r] 组名

      • -g :后面接某个特定的 GID ,用来直接给予某个 GID ~
      • -r :建立系统群组啦!与 /etc/login.defs 内的 GID_MIN 有关。
    • groupmod [-g gid] [-n group_name] 群组名
      • -g :修改既有的 GID 数字;
      • -n :修改既有的组名
    • groupdel [groupname]
  10. 群组管理员功能---------gpasswd
    1. # 关于系统管理员(root)做的动作:

      • [root@www ~]# gpasswd groupname
      • [root@www ~]# gpasswd [-A user1,...] [-M user3,...] groupname
      • [root@www ~]#gpasswd [-rR] groupname
      • 选项与参数: :若没有任何参数时,表示给予 groupname 一个密码(/etc/gshadow)

        • -A :将 groupname 的主控权交由后面的使用者管理(该群组的管理员)
        • -M :将某些账号加入这个群组当中!
        • -r :将 groupname 的密码移除
        • -R :让 groupname 的密码栏失效
    2. # 关于群组管理员(Group administrator)做的动作:
      • [someone@www ~]$ gpasswd [-ad] user groupname
      • 选项与参数:
        • -a :将某位使用者加入到 groupname 这个群组当中!
        • -d :将某位使用者移除出 groupname 这个群组当中。
  11. 主机的细部权限规划:ACL 的使用---------------494
    • ACL 可以针对单一使用者,单一档案或目录来进行 r,w,x 的权限规范,对于需要特殊权限的使用状况非常有帮助。
    • 主要可以针对几个项目:
      • 使用者 (user):可以针对使用者来设定权限;
      • 群组 (group):针对群组为对象来设定其权限;
      • 默认属性 (mask):还可以针对在该目录下在建立新档案/目录时,规范新数据的默认权限;
    • 文件系统是否支持ACL
      • [root@www ~]# mount <==直接查阅挂载参数的功能
      • [root@www ~]# dumpe2fs -h /dev/hda2 <==由 superblock 内容去查询
      • [root@www ~]# mount -o remount,acl / 重新挂载并添加ACL功能
      • [root@www ~]# vi /etc/fstab    ----编辑目录使之永久生效
      • LABEL=/1 / ext3 defaults,acl 1 1
  12. su---切换使用者身份
    • 执行特殊命令需要root密码 ,无法切换shell为/sbin/nologin的用户
  13. sudo-----切换使用者身份
    1. 执行特殊命令需要自己的密码或与用密码,但需要在/etc/sudoers中添加执行者。
    2. sudo执行流程:
      • 当用户执行 sudo 时,系统于 /etc/sudoers 档案中搜寻该使用者是否有执行 sudo 的权限;
      • 若使用者具有可执行 sudo 的权限后,便让使用者『输入用户自己的密码』来确认;
      • 若密码输入成功,便开始进行 sudo 后续接的指令(但 root 执行 sudo 时,不需要输入密码);
      • 若欲切换的身份与执行者身份相同,那也不需要输入密码。
    3. visudo 与 /etc/sudoers
      • 使用者账号 登入者的来源主机名=(可切换的身份) 可下达的指令
      • root                      ALL=(ALL)   ALL <==这是默认值
        1. 系统的哪个账号可以使用 sudo 这个指令的意思,默认为 root 这个账号;
        2. 当这个账号由哪部主机联机到本 Linux 主机,意思是这个账号可能是由哪一部网络主机联机过来的,这个设定值可以指定客户端计算机(信任用户的意思)。默认值 root 可来自任何一部网络主机
        3. 这个账号可以切换成什么身份来下达后续的指令,默认 root 可以切换成任何人;
        4. 可用该身份下达什么指令?这个指令请务必使用绝对路径撰写。 预设 root 可以切换任何身份且进行任何指令之意。
    4. 利用群组以及免密码的功能处理 visudo
      • %wheel ALL=(ALL) ALL <==大约在 84 行左右,请将这行的 # 拿掉!
      • # 在最左边加上 % ,代表后面接的是一个『群组』之意!改完请储存后离开
      • %wheel ALL=(ALL) NOPASSWD: ALL <==大约在 87 行左右,请将 # 拿掉!
      • 有限制的指令操作:
        • myuser1 ALL=(root) !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
        • 『 ! 』代表『不可执行』的意思。可执行的命令中,当允许中包含有拒绝,应把允许放在前面,否则拒绝会失效。即!/usr/bin/passwd root不可放在/usr/bin/passwd[A-Za-z]*前面!
    5. 透过别名建置 visudo   -----------别名名称必须是大写英文字母组合
      • visudo 的别名可以是『指令别名、帐户别名、主机别名』等。

        • [root@www ~]# visudo <==注意是 root 身份
        • User_Alias ADMPW = pro1, pro2, pro3, myuser1, myuser2
        • Cmnd_Alias ADMPWCOM = !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
        • ADMPW ALL=(root) ADMPWCOM
    6. sudo 搭配 su 的使用方式:
      • [root@www ~]# visudo
      • User_Alias ADMINS = pro1, pro2, pro3, myuser1
      • ADMINS ALL=(root) /bin/su -
      • 上述的 pro1, pro2, pro3, myuser1 这四个人,只要输入『 sudo su - 』并且输入『自己的密码』后,立刻变成 root 的身份!不但 root 密码不会外流,用户的管理也变的非常方便!
  14. 『 /etc/nologin.txt 』这个档案,存放/sbin/nologin不能登入的原因,可自行编辑。
  15. PAM模块----------------508
    • /etc/securetty
    • /var/log/secure  查看不可登录的原因
  16. 查询使用者: w, who, last, lastlog
    • 查询目前登入的账户:w或who
    • 查询每个账户最近的登录时间: lastlog        读取的是/var/log/lastlog档案内容
  17. 使用者对谈: write, mesg, wall
    • write 使用者账号 [用户所在终端接口]   ------先使用who查询
    • [vbird1@www ~]$ mesg n    关闭消息器 -----但是还能接收到root的 开启是 y  查询与带参数
    • [root@www ~]# wall "I will shutdown my linux server..."  对所有的在线用户方发送消息.
  18. 使用者邮件信箱: mail
    • 『 mail username@localhost -s "邮件标题" 』
    • [root@www ~]# mail vbird1 -s "nice to meet you"   实际操作中是使用的 mail 账户名 没有-s选项 出现Subject 然后输入
    • 三种常用格式发信
      1. mail -s test root@test #第一种方法,你可以把当前shell当成编辑器来用,编辑完内容后Ctrl-D结束
      2. echo “mail content”|mail -s test root@test  #第二种方法,利用管道
      3. mail -s test root@test < file #第三种方法,以file的内容为邮件内容发信
    • mail      读取新建 &? 查询
      • &d n  删除第n封
      • x     退出  与做任何操作退出
      • q     退出
  19. 手动新增使用者
    1. 一些检查工具

      • pwck pwck 这个指令在检查 /etc/passwd 这个账号配置文件内的信息,与实际的家目录是否存在等信息
      • pwconv 『将 /etc/passwd 内的账号与密码,移动到 /etc/shadow 当中!』
        • 比对 /etc/passwd 及 /etc/shadow ,若 /etc/passwd 内存在的账号并没有对应的/etc/shadow 密码时,则 pwconv 会去 /etc/login.defs 取用相关的密码数据,并建立该账号的 /etc/shadow 数据;
        • 若 /etc/passwd 内存在加密后的密码数据时,则 pwconv 会将该密码栏移动到 /etc/shadow 内,并将原本的/etc/passwd 内相对应的密码栏变成 x !
      • pwunconv 『将 /etc/shadow 内的密码栏数据写回 /etc/passwd 当中, 并且删除 /etc/shadow 档案。
      • chpasswd 『读入未加密前的密码,并且经过加密后, 将加密后的密码写入 /etc/shadow 当中。每笔数据的格式是『 username:password 』。[root@www ~]# echo "dmtsai:abcdefg" | chpasswd -m   ----m为MD5加密方法
    2. 手动建立步骤
      1. 先建立所需要的群组 ( vi /etc/group );
      2. 将 /etc/group 与 /etc/gshadow 同步化 ( grpconv );
      3. 建立账号的各个属性 ( vi /etc/passwd );
      4. 将 /etc/passwd 与 /etc/shadow 同步化 ( pwconv );
      5. 建立该账号的密码 ( passwd accountname );
      6. 建立用户家目录 ( cp -a /etc/skel /home/accountname );
      7. 更改用户家目录的属性 ( chown -R accountname.group /home/accountname )。

命令:

  1. useradd------------账号的添加

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

      • -u :后面接的是 UID ,是一组数字。直接指定一个特定的 UID 给这个账号;
      • -g :后面接的那个组名就是我们上面提到的 initial group 啦~(/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 为永久不失效(密码只会过期而强制于登入时重新设定而已。)
    • useradd -D   ---------useradd默认值参考档内容-------位置在/etc/default/useradd
      • GROUP=100 <==预设的群组 --------------RHEL和centos不使用
      • HOME=/home <==默认的家目录所在目录
      • INACTIVE=-1 <==密码失效日,在 shadow 内的第 7 栏
      • EXPIRE= <==账号失效日,在 shadow 内的第 8 栏
      • SHELL=/bin/bash <==预设的 shell
      • SKEL=/etc/skel <==用户家目录的内容数据参考目录
      • CREATE_MAIL_SPOOL=yes <==是否主动帮使用者建立邮件信箱(mailbox)
  2. passwd-----------为账号设置密码
    • passwd [--sdtin] <==所有人均可使用来改自己的密码
    • passwd [-l] [-u] [--sdtin] [-S] [-n 日数] [-x 日数] [-w 日数] [-i 日期] 账号 <==root 功能
      • --stdin :可以透过来自前一个管线的数据,作为密码输入,对 shell script 有帮助!
      • -l :是 Lock 的意思,会将 /etc/shadow 第二栏最前面加上 ! 使密码失效;
      • -u :与 -l 相对,是 Unlock 的意思!  
      • -S :列出密码相关参数,亦即 shadow 档案内的大部分信息。
      • -e :  强制下次登录必须修改密码
      • -n :后面接天数,shadow 的第 4 字段,多久不可修改密码天数
      • -x :后面接天数,shadow 的第 5 字段,多久内必须要更动密码
      • -w :后面接天数,shadow 的第 6 字段,密码过期前的警告天数
      • -i :后面接『日期』,shadow 的第 7 字段,密码失效日期
  3. chage---------显示密码详细信息
    • chage [-ldEImMW] 账号名

      • -l :列出该账号的详绅密码参数;
      • -d :后面接日期,修改 shadow 第三字段(最近一次更改密码的日期),格式 YYYY-MM-DD
      • -E :后面接日期,修改 shadow 第八字段(账号失效日),格式 YYYY-MM-DD
      • -I :后面接天数,修改 shadow 第七字段(密码失效日期)
      • -m :后面接天数,修改 shadow 第四字段(密码最短保留天数)
      • -M :后面接天数,修改 shadow 第五字段(密码多久需要进行变更)
      • -W :后面接天数,修改 shadow 第六字段(密码过期前警告日期)
  4. 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 密码栏的 ! 拿掉,解冻啦!
  5. userdel---------删除账户
    • userdel [-r] username

      • -r :连同用户的家目录也一起初除
    • 如果想要完整的将某个账号完整的移除,最好可以在下达 userdel -r username之前, 先以『 find / -user username 』查出整个系统内属于 username 的档案,然后再加以删除吧!
  6. ACL 的设定技巧: getfacl, setfacl---------------------494------------先让添加文件系统支持ACL功能
    • setfacl:设定某个目录/档案的 ACL 规范。

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

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

        • -rw-r--r-- 1 root root 0 Feb 27 13:28 acl_test1
        • setfacl -m u:vbird1:rx acl_test1
        • 利用『 u:使用者:权限 』的方式来设定的啦!
        • -rw-r-xr--+ 1 root root 0 Feb 27 13:28 acl_test1
      2. 2.针对特定群组的方式:
        • 设定规范:『 g:[群组列表]:[rwx]
      3. 针对有效权限 mask 的设定方式:
        • 设定规范:『 m:[rwx] 』
        • 他的意义是:使用者或群组所设定的权限必须要存在于 mask 的权限设定范围内才会生效
      4. 针对预设权限的设定方式:
        • 设定规范:『 d:[ug]:使用者列表:[rwx] 』
        • 他的意义是:一般对于目录递归设定,设定后目录内新建的档案或目录都添加此设置的属性
    • getfacl:取得某个档案/目录的 ACL 设定项目;
      • getfacl filename     参数同上
  7. su [-lm] [-c 指令] [username]
    • - :单纯使用 - 如『 su - 』代表使用 login-shell 的变量档案读取方式来登入系统;若使用者名称没有加上去,则代表切换为 root 的身份。即更换环境变量。
    • -l :与 - 类似,但后面需要加欲切换的使用者账号!也是 login-shell 的方式。
    • -m :-m 与 -p 是一样的,表示『使用目前的环境设定,而不读取新使用者的配置文件』
    • -c :仅进行一次指令,所以 -c 后面可以加上指令喔!
  8. sudo [-b] [-u 新使用者账号]
    • -b :将后续的指令放到背景中让系统自行执行,而不与目前的 shell 产生影响
    • -u :后面可以接欲切换的使用者,若无此项则代表切换身份为 root 。
    • -l  :查看能够使用的范围。

linux 账号管理与ACL权限设定的更多相关文章

  1. linux备忘录-账号管理与ACL权限设定

    知识 账号管理中的一些文件结构 /etc/passwd 每一行的内容都为下面结构 账号名称:密码:UID:GID:用户信息说明:家目录:shell ---- UID ---- -- 0 -> 代 ...

  2. Linux账号管理与ALC权限设定(二) 批量增加用户脚本

    接上篇.鸟哥提出了一个问题.就是 如果myuser1用户是这个项目的助理,他只能查看该目录下的内容,而无法修改删除.那该如何操作呢? 首先,不能将该用户加入projecta这个群组,否则他也可以修改删 ...

  3. Linux 账号管理与 ACL 权限配置

    要登陆 Linux 系统一定要有账号与口令才行,否则怎么登陆,您说是吧?不过, 不同的使用者应该要拥有不同的权限才行吧?我们还可以透过 user/group 的特殊权限配置, 来规范出不同的群组开发项 ...

  4. 第十四章、Linux 账号管理与 ACL 权限配置

    1. Linux 的账号与群组 1.1 使用者标识符: UID 与 GID 1.2 使用者账号:/etc/passwd 文件结构, /etc/shadow 文件结构 1.3 关于群组: /etc/gr ...

  5. 第14章 Linux账号管理与ACL权限设置

    Linux的账号与用户组 用户标识符:UID与GID 每一个文件都有一个所有者ID和用户组ID,当我们需要查看文件属性时,系统会根据/etc/passwd和/etc/group的内容,找到对应UID和 ...

  6. Linux 账号管理及ACL权限设置,PAM模块简介

    有效群组与初始群组: groups:有效与支持群组的观察 newgrp:有效群组的切换,后面接群组名称 在passwd文件中记录的GID就是默认的GID,就是初始群组 /etc/passwd文件结构 ...

  7. 鸟哥私房菜基础篇:Linux 账号管理与 ACL 权限配置习题

    猫宁!!! 参考:http://cn.linux.vbird.org/linux_basic/0410accountmanager.php 1-root 的 UID 与 GID 是多少?而基于这个理由 ...

  8. Linux账号管理与ACL权限设置

    1:UID和GID 用户ID:在/etc/passwd中 群组ID:在/etc/group中 2:有效群组与初始群组 初始群组:/etc/passwd文件里面的GID 有效群组: groups #查看 ...

  9. Linux账号管理与ALC权限设定(一)

    UID  与   GID UID用户的编号  GID 用户群组的编号 账号登录时,有一个对应的文本来记录某个账户的UID与GID.然后获得这个UID去对应的密码文本中,取得密码进行比对,然后登陆. 保 ...

随机推荐

  1. 飞思卡尔imx6开发板Linux下GPIO驱动

    控制GPIO_1_28的输出: #define MY_BOMB_GPIO       IMX_GPIO_NR(1, 28) 配置为输出方式: gpio_direction_output (MY_BOM ...

  2. This kind of launch is configured to open the Debug perspective when it suspends.

    This kind of launch is configured to open the Debug perspective when it suspends. 因为设置了断点才会弹出这个,不需要调 ...

  3. 古诗词api,诗词接口,诗词api,中国诗词

    服务商:api.getlove.cn 分类:诗词 更新时间:2016-03 如果接口不满足您的要求,您可以联系qq:2265658022购买完整的数据库 免费apikey:56eab527a0facb ...

  4. jquery 获取鼠标和元素的坐标点

    获取当前鼠标相对img元素的坐标 $('img').mousemove(function(e) { varpositionX=e.pageX-$(this).offset().left; //获取当前 ...

  5. rsync 通过 ssh 上传文件

    rsync -avzP /www/ -e ssh root@192.168.1.200:/www/ 批处理上传: #!/bin/bash for (( ; ; )) do rsync -avzP /w ...

  6. 手持机(Android)开发应用总结

    对于首次接触android的我,刚接到android开发的命令时,自己完全不懂任何android技术,可是由于项目的开发时间周期很短,必须强迫自己即学即用,到了最后才发现,技术其实只是工具,重要的是一 ...

  7. python环境

    官网:https://www.python.org windows环境:http://www.cnblogs.com/windinsky/archive/2012/09/20/2695520.html ...

  8. CVPR 2007 Learning to detect a salient object

    Dataset: MSRA A&B are introduced in this paper. A conditional Random Field based method was prop ...

  9. C# Mysql You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ????

    有几年没用过MySql数据了,今天在使用C#访问MySql数据库时出现了一个小插曲. 错误提示: You have an error in your SQL syntax; check the man ...

  10. leetcode-javascript

    1. Largest Number For example, given [3, 30, 34, 5, 9], the largest formed number is 9534330. // wro ...