灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2706回复:0

Linux账号管理与ACL权限设定

楼主#
更多 发布于:2013-02-20 13:30
Linux账号管理与ACL权限设定
 
 
 
1 Linux的账号与群组
 
1.1UID和GID
 
UID:User ID;GID:GroupID;
 
一个文件的权限,靠UID,GID来识别,UID与账号之间的对应关系存储在/etc/passwd里面    
 
1.2/etc/passwd结构
 
$ head -n 4 /etc/passwd
 
root:x:0:0:root:/root:/bin/bash
 
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
 
bin:x:2:2:bin:/bin:/bin/sh
 
sys:x:3:3:sys:/dev:/bin/sh
 
$cat/etc/passwd | grepminix007
 
minix007:x:1000:1000:minix007,,,:/home/minix007:/bin/bash
 
账号名称
 
密码(此字段为x,真正的密码放在/etc/shadow里了)
 
UID
 
0:系统管理员
 
1~499:系统账号
 
500~65535:可登入账号  
 
GID
 
用户信息说明
 
家目录
 
Shell
 
1.3/etc/shadow结构
 
# cat /etc/shadow | grepminix007
 
minix007:$6$Uk9abd2a7z.qWqqW0CNBsqeZvpx9UcyQ1:15597:0:99999:7:::
 
账号名称
 
加密后的密码
 
最近修改密码的日期
 
密码不可变动的天数
 
密码需要变动的天数
 
密码需要变动前的警告天数
 
密码过期后账号宽限天数
 
账号失效日期
 
保留
 
1.4/etc/group结构
 
$ head -n 4/etc/group
 
root:x:0:
 
daemon:x:1:
 
bin:x:2:
 
sys:x:3:
 
组名
 
组密码
 
GID
 
此组支持的账号
 
1.5群组的一些概念
 
初始群组:账号一登录就成为此群组成员,这个属性在/etc/passwd里的GID确定
 
非初始群组:除了初始群组外,一个账号还会属于其它群组,这就是由/etc/group里此组支持的账号确定
 
有效群组:账号所属群组中的一个,如果账号新建一个文件,这个文件的群组就由当前账号的有效群组确定
 
groups:通过这个指令可以知道当前用户账号属于哪些群组,第一个群组就是有效群组
 
newgrp: 有效群组的切换
 
1.6/etc/gshadow结构
 
# head -n 4/etc/gshadow
 
root:*::
 
daemon:*::
 
bin:*::
 
sys:*::
 
组名
 
密码
 
群组管理员账号
 
该群组所属账号
 
2账号管理
 
2.1 新建账号
 
useradd
 
$useradd minix006#按默认设置建立一个普通账号
 
$useradd -r matrix007 #建立一个系统账号
 
$useradd -D#显示useradd默认值
 
$ useradd-D
 
GROUP=100
 
HOME=/home
 
INACTIVE=-1
 
EXPIRE=
 
SHELL=/bin/sh
 
SKEL=/etc/skel
 
CREATE_MAIL_SPOOL=no
 
2.2修改密码
 
passwd
 
#passwd minix006 # root账号修改其它账号密码
 
$passwd #自己修改自己密码
 
$passwd -S # 列出密码参数(修改日期,失效日期etc.)
 
usermod
 
#usermod -e "2013-10-10" minix006 #设置minix006账号的失效日期
 
2.3忘记密码
 
普通用户忘记密码:使用root账号登录,再用passwd命令处理
 
root用户忘记:LiveCD开机,挂载根目录,修改/etc/passwd,将root密码字段清空,再开机后root无须密码即可登录,再用passwd修改root密码。
 
2.4修改账号数据
 
userdel:删除账号数据
 
chsh:修改shell
 
2.5查阅账号信息
 
finger :查阅/etc/passwd里的信息
 
id :查阅UID,GID信息
 
2.6群组管理
 
新建群组:groupadd
 
修改群组信息:groupmod
 
删除群组信息:groupdel
 
建立群组管理员:gpasswd
 
3主机的细部权限规划:ACL的使用
 
3.1 什么是ACL
 
ACL是Access ControlList的缩写,主要的目的是提供传统的owner,group,others的read,write,execute权限之外的细部权限设定,ACL可以针对单一使用者,单一档案或者目录来进行r,w,x权限的设定,对于需要 有特殊权限的使用状况非常有帮助。
 
3.2ACL的启用
 
查看ACL是否启用
 
$ mount
 
/dev/sda7 on / type ext4(rw,errors=remount-ro)
 
...
 
/dev/sda10 on /home type ext4(rw)
 
...
 
括号里没有显示acl,说明acl没有启用
 
ACL的启用
 
# mount -oremount,acl /home
 
这样,再查看ACL是否启用时,就会得到
 
$ mount | grephome
 
/dev/sda10 on /home type ext4 (rw,acl)
 
3.3ACL的设定
 
getfacl
 
$ touch testacl
 
$ ll testacl
 
-rw-rw-r-- 1 minix007 minix007 0  2月  4 16:42 testacl
 
$ getfacltestacl
 
 # file: testacl
 
 # owner: minix007
 
 # group:minix007
 
user::rw-
 
group::rw-
 
other::r--
 
setfacl
 
为特定用户设置权限
 
$ll testacl
 
-rw-rw-r-- 1 minix007 minix007 0  2月  4 16:42testacl
 
# setfacl -m u:minix007:rx testacl
 
$ ll testacl
 
-rw-rwxr--+ 1 minix007 minix007 0  2月  4 16:42testacl*
 
可以看到,testacl的权限信息已经和以前不同了
 
4 使用者身份切换
 
4.1为什么要身份切换
 
平时用普通账号,有特别需要再用root,可以避免对系统破坏
 
运行软件时,为此软件设置一个低权限账号,这样即使这个软件被攻破,也不至于影响整个系统
 
4.2身份切换方法
 
su:任何身份切换
 
完整切换到新身份:su -username
 
只用root执行一次命令:su–c "指令串"
 
由root切换到其它使用者时,无需密码
 
sudo
 
5用户的特殊shell与PAM模块
 
5.1特殊的shell,/sbin/nologin
 
nologin是一个特殊的shell,如果一个账号的shell是nologin,那么它是无法通过shell登录的,但是它可以使用系统的资源,这样就限制了这个账号使用shell的权利。因为有些账号是不需要使用shell的,分给它们会让系统 陷入危险。
 
5.2 PAM
 
一部主机上可能很多地方都需要验证,他们有着不同的验证机制,有的时候这可能造成一些混乱,比如一致性问题,PAM是一套应用程序编程接口,他提供了一系列验证机制,只要使用者将验证需要告诉PAM, PAM就能返回验证的结果。
 
5.3passwd工作原理
 
用户使用passwd程序,输入密码
 
passwd调用PAM模块验证
 
PAM模块到/etc/pam.d/查找与passwd同名配置文件
 
根据配置文件的设定,引用PAM模块验证分析
 
将验证结果返回给passwd
 
passwd根据结果决定下面的动作
 
6Linux主机上用户讯息传递
 
who :目录登录到系统的用户
 
$ who
 
minix007  tty7         2013-02-04 14:52
 
minix007   pts/2        2013-02-04 15:15(:0.0)
 
lastlog:所有账户最后登录时间
 
使用者交谈:write,mesg,mail

喜欢0 评分0
游客

返回顶部