/etc/passwd
/etc/group
/etc/shadow
/etc/gshadow
/etc/default/useradd
/etc/login.defs
/etc/kel/*
/etc/pam.d/passwd -----PAM密码管理机制所在的位置
/etc/skel ----home目录基准参考目录
/etc/sudoers ----该档案中记录着可以执行sudo命令的帐号
-
修改/etc/passwd中的帐号信息会导致文档属性无法显示拥有者的姓名,取而代之的是UID,因为系统无法在/etc/passwd找到对应用户的-
b. 通过修改/etc/passwd第7栏的信息来改变默认home目录(usermod),对我个人很实用;或者通过修改地8栏给用户一个登录后的默认sheel
c./sbin/nologin这个sheel可以让用户在不获得sheel环境,可以用来做为纯pop邮件帐号
/etc/passwd文件解析[1-1][11-2][1-3]
/etc/shadow 9个字段的含义 [1-4,5,6]
找回丢失的密码 [1-7]
4. 关于群组:有效群组,与初始群组,groups,newgrp
/etc/group ----[1-8]
$ useradd -m yxl ----创建行用户yxl并自动长生主目录/home/yxl(普通用户)
$ sudo passwd yxl truman ----创建帐号密码
$ sudo usermod -s /bin/bash yxl ----修改yxl的登录sheel为/bin/bash(默认是/bin/sh)
$ sudo grep yxl /etc/passwd /etc/group /etc/shado
/etc/passwd:yxl:x:999:999::/home/yxl:/bin/bash
/etc/group:yxl:x:999:
/etc/shadow:yxl:$6$oVhKiz3G$AWIETaQnyPd4pKME/XYfOBWlHJSBDJLjFLCc.01Jd8zx4xreNnlYTkvK8
B.OJHx6QdItzTis1p/4LYhx7EhFx.:16023::::::
$ sudo usermod -G anderson yxl -----将yxl加到anderson组中
$ sudo usermod -G sudo yxl ----将yxl附加到sudo组中
$ groups ----查看当前用户支持的群组(第一个是有效群组)
$ newgrp adm ----切换到adm这个群组为有效群组(现在创建的新文档将属于当前用户,并属于当前有效群组)
/etc/gshadow ----[1-9]
实战:
1.默认方式建立用户
$ useradd vbird1 ----[1-10]
$ sudo passwd vbird1 ----设置密码
2.-u /-g
$ useradd -u 700 -g users vbird2 ----初始群组为users,初始UID为700,建立用户vird2
3.-c
$ useadd -r bird3 ----不会主动建立家目录
4.useradd参考档:查看useradd的默认情况[1-11]
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/sh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no ----==no时不会在/var/spool/mail下建立文档
5.UID/GID默认参考档:/etc/login.defs
[1-12,14]
5.使用standard input建立用户的密码
$ sudo echo "truman" | passwd --stdin vbird1 ----[1-15]
6.passwd命令 /etc/passwd /etc/pam.d/passwd /etc/shadow
$ sudo passwd -S yxl ----查看yxl的帐号情况
$ sudo passwd -x 60 -i 10 yxl ----60天变更,10天失效密码过期设置
$ sudo passwd -l yxl ----将yxl这个账户锁定(会因为系统无法正确读取shadow中的密码字段而无法登录)
$ sudo grep yxl /etc/shadow ----查看什么发生了变化
yxl:!$6$oVhKiz3G$AWIETaQnyPd4pKME/XYfOBWlHJSBDJLjFLCc.01Jd8zx4xreNnlYTkvK
8B.OJHx6QdItzTis1p/4LYhx7EhFx.:16023::60::10::
$ sudo passwd -u yxl
passwd:密码过期信息已更改。
$ sudo grep yxl /etc/shadow
yxl:$6$oVhKiz3G$AWIETaQnyPd4pKME/XYfOBWlHJSBDJLjFLCc.01Jd8zx4xreNnlYTkvK
8B.OJHx6QdItzTis1p/4LYhx7EhFx.:16023::60::10::
7.chage命令 [1-18]
$ sudo chage -l yxl ----查看yxl的详细密码属性信息(比passwd -S好用多了)
案例1:给别人一个初始密码,当该用户登录是必须修改密码,否则无法登录
$ sudo useradd nemo
$ sudo echo "yxl694852" | passwd --stdin nemo(ubuntu不支持) or $ sudo passwd nemo
$ sudo sudo chage -d 0 nemo
8.usermod[1-16]
案例一:修改yxl的说明栏
$ sudo usermod -c "MyGirl" yxl
$ grep yxl /etc/passwd
案例二:设置yxl的密码在2100年失效
$ sudo usermod -e "2100-01-01" yxl
案例 三:给已经创建的nemo账户一个home目录
$ ll -d ~nemo
$ sudo cp -a /etc/skel/ /home/nemo ---将/etc/skel复制过来作为/home/nemo
$ sudo chown -R nemo:nemo /home/nemo ----改变其拥有者和所属组
$ sudo chmod 700 /home/nemo ----改变目录的权限
9.userdel [1-17]
注意:如果只是暂时不想让该用户存在,可以考虑将密码帐号有效剩余天数(/etc/shadow)设为0或者$ sudo passwd -d username删掉密码
只有确定可以完全清楚哦某个账户时 才考虑userdel
$ find / -user vbird1 ---全盘查找属于vbird1的档案
$ sudo userdel -r vbird1 ----连同vbird1的home目录一起清除
10.finger [1-19]
案例一:
$ finger anderson ----观察anderson帐号相关属性
Login: anderson Name: anderson
Directory: /home/anderson Shell: /bin/bash
On since Fri Nov 15 00:54 (CST) on tty7 from :0
1 hour 4 minutes idle
On since Fri Nov 15 00:54 (CST) on pts/1 from :0
1 second idle
No mail.
No Plan.
案例二:建立自己的计划档
$ echo "I will go to BeiJIng the day after tomorrow." > ~.plan ----不知道为什么我的机器上没有~/.plan ~./project ~/.pgpkey
案例三:目前登录的用户与登录时间
$ finger
11.chfn:修改i/添加个人属性信息
12.chsh :change sheel
案例一:用anderson的身份列出系统上所有合法的sheel,并制定/bin/sh为自己的sheel
$ chsh -l <==> $ cat /etc/shells ----ubuntu上没有-l 参数
案例二:修改当前用户的hshell
$ chsh -s /bin/rbash;grep anderson /etc/passwd <==> $ sudo usermod -s /bin/rbash anderson
13.id :查看某人或自己的UID/GID等信息,还可以用来判断有没有某个用户
$ id <==> $ who am i | id ----查看当前用户的信息
$ id yxl ----查看yxl的UID/GID等信息
14.groupadd, groupmod, groupdel, gpaasswd
groupadd
案例一:新建一个群组
$sudo groupadd webteam
$sudo grep webteam /etc/group /etc/shadow
/etc/group:webteam:x:1002:
/etc/gshadow:webteam:!::
groupmod
注意:不要随便更改GID
案例二:将案例一新建的webeam组名改为myteam,GID改为
$ sudo groupmod -g 139 -n myteam webteam
$ sudo grep myteam /etc/group /etc/gshadow
/etc/group:myteam:x:139:
/etc/gshadow:myteam:!::
groupdel
注意:如果该组中还有其他帐号则无法顺利删除(可以先更改帐号的GID或者删除那个帐号)
案例三:删除刚刚建立的群组
$ sudo groupdel myteam
gpasswd
案例四:建立一个新的群组myteam,交给yxl管理(群组管理员)
$ sudo groupadd -g 139 myteam ----建立群组myteam,GID为139(勤人坡)
$ sudo gpasswd myteam ----设置群组密码(truman)
$ sudo gpasswd -A yxl myteam ----将yxl添加为myteam的群组管理员
$ su yxl ----却换到yxl
$ gpasswd -a anderson myteam ----用易小丽的身份将anderson加为myteam的群组组员
$ grep myteam /etc/group ----查看
帐号管理实战:
案例一:新建一个群组mathwebteam,然后提供一个项目的开发目录,帐号信息如下
帐号 | 帐号备注 | 支援次要群组 | 是否可以登录主机 | passwd |
neo | the boss | mathwebteam | yes | truman |
xk | the crew | mathwebteam | yes | truman |
yl | the crew | no | no | truman |
一:建立群组
$ sudo groupadd mathwebteam
二:建立帐号
$ sudo useradd -G mathwebteam -c "the caption" neo
$ sudo useradd -G mathwebteam -c "the crew" xk
$ sudo useradd -c "the crew" -s /sbin/nologin yl
三:给帐号设置密码
$ sudo passwd neo
$ sudo passwd yxl
$ sudo passwd xk
四:建立项目目录
$ sudo mkdir /srv/project
$ sudo chgrp mathwebteam /srv/project
$ sudo chmod 2770 /srv/project
$ ll -d /srv/project
五:让anderson具备对/srv/project rx的权限(acl应用)
测试yl能否进入/srv/project
$ su anderson ----切换
$ cd /srv/project ----不行
bash: cd: /srv/project/: 权限不够
#$ sudo setfacl -m u:anderson:rx /srv/project ----让anderson对/srv/project具备rx的权限
$ sudo setfacl -m d:u:anderson:rx /srv/project ----让anderson对/srv/project及其地下的所有文件都具备rx的权限
$ cd /srv/priject ----现在anderson已经可以进入/srv/project中了
$ touch te ----anderson仍然不具备w的权限
$ getfacl /srv/project
# file: srv/project/
# owner: root
# group: mathwebteam
# flags: -s-
user::rwx
user:anderson:r-x ----增加了anderson的权限
group::rwx
mask::rwx
other::---
15.acl(access control list)
一:查看我的机器是否支持acl
$ mount | grep acl ----我的ubuntu没有查到任何信息
$ sudo dumpe2fs -h /dev/sda9 | grep acl ----通过产看根目录(我的ubuntu的根目录在/dev/sda9)的超级块来看看有没有acl的信息
dumpe2fs 1.42.8 (20-Jun-2013)
Default mount options: user_xattr acl ----看来我的ubuntu默认支持acl
如果不支持可以执行以下命令是系统的文件系统支持:
$ sudo mount -o remount,acl /
[sudo] password for anderson:
$ mount |grep acl
/dev/sda9 on / type ext4 (rw,errors=remount-ro,acl)
二:acl的使用技巧
setfacl [1-20]
案例一:在test中创建一个文档acl_test1并使用setfacl对acl_test1的权限进行设置
$ mkdir /home/anderson/test
$ touch /home/anderson/test/acl_test1
$ setfacl -m u:yxl:rwx acl_test1 ----使yxl具备rwx权限
$ ll -d acl_test1
-rw-rwxr--+ 1 anderson anderson 0 11月 16 14:14 acl_test1*
$ setfacl -m u::rwx acl_test1
$ ll -d acl_test1
-rwxrwxr--+ 1 anderson anderson 0 11月 16 14:14 acl_test1*
$ getfacl acl_test1 ----查看acl_test1档案的acl属性
# file: acl_test1
# owner: anderson
# group: anderson
user::rwx
user:yxl:rwx
group::r--
mask::rwx
other::r--
$ setfacl -m g:myteam:rx acl_test1 ----给myteam这个群组rx权限
$ getfacl acl_test1 ----查看acl_text1这个的档案的acl权限设置
# file: acl_test1
# owner: anderson
# group: anderson
user::rwx
user:yxl:rwx
group::r--
group:myteam:r-x ----多了这个群组的权限设定
mask::rwx
other::r--
针对有效权限mask的设置
$ setf -m m:r acl_test1 ----针对acl_test1设置mask(权限上限)为r,这样acl设置最高权限只有r
三:帐号的切换
su
$ su ----切换为root账户,变量设定方式为no-login shell,环境变量不会改变
$ su - ----以login shell的方式切换为root
$ su -c "head -n 3 /etc/shadow" ----切换为root执行一条命令,执行完毕后马上切换回来
$ su -l yxl or $ su yxl ----切换到yxl这个普通用户
sudo
$ sudo -u yxl touch /home/yxl/sudotest ----使用yxl帐号建立sudotest
$ sudo -u yxl sh -c "mkdir ~yxl/www;cd ~yxl/www; echo 'This is index.html file' " -----一串指令
visudo和/etc/sudoers [1-21]
案例一:让yxl可以通过sudo切换为root,限制仅可以使用passwd帮助anderson修改帐号的密码,但不能修改anderson的密码
$ sudo visudo
yxl ALL=(root) !/usr/bin/passwd,/usr/bin/passwd [a-zA-Z]*,!/usr/bin/passwd anderson,!/usr/bin/passwd root
案例二:针对案例一优化,以一种更加有弹性更易扩展维护的方式设置[1-23]
$ sudo visudo
#User_Alias and Cmnd_Alias
User_Alias ADMPW =yxl,yl #这次添加两个助手
Cmnd_Alias ADMPWCOM=!/usr/bin/passwd,/usr/bin/passwd [a-zA-Z]*,!/usr/bin/passwd anderson,!/usr/bin/passwd root
ADMPW ALL=(root) ADMPWCOM
案例三:sudo 搭配su实现普通帐号在不知道root密码的情况下使用root身份进行工作(sudo su -)
注意:仅在这些帐号您都十分信任的情况下
$ sudo visudo
User_Alias ADMINS=user1,user2,user3
ADMINS ALL=(root) /bin/su -
四.用户的特殊shell与PAM模块
1: nologin shell :我的ubuntu的nologin shell为/usr/sbin/nologin,而且我没在/etc/下找到nologin.txt,新建了一个也不起作用
2:passwd呼叫PAM接口的过程[1-24]
以下的学习平台更换为centos 6.4 on vmware 10.0.1
3:PAM控制旗标所造成的回报流程[1-25]
4:centos 6的PAM预设档案
/etc/pam.d/login ----登入系统执行的pam验证流程
/etc/pam.d/ststem-auth ----被多次呼叫
/etc/pam.d/* ----各个程序的pam配置文件
/etc/security/* ----其它环境的pam配置文件