赞
踩
每个用户都会有自己的UID(就像ID一样独一无二),并且每个用户组也会有自己独一无二的GID。系统是通过这些UID和GID来识别用户和用户组。
一些基础概念:
UID:
0表示系统管理员,root;
1~999 系统账号使用ID,权限和特性与0之外的没什么不一样,朱但是没有家目录;
1000~ 一般用户使用,会创建家目录。
两种建立用户组机制:
私有用户组机制:建立与账号一样的用户组作为初始用户组,权限是700
公共用户组机制:所有的新建账号的初始用户组都是由useradd变量GROUP决定的同一个组。
有关文件 | 作用 | 文件结构 | |
用户账号 | /etc/passwd | 管理UID/GID | 账户名称:密码(x):UID:GID:说明栏:家目录:shell |
/etc/shadow | 管理密码相关数据 | 账户名称:密码(加密):最近修改日期:不可修改天数:需要重新修改天数:需要修改前警告天数:过期后宽限天数:失效日期:保留功能 | |
用户组 | /etc/group | 记录GID与组名的对应 | 组名:用户组密码:GID:该用户组支持的账号 |
/etc/gshadow | 密码以及用户组管理员 | 组名:密码栏(!表示无密码无管理员):用户组管理员账号:用户组支持的账号 |
本来密码会在passwd中显示的,但是为了安全将密码放到了shadow中,并且以加密的形式显示出来,这样原来的passed中只剩下有个x占位置。
/etc/passwd /etc/shadow /etc/group 查询方式:
shadow里文件结构说明:
命令 | 作用 | 参数 | 模板 | 一些说明 | |
用 户 | useradd | 新增用户 | -u:后跟UID -g:后跟初始用户组 -G:次要用户组 -M:强制不建立家目录(系统账号默认) -m:强制建立家目录(一般账号默认) -c:说明栏内容 -d:家目录 -s:shell -D:查看默认值 (使用:useradd -D) | useradd [-u UID] [-g 初始用户组] [-G 次要用户组] [-mM] [-c 说明栏] [-d 家目录] [-s shell] 账号名 | ①如果已经设置了初始用户组那么就不会建立同名用户组了 ②没有密码,需要用passwd设置密码才算建立完成 ③若不设置UID会自动在现有用户最大UID+1作为自己的UID |
passwd | 设置密码 | -l :锁住密码(密码前加上!) -u:解锁 -S:列出密码相关参数 -n:不可修改密码天数 -x:多久必须要修改密码 -w:过期前警告天数 -i:密码失效日期 | passwd [--stdin] [账号名称] 从管道输入作为设置的密码 passwd [-l] [-u] [--stdin] [-S] [-n 天数] [-x 天数] [-w 天数] [-i 日期] 账号 | ①root设置的密码可以无视密码长度等要求 ②帮别的账号修改【passwd 账号】修改自己的【passwd】 ③--stdin 会保存在命令历史中,可能有安全隐患 | |
chage | 修改或详细列出密码参数 | -l:详细列出参数 -d:跟日期 修改最近修改密码日期 -E:跟日期 修改密码失效日 -I(大写):跟天数 修改过期后宽限天数 -m:跟天数 修改不可修改天数 -M:跟天数 修改需要重新修改天数 -W:跟天数 修改过期前警告天数 | chage [ ] 账号名称 | ①如果想第一次登录强制修改密码:chage -d 0 用户名 | |
usermod | 将账号相关数据进行微调 | -u:后跟UID -g:后跟初始用户组 -G:次要用户组 -c:说明栏内容 -d:家目录 -s:shell -e:修改失效日期 -f:修改宽限天数 -a:与-G合用 为增加次要而非设置 -l:修改账号名称 -L:冻结密码 -U:解锁 | usermod [ ] 用户名 | ①-U -L 其实和passwd的-l -u一样 | |
userdel | 删除账号 | -r:连同家目录一起删除 | userdel [ ] 用户名 | 要想全部删除可以先find / -user 用户名 将文件全部删除在用本命令 | |
id | 查找GID UID | id [用户名] | |||
finger | 显示用户相关信息:住址电话等 | finger [ ] 用户名 | |||
chfn | 修改个人属性 | chfn [ ] [账号名] | change finger 该命令设置了SUID所以一般用户才可以去修改/etc/passwd | ||
chsh | 改变使用的shell | chsh [ ] | change shell 该命令设置了SUID所以一般用户才可以去修改/etc/passwd | ||
用 户 组 | groupadd | 添加用户组 | -g GID -r:建立系统用户组 | groupadd [ ] 用户组名 | 类似useradd |
groupmod | 修改参数 | -g GID -n :修改名称 | groupmod [ ] 用户组名 | 类似useradd | |
groupdel | 删除用户组 | 类似userdel 没有任何用户以此作为初始用户组才可以删 | |||
gpasswd | 用户管理员功能(相当于QQ群管理员) | 没有参数:设置密码 -A:将用户甚至成管理员 -M:将某些用户加入用户组中 -r:将密码删除 -R:将密码栏失效 -a:(管理员)将用户加入用户组中 -d:(管理员)将用户从用户组中删除 | gpasswd 用户组名 gpasswd [-A 用户1,用户2...] [-M 用户A,用户B...] 用户组名 gpasswd [-rR] 用户组名 gpasswd [-ad] 用户 用户组名 管理员的操作 |
当我们想让某个用户无法登录系统,可以将其的shell设置成/sbin/nologin这个shell。
如果我们想让user1、user2、user3同时开发一个项目,这三个人可以同时在一个目录下工作,并且还拥有自己的家目录和基本的私有用户组:
要将这三个人放到同一个用户组里,例如project,并且设置好工组目录例如/srv/projecta,将这个目录的用户组换成project,并且将权限设置成2770(不允许其他人进入,并且设置SGID这单个用户所创立的文件的用户组都会是project,每个人都会有权限)
如果我们想让文件针对某个用户单独设置权限要怎么做呢??
用ACL来设置。主要有两个setfacl(设置)getfacl(查看)。
命令 | 模板 | acl参数 | 作用 | 例子 |
getfcal | getfcal 文件名 | 无 | 查看acl参数 | 无 |
setfcal | setfcal [-bkRd] [-{-m | -x} acl参数] -m:添加 -x删除 | u:[使用者账号列表]:[rwx] | 特定用户权限设置 | setfcal -m u::rwx 文件 给自己对于文件rwx的权限 |
g:[用户组列表]:[rwx] | 特定用户组权限 | 基本同上 | ||
m:权限 | 【有效权限】,所有设置的权限要在这个范围内,范围外的会忽略 | setfcal -m m:r 文件 | ||
d:[u|g]:[账号|用户组]:权限 | 设置目录,未来的子目录都会按照这个权限来继承acl权限 | setfcal -m d:u:user1:r 目录 | ||
同上所有 | 删除 | setfcal -x u:user1 文件 |
身份切换成可以用【su + 用户名】,没有用户名会切换成root,但是【su】是non-login shell很多环境变量并不会改变,【su -】或者【su -l】是login shell会将环境变量都改成root的环境变量。
sudo可以让其他身份也使用root的命令,但是只有在/etc/sudoers中的用户才可以执行。将用户添加sudo的方法是用【visudo】,在root ALL=(ALL) ALL 下一行加上 用户名 ALL=(ALL) ALL。最后一列ALL是可执行的命令,如果想限制某些命令,则将ALL改成对应的绝对路径的命令,如果想免密使用 则在第四列前加上【NOPASSWD: 】 例如 用户名 ALL=(ALL) NOPASSWD: ALL。
如果想将用户组实现上面的功能,可以在%whell ALL=(ALL) ALL 后加上类似的一行。注意,用户组名前是%。
还可以用别名的方式将很多的用户名或者命令等分别设置成一个别名,用别名一起设置。【用户别名:User_Alias】【命令别名:Cmnd_Alias】。
linux用这个模块提供一连串的验证机制,返回用户的验证结果。PAM中有很多重要模块。具体的可以查看书P456.
mail寄邮件,【mail -s "主题" 用户@localhost】如果是本机用户@localhost也可以不用。
查看方式可以参考下面两个链接:
具体方法见P461。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。