目录
用户和组帐号概述
Linux基于用户身份对资源访问进行控制
用户帐号:
- 超级用户root
- 普通用户
- 程序用户
组帐号:
- 基本组(私有组)
- 附加组(公共组)
UID和GID:
- UID(User Identity,用户标识号)
- GID(Group Identify,组标识号)
用户账号文件
文件位置:/etc/passwd
每一行对应一个用户的帐号记录
添加用户账号——useradd
格式:useradd [选项]... 用户名
常用命令选项:
- -u:指定UID标记号
- -d:指定宿主目录,缺省为/home/用户名
- -e:指定账号失效时间
- -g:指定用户的基本组名(或UID号)
- -G:指定用户的附加组名(或GID号)
- -M:不为用户建立并初始化宿主目录
- -s:指定用户登录Shell
- -p:指定用户的密码
用户账号的初始配置文件
文件来源
新建用户账号时,从/etc/skel 目录中复制过来
主要的用户初始配置文件
- ~/.bash_profile:用户每次登录时执行
- ~/.bashrc:每次进入新的Bash环境时执行
- ~/.bash_logout:用户每次退出登录时执行
设置/更改用户口令——passwd
格式 passwd [选项]... 用户名
常用命令选项
- -d:清空用户的密码,使之无需密码即可登录
- -l:锁定用户账号
- -S:查看用户账号的状态(是否被锁定)
- -u:解锁用户账号
修改用户账号的属性——usermod
格式:usermod [选项]... 用户名、
常用命令选项:
- -l:更改用户账号的登录名称
- -L:锁定用户账号
- -U:解锁用户账号
- 以下选项与useradd命令中的含义相同 -u,-d,-e,-g,-G,-s
删除用户账号——userdel
格式:userdel [-r] 用户名
添加 -r 选项时,表示连用户的宿主目录一并删除
改变用户密码期限——chage
格式:chage [选项]... 用户账号名
常用命令选项
- -M:密码的最长有效天数
- -m:密码可以更改的最小天数。为0代表任何时候都可以更改密码
- -W:密码过期前,提前收到警告信息的天数
- -l:列出密码的有效天数
- -E:账号到期的日期。过了今天,此账号不可用
组账号文件
与用户帐号文件相类似
/etc/group:保存组帐号基本信息
/etc/gshadow:保存组帐号的密码信息
添加组账号
格式:groupadd [-g GID] 组账号名
添加、删除组成员——gpasswd
用途:设置组帐号密码(极少用)、添加/删除组成员
格式:gpasswd [选项]... 组帐号名
常用命令选项
- -a:向组内添加一个用户 gpasswd -a benet market
- -d:从组内删除一个用户成员 gpasswd -d root market
- -M:定义组成员列表,以逗号分隔 gpasswd -M benet,root,adm market
删除组账号——groupdel
格式:groupdel 组账号名
文件/目录的权限和归属
访问权限
- 读取:允许查看文件内容、显示目录列表
- 写入:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录
- 可执行:允许运行程序、切换目录
归属(所有权)
- 属主:拥有该文件或目录的用户帐号
- 属组:拥有该文件或目录的组帐号
权限项 | 读 | 写 | 执行 |
字符表示 | r | w | x |
数字表示 | 4 | 2 | 1 |
权限分配 | 文件所有者/文件所属组/其他用户 |
设置文件/目录的权限——chmod
格式1 chmod [ u g o a] [+ - =] [rwx] 文件或目录
u、g、o、a 分别表示 属主、属组、其他用户、所有用户
+、-、= 分别表示 增加、去除、设置权限
rwx:对应的权限字符
格式2:chmod [3位八进制数] 文件或目录...
常用命令选项
- -R:递归修改指定目录下所有文件、子目录的权限
ex:
- 查看文件权限 $ 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
设置文件/目录的归属——chown
格式:
- chown 属主 文件或目录
- chown :属组 文件或目录
- chown 属主:属组 文件或目录
常用命令选项:
-R:递归修改指定目录下所有文件、子目录的归属
ex:
- 设置文件afile的属主为用户 st01 # chown st01 afile
- 设置文件afile的属组为用户组 class1 # chown :class1 afile
- 设置文件afile的属主为st03,并设置文件的属组为 class2 # chown st03:class2 afile
文件ACL权限
ACL是 Access Control List 的缩写,主要的目的是在提供传统的owner,group,others的read,write,execute权限之外的细部权限设定。
ACL可以针对单一使用者,单一文件或目录来进行r,w,x的权限规范,对于需要特殊权限的使用状况非常有帮助。
ACL 主要可以针对以下方面来控制权限:
- 使用者 (user):可以针对使用者来设定权限;
- 组群 (group):针对用户组为对象来设定其权限;
- 预设属性 (mask):还可以针对在该目录下在建立新文件/目录时,规范新数据的预设权限
管理文件系统访问控制列表
查看:
- $ getfacl filename
修改 :
- $ setfacl -m u:username:rw filename
- $ setfacl -m g:groupname:rw filename
删除 :
- $ setfacl -x u:username filename
- $ setfacl -b filename
ex:
将/etc/fstab 复制到/var/tmp/fstab ,设置harry可以读写,natasha不能做任何操作,其他用户可读,设置manager组为fstab 所属组
cp -r /etc/fstab /var/tmp/fstab
setfacl -m u:harry:rw- /var/tmp/fstab
setfacl -m u:natasha:--- /var/tmp/fstab
setfacl -m o::r-- /var/tmp/fstab
chgrp manager /var/tmp/fstab