美文网首页
Linux的账户管理与ACL权限设置

Linux的账户管理与ACL权限设置

作者: 放下梧菲 | 来源:发表于2020-04-26 20:13 被阅读0次

    1、Linux账户与用户组

    1、用户标志符:UID和GID

    UID:user id 用户id
    GID:group id 用户组id (不要随便乱改,会造成系统资源错乱

    2、用户账号

    /etc/passwd 里面存有账号
    /etc/shadow 存有密码

    passwd文件中,的第一列是账号。第二列是密码,但是我们只能看一个x,存在了shadow里,需要管理员权限才能看得到。第三列就是UID。0使系统管理员,1-200是系统账号,201-999是用户有系统账号需求使用的UID,1000-60000是一般用户。
    第四列就是GID。
    第五列是用户信息说明栏。一般没什么太大用途。
    第六列是家目录。
    第七列是shell。用户登录得到的与系统内核沟通shell。

    /etc/shadow文件则比较简单,第一列是名称,第二列是密码,用了编码手段的。其他的都是日期。

    3、用户组

    /etc/group 存放的就是我们的用户。每一行就是一个用户组。
    第一列就是组名,第二列是密码,X,放在了/etc/gshadow里,第三列就是GID,第四列是用户组支持的账户名称,在新版中初始状态是空白的。

    2、账户管理

    1、新建与删除用户:useradd、相关配置文件、passwd、usermod、userdel
    • useradd [-mMnr][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s <shell>][-u <uid>][用户帐号]

    -c<备注>  加上备注文字。备注文字会保存在passwd的备注栏位中。
    -d<登入目录>  指定用户登入时的起始目录。
    -D  变更预设值.
    -e<有效期限>  指定帐号的有效期限。
    -f<缓冲天数>  指定在密码过期后多少天即关闭该帐号。
    -g<群组>  指定用户所属的群组。
    -G<群组>  指定用户所属的附加群组。
    -m  自动建立用户的登入目录。
    -M  不要自动建立用户的登入目录。
    -n  取消建立以用户名称为名的群组.
    -r  建立系统帐号。
    -s<shell>   指定用户登入后所使用的shell。
    -u<uid>  指定用户ID。


    建立了一个新账户,立马在home里建立了一个新的文件。这只是个普通账户。



    建立了一个系统账户,在home里没有新建一个家目录。
    到现在为止,只是建立了个账户,但是没有设置密码,如果要设置密码的话,分两种情况,root修改和用户自己修改。


    很简单的操作,即使再简单也能通过。注意root改别人的密码需要在后面加上用户名。


    自己改自己的密码无需加上用户名,但是简单的密码就无法通过了。

    • 还可以用usermod来修改用户的设置数据。



      更多地用法可以用man usermod来查看。

    • usrdel就是彻底删除一个账户。方法是userdel [-r] username
      -r 连同使用者的家目录也删除。
      删除之前先查找查找本机属于该用户的文件夹,一并删除,不然是不会删除这些文件夹的。

    2、用户功能

    前面介绍的都是root的命令。下面就介绍一下,如果当你是一个一般用户的时候,你也可以用的一些功能。

    • id username
      可以查看用户的UID/GID等信息。
    • chsh
      chsh[-ls]
      -l 列出目前系统上可用的shell
      -s 设置修改自己的shell
    3、新增与删除用户组
    • groupadd
      groupadd 命令 语法格式如下:

    groupadd [-g gid ] [-r] group
    参数说明:
    -g:指定新建工作组的 id;
    -r:创建系统工作组,系统工作组的组ID小于 500;


    • groupmod
      groupmod [-g gid ] [-n group_name] 用户组名
      -g 修改既有的GID
      -n 修改名字
      和usermod类似,修改一些参数。

    • groupdel
      groupdel [groupname]
      删除用户组

    删除用户组,一定要确定没有用户使用该用户组作为初始用户组才能够删除。

    • gpasswd
      可以让一个用户组拥有一个管理员,这个管理员可以管理哪些账号加入,移除该用户组。
      gpasswd [可选项] 组名
      可选项参数:

    -a:添加用户到组;
    -d:从组删除用户;
    -A:指定管理员;
    -M:指定组成员和-A的用途差不多;
    -r:删除密码;
    -R:限制用户登入组,只有组中的成员才可以用newgrp加入该组

    从结果中可以看出来已经jiang1已经拿到了控制权

    3、ACL的使用

    ACL就是 Access Control List,可以针对单一用户,单一文件或目录来进行r,w,x的设置。

    1、getfacl、setfacl
    • setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...
      -m, --modify-acl 更改文件的访问控制列表
      -M, --modify-file=file 从文件读取访问控制列表条目更改
      -x, --remove=acl 根据文件中访问控制列表移除条目
      -X, --remove-file=file 从文件读取访问控制列表条目并删除
      -b, --remove-all 删除所有扩展访问控制列表条目
      -k, --remove-default 移除默认访问控制列表
      --set=acl 设定替换当前的文件访问控制列表
      --set-file=file 从文件中读取访问控制列表条目设定
      --mask 重新计算有效权限掩码
      -d, --default 应用到默认访问控制列表的操作
      -R, --recursive 递归操作子目录

    • getfacl 选项几乎与setfacl一样
      针对一个特定用户: u:用户:权限


    针对一个特定用户组 g:用户组:权限


    针对一个文件的有效权限设置: m:权限
    用户或用户组所设置的权限必须在mask的权限范围里才能生效。


    4、用户身份切换

    • su
      su [-lm] [-c 命令] [username]
      参数说明:

    -f 或 --fast 不必读启动档(如 csh.cshrc 等),仅用于 csh 或 tcsh
    -m -p 或 --preserve-environment 执行 su 时不改变环境变数
    -c command 或 --command=command 变更为帐号为 USER 的使用者并执行指令(command)后再变回原来使用者

    很简单也很实用的功能
    • sudo
      可以不切换身份就用其他用户的身份执行命令。
      但是并非每个用户都可以这样,一定要规范到/etc/sudoers的用户才可以。


    可以看出创建者是jiang而不是root

    相关文章

      网友评论

          本文标题:Linux的账户管理与ACL权限设置

          本文链接:https://www.haomeiwen.com/subject/kgxjwhtx.html