一、什么是用户
Linux基于用户身份对资源访问进行控制
用户帐号: 超级用户root
普通用户
程序用户
组帐号:
基本组(私有组)
附加组(公共组)
UID和GID:
UID(User Identity,用户标识号)
GID(Group Identify,组标识号)
二、用户管理
1.用户帐号文件
passwd
用于保存用户的帐号基本信息
文件位置:/etc/passwd
每一行对应一个用户的帐号记录
[root@localhost ~]# tail -2 /etc/passwd
sabayon:x:86:86:Sabayon user:/home/sabayon:/sbin/nologin
student:x:500:500:Student User:/home/student:/bin/bash
字段1:用户帐号的名称
字段2:用户密码字串或者密码占位符“x”
字段3:用户帐号的UID号
字段4:所属基本组帐号的GID号
字段5:用户全名
字段6:宿主目录
字段7:登录Shell信息
shadow
用于保存密码字串、密码有效期等信息
文件位置:/etc/shadow
每一行对应一个用户的密码记录
[root@localhost ~]# tail -2 /etc/shadow
sabayon:!!:15495:0:99999:7:::
student:$1$po/zD0XK$4HSh/Aeae/eJ6dNj1k7Oz1:15495:0:99999:7:::
字段1:用户帐号的名称
字段2:加密的密码字串信息
字段3:上次修改密码的时间
字段4:密码的最短有效天数,默认值为0
字段5:密码的最长有效天数,默认值为99999
字段6:提前多少天警告用户口令将过期,默认值为7
字段7:在密码过期之后多少天禁用此用户
字段8:帐号失效时间,默认值为空
字段9:保留字段(未使用)
2.添加用户帐号
useradd命令
格式:useradd [选项]... 用户名
常用命令选项
-u:指定 UID 标记号
-d:指定宿主目录,缺省为 /home/用户名
-e:指定帐号失效时间
-g:指定用户的基本组名(或UID号)
-G:指定用户的附加组名(或GID号)
-M:不为用户建立并初始化宿主目录
-s:指定用户的登录Shell
3.用户帐号的初始配置文件
文件来源:新建用户帐号时,从 /etc/skel 目录中复制而来
主要的用户初始配置文件
~/.bash_profile:用户每次登录时执行
~/.bashrc:每次进入新的Bash环境时执行
~/.bash_logout:用户每次退出登录时执行
[root@localhost ~]# cat ~/.bashrc
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
……
4.设置/更改用户口令
passwd命令
格式:passwd [选项]... 用户名
常用命令选项
-d:清空用户的密码,使之无需密码即可登录
-l:锁定用户帐号
-S:查看用户帐号的状态(是否被锁定)
-u:解锁用户帐号
5.修改用户帐号的属性
usermod命令
格式:usermod [选项]... 用户名
常用命令选项
-l:更改用户帐号的登录名称
-L:锁定用户账户
-U:解锁用户账户
以下选项与useradd命令中的含义相同 -u、-d、-e、-g、-G、-s
6.删除用户帐号
userdel命令
格式:userdel [-r] 用户名
添加 -r 选项时,表示连用户的宿主目录一并删除
[root@localhost ~]# useradd stu01
[root@localhost ~]# ls -ld /home/stu01/
drwx------ 2 stu01 stu01 4096 09-09 12:38 /home/stu01/
[root@localhost ~]# userdel -r stu01
[root@localhost ~]# ls -ld /home/stu01/
ls: /home/stu01/: 没有那个文件或目录
7.改变用户密码期限
chage命令
格式:chage [选项]... 用户帐号名
常用命令选项
-M:密码的最长有效天数
-m:密码可以更改的最小天数。为零代表任何时候都可以更改密码。
-W:密码过期前,提前收到警告信息的天数。
-I:列出密码的有效天数(查看该用户的密码信息)
-E:帐号到期的日期。过了这天,此帐号将不可用。
(Chage –E 0马上过期,-1 永不过期)
三、组管理
1.组帐号文件 — group、gshadow
与用户帐号文件相类似
/etc/group:保存组帐号基本信息
/etc/gshadow:保存组帐号的密码信息
[root@localhost ~]# grep "adm" /etc/group
sys:x:3:root,bin,adm
adm:x:4:root,adm,daemon
我们现在以 lamp 用户的身份登录系统,通过执行如下命令即可知晓当前用户所属的全部群组:
[root@localhost ~]# groups lamp users
2.添加组帐号
groupadd命令
格式:groupadd [-g GID] 组帐号名
[root@localhost ~]# groupadd -g 1000 market
[root@localhost ~]# tail -1 /etc/group
market:x:1000:
3.添加、删除组成员
gpasswd命令
用途:设置组帐号密码(极少用)、添加/删除组成员
格式:gpasswd [选项]... 组帐号名
常用命令选项
-a:向组内添加一个用户
-d:从组内删除一个用户成员
-M:定义组成员列表,以逗号分隔
[root@localhost ~]# gpasswd -a benet market
正在将用户“benet”加入到“market”组中
[root@localhost ~]# grep "market" /etc/group
market:x:1000:benet
[root@localhost ~]# gpasswd -M benet,root,adm market
[root@localhost ~]# grep "market" /etc/group
market:x:1000:benet,root,adm
[root@localhost ~]# grep "market" /etc/group
market:x:1000:benet,root,adm
[root@localhost ~]# gpasswd -d root market
正在将用户“root”从“market”组中删除
[root@localhost ~]# grep "market" /etc/group
market:x:1000:benet,adm
4.删除组帐号
groupdel命令
格式:groupdel 组帐号名
[root@localhost ~]# groupdel market
[root@localhost ~]# grep "market" /etc/group
[root@localhost ~]#
四、使用用户管理器管理用户和组
1.图形化的用户和组管理工具
打开方式 “系统”→“管理”→“用户和组群”
五、文件/目录的权限和归属
1.访问权限
读取:允许查看文件内容、显示目录列表
写入:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录
可执行:允许运行程序、切换目录
2.归属(所有权)
属主:拥有该文件或目录的用户帐号
属组:拥有该文件或目录的组帐号
[root@localhost ~]# ls -l install.log
-rw-r--r-- 1 root root 34298 04-02 00:23 install.log
3.设置文件/目录的权限
chmod命令
格式1:chmod [ugoa] [+-=] [rwx] 文件或目录...
格式2:chmod nnn 文件或目录...
常用命令选项
-R:递归修改指定目录下所有文件、子目录的权限
4.使用chmod命令设置文件权限
查看文件权限
$ ls -l afile -rw-rw-r-- 1 st01 class1 0 Apr 3 16:52 afile
增加文件属主st01的执行权限(x)
$ chmod u+x afile
去除文件属组class1的写权限(w)
$ chmod g-w afile
设置属主权限为读写,属组其他用户的文件权限为读
$ chmod 644 afile
5.设置文件/目录的归属
chown命令
格式:
chown 属主 文件或目录
chown :属组 文件或目录
chown 属主:属组 文件或目录
常用命令选项
-R:递归修改指定目录下所有文件、子目录的归属
6.使用chown命令设置文件属主和属组
命令格式
chown OWNER[:[GROUP]] FILE...
设置文件afile的属主为用户st01
# chown st01 afile
设置文件afile的属组为用户组class1
# chown :class1 afile
设置文件afile的属主为st03,并设置文件的属组为class2
# chown st03:class2 afile
7.文件ACL权限
ACL是 Access Control List 的缩写,主要的目的是在提供传统的owner,group,others的read,write,execute权限之外的细部权限设定。
ACL可以针对单一使用者,单一文件或目录来进行r,w,x的权限规范,对于需要特殊权限的使用状况非常有帮助。
ACL 主要可以针对以下方面来控制权限:
使用者 (user):可以针对使用者来设定权限;
组群 (group):针对用户组为对象来设定其权限;
预设属性 (mask):还可以针对在该目录下在建立新文件/目录时,规范新数据的预设权限
8.管理文件系统访问控制列表
查看:
$ getfacl filename
修改:
$ setfacl -m u:username:rw filename
$ setfacl -m g:groupname:rw filename
删除:
$ setfacl -x u:username filename
$ setfacl -b filename