Linux账号管理与ACL权限设定

1.LINUX帐号与群组

UID , GID ( User id , Group id )

/etc/passwd : 用户档案 ( 账号信息 )

    例如 : 帐号1 (root) :    root : x : 0 : 0 : root : /root : /bin/bash

                                     帐号名 x(原来是密码,现在全部是x,只是个代表) 0 : Uid , 0 : G id , root (描述) , /root ( 家目录) , /bin/bash ( shell 目录 )

               帐号2 (haha) :    haha : x : 502 : 503 : : /home/haha : /bin/bash

                                     帐号名 x(原来是密码,现在全部是x,只是个代表) 502 : Uid , 503 : Gid , 描述为空 , /home/haha ( 家目录) , /bin/bash ( shell 目录 )
登录时,1,首先寻找 /etc/passwd 里边是否有你输入的账号,如果没有就直接跳出,如果有,则将该账号对应的UID与GID( etc/group )读出来,另外,该账号的家目录与shell 设定也一并读出。2,再来则是核对密码表,这时LINUX会进入 /etc/shadow里面找出对应的账号与UID,然后核对一下刚刚输入的密码是否相符,3,一切都OK的话,就进入了SHELL。

 

/etc/shadow : 用户密码 ( 一般会有 9 个字段 )

               账号( root ) : root : 真实密码: 最近变更密码日期 : 密码不可变动天数 : 密码需要变更天数 : 密码需要变更警告天数 : 密码过期后账号的宽限天数 : 账号失效日期 : 保留

 详细说明 :

 真实密码 : 经过加密的

最近变更密码日期 : 是从 1970年1月1日开始计算,每天 + 1

密码不可变动天数 : 0 随时都可以变动, 比如 20,则是设定密码后,20天内不可以变动

密码需要变更天数 : 99999(273年) 表示没有限制, 比如20,则表示 20 天后密码将过期

 

/etc/group : 群组档案

    例如 : dba : x : 502 : oracle

            组名, 组密码(通常不需要), Gid , 帐户名( 可以增加帐户名, 这样就直接拥有这个组的权限了, 用户之间用,逗号分开,注意不能有空格)

群组 ( 初始群组, 有效群组 )

初始群组 : /etc/passwd 文件中的群组, 即当此用户登陆 linux时, 立刻就拥有此群组的权限了.

如果一个用户有很多个群组, 那么这个用户同样具有这两个群组的权限, 那么如果是创建一个目录或者档案时, 究竟是哪个组呢? 这就要看创建时的有效群组了!

有效群组 : 登陆后, 直接输入 groups命令 就可以看到此用户支持的所有群组, 第一个即是有效群组,  newgrp users ( 切换有效群组 ) , 切换之后如果想返回, 必须使用 exit, 有点类似之前的shell . ( 因为shell环境变了,原来shell环境是 kevin:kevin 变成了 kevin : user,所以要使用 exit 退出现在的变更后的环境 )

/etc/gshadow , 这个文件有点类似 /etc/group文件, 只是第2格, 如果是有 ! 号, 表示此群组没有群组管理员 .

可以使用命令 usermod ( root 使用 ) gpasswd ( 群组管理员使用 ) 将某个用户加入到新的群组

gshadow 这个档案最大的功能就是建立群组管理员

/etc/gshadow

1.组名

2.密码,同样的,开头为!表示无合法密码,所以无群组管理员

3.群组管理员的账号(相关信息在 gpasswd 中介绍 )

4.该群组所属的账号(与 /etc/group内容相同!)

 例如 usermod -G dba arthur

2. 帐号管理

useradd 相关配置文件 passwd , usermod, userdel

useradd : useradd -u( 特定 UID号码) -g( Initial group ) -G ( 还可以加入的组 ) -d ( 家目录, 绝对路径 )  -r ( 建立一个系统帐号, 默认不会创建家目录)

使用ueradd 建立帐号时, 至少参考 : /etc/default/useradd   /etc/login.defs   /etc/skel/* , 但是其实建立用户最重要的是 /etc/passwd , /etc/shadow , /etc/group

passwd : passwd -l ( lock ) -u ( unlock ) -S ( 列出密码相关参数 ) -n ( 多久不可修改密码天数 ) -x ( 多久内必须修改密码 ) -w ( shadow 密码过期天数 ) -i ( 密码失效日期 )

chage : chage -l vbird2 ( 列出 vibrd2用户密码的详细参数 ) , 具体还有一些其他参数, 修改 vbird2 密码 .

usermod : 修改帐号登陆信息, ( 和 useradd 非常类似, 是用来微调 useradd 的 )

userdel : userdel -r ( 连同家目录一起删除 )

一般用户使用指令 : finger ,  id ,

finger 查阅用户信息   finger [-s] username
id username

groupadd , groupdel , groupmod , gpasswd

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

groupmod 微调 groupadd 命令

groupmod -g 201 -n mygroup group1   尽量不要随意动 gid

groupdel [groupname]

gpasswd [-A user1] [-M user3] groupname   其中将 user1设定为群组管理员, user3 添加到该群组

gpasswd -rR groupname   其中 -r 是删除密码 , -R 将密码失效

3. ACL ( access control list ) 由于unix不支持,所以就算了

ACL : 用来设置针对单一用户, 群组, 默认属性 只是针对某一个用户或者是特定的群组

首先要确认文件系统是否支持 ACL : unix like 系统不支持ACL, 如果发现不支持, 那么在linux中可以设置其为支持, 具体方法为 : mount -o remount ,acl / 或者永久性修改文件vi /etc/fstab ( 确认是否设置成功 : mount , 看到主要硬盘情况, 例如根目录下边, 出现 ( rw, acl )

 

ACL : 设定

  • getfacl : 取得某个档案/目录的ACL权限.
  • setfacl:  设定某个目录/档案的ACL权限. setfacl -m u:vbird1:rx acl_tes1(其中 vbird1是用户名, rx是权限)

getfacl filename ( acl_test1 )

4. 使用者身份切换

  • 使用一般账号管理系统, 需要更改环境变量时, 再切换账号.
  • 用较低的权限启动系统服务 ( 例如软件 apache , 那么创建一个用户 apache, 用来启动 apache软件, 这样即便apache系统被黑, 也没关系, 系统没事 )
  • su - oracle , 切换用户
  • sudo

su : 若要完整切换到新使用环境( su - username 或 su - l username ) 如果只是1次执行root命令, 可以使用 su --c "指令串" , 使用 root切换成任何使用者并不需要输入新用户密码( 虽然 su 很好用, 但是如果使用主机人太多, 而都想使用root用户, 则就会有很多人知道root密码, 危险 )

sudo : 只有 /etc/sudoers内的用户才可以执行 sudo 这个指令,  visudo ( 专门修改的指令 )

sudo [-b] [-u 新使用者账号]

-b : 将后续的指令放到背景中让系统自行执行,而不与目前的 shell 产生影响

-u : 后面可以接欲切换的使用者,若无此项则代表切换身份为 root

1. 当用户执行 sudo 时,系统于 /etc/sudoers 档案中搜索该使用者是否有执行 sudo 的权限

2. 若使用者具有可以执行 sudo 的权限后,便让使用者 输入用户自己的密码 来确认

3. 若密码输入成功,便开始进行 sudo 后续接的指令 ( root 执行sudo时,不需要输入密码 )

4. 若欲切换的身份与执行者身份相同,那也不需要输入密码.

查看 /etc/sudoers 这个档案,使用命令 visudo

本身就有的文件 : root ALL=(ALL) ALL

增加 vbird ALL=(ALL) ALL

%wheel ALL=(ALL) ALL  表示 所有在 wheel 这个群组以内的用户全部可以

myuser1 ALL=(root) /user/bin/passwd  意思是 myuser1 可以使用passwd 这个指令

 

特殊的 shell , /sbin/nologin

系统账号,系统账号是不需要登录的,同样,他们也无法操作 bash 等shell, 他们所使用的shell就是 /sbin/nologin

5. PAM ( Pluggable Authentication Modules )

一套应用程序编程接口,提供了以连串的验证机制,

就相当于 API ( application programming Interface ) , 提供一个验证接口, 只要使用者将验证阶段的需求告之PAM后, PAM就能够回报使用者验证的结果 ( 成功与失败 )        

以passwd为例, 呼叫PAM流程 :

  1. 用户执行 /usr/bin/passwd 这支程序, 并输入密码
  2. passwd 呼叫 PAM 模块进行验证
  3. PAM模块会到 /etc/pam.d/ 寻找与程序( passwd) 同名的配置文件
  4. 依据 /etc/pam.d/passwd 的内容设定, 引用相关的 PAM 模块逐步进行验证分析
  5. 将验证结果( 成功, 失败及其他讯息) 回传给 passwd 这支程序
  6. passwd 这支程序会根据 PAM 回传的结果决定下一个动作 ( 重新输入新密码或者通过验证 )

验证类别 :

  1. auth ( authentication )
  2. account ( 帐号 )
  3. session ( 会话 )
  4. passwd ( 密码 )

6. LINUX中用户信息传递

w , who, last, lastlog,

w 查看登陆者情况 , 跟 who 差不多

last 查看最近主机启动关闭情况

lastlog 是用户登陆日志

write, mesg, wall ( 用户之间通信)

write 使用者账号 [用户所在终端接口]

mesg n 拒绝接收信息,( root 发的例外 )

wall 广播,对系统上所有用户发消息,例如 wall " i will shutdown my linux server ... "

 

传送离线消息,mail ( 即如果用户不在线的话,可以类似留言)

mail vbird -s "nice to mee you"  "邮件标题"   使用 . 小数点结束, Cc: 就是 cc 给别人

利用数据流重定向,因为有时候书写错误很难删除 mail vbird -s "nice to mee you" < /tmp/bird_mail

然后比如,bird登录了linux , 输入mail 可以查看留言,然后是 & 这个可以接很多指令,例如 &? 就可以查看mail

 

  • write : write root pts/1 ( 回车, 然后输入写入内容, ctrl + d 终止对话 )
  • mesg n ( 不接收别人发来的信息 ) mesg y ( 直接输入 mesg 就知道目前状况 )
  • wall ( wall " are you ready now ? " ) 向所有的人广播

7. 手动建立一个帐号 ( 不推荐 )

pwck ( 检查 /etc/passwd 中的家目录, 与实际的家目录是否存在 )

pwconv ( 主要目的是将 /etc/passwd 内的帐号与密码, 移动到 /etc/shadow当中 )

pwunconv ( 将 /etc/shadow内的密码栏数据写回 /etc/passwd , 并且删除 /etc/shadow )

建立帐号步骤 :

  1. 建立所需群组
  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 )







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值