Linux之用户及文件权限管理
前言:Linux 是一个多用户的操作系统;Linux哲学思想之一—“一切皆文件”。说明在学习Linux过程中,用户及文件权限的管理是非常重要滴。本文主要是引用了CentOs/RedHat 7.1的命令。
一.用户、组管理
1).用户、组类型:
超级用户(管理员):root用户具有一切权限,只有在进行系统维护(如创建用户、分配权限)时用到;由于root用户权限过大,为了避免管理员的误操作导致不可逆的后果,所以在非必要的情况下不用root用户登录。
普通用户:为了能让使用者能调用系统资源以及使用某些应用程序时建立的,一般情况下都使用普通用户登录系统。
管理员组:管理的专用组,指root组
普通用户组:普通用户的组,容器,一个组可包含多个用户,一个用户可对应多个组
系统组:系统自动创建的组
私有组:即基本组,在创建用户时未指定用户组的时候自动创建的与用户名的组。
2).用户、组标识:
UID(UserID):Linux系统不认识用户名,只认识用户ID号;所以每个用户都具有一个ID号。
UID表示为16bits二进制数字:0-65535
管理员的ID号:0
普通用户:1-65535
系统用户:1-999
登录用户:1000-60000
用户与ID号可以在/etc/passwd中查看。
组标识:
GID(GroupID):每个组对应的ID号。
管理员组:0
普通用户组:1-65535
系统用户组:1-999
登录用户组:1000-60000
组和组ID号可以在/etc/group中查看。
3).用户、组配置文件:/etc/passwd、/etc/group
passwd中每行共有7列,分别是:用户名:密码:UID:GID:说明信息:组目录:用户登录shell。
group中每行共有4列,分别是:组名:密码:GID:该组用户成员。
4).用户、组密码文件:/etc/shadow、/etc/gshadow
shadow中每行共有7列,分别是:用户名:加密的密码:最近一次修改密码的时间:最短使用期限:最长使用期限:警告期限:过期期限:保留时间
gshadow中每行共有4列,分别是:组名:加密的密码:管理组:该组用户成员
5).用户、组管理命令总结:
useradd、usermod、userdel、groupadd、groupmod、groupdel、passwd、gpasswd、chage、chsh、id、su、who、w、whoami
注:下文只包含以上命令的常用选项说明,若需要具体说明信息请查看man file
useradd:创建用户
useradd [选项] 登录名
-u:指定UID
-g:指定基本组ID,基本组必须存在
-G:指定附加组ID
-s:指定用户登录shell
usermod:修改用户信息
usermod [选项] 登录名
-u:修改用户UID号
-g:修改用户所属基本组
-G:覆盖原来所属的附加组
-aG:追加附加组
-L,-U:锁定与解锁用户密码
userdel:删除用户
userdel [选项] 登录名
-r:删除用户及其家目录
groupadd:添加组
groupadd [选项] 组名
-g:指定GID
groupmod:修改组信息
groupmod [选项] 组名
-g:修改GID
-n:修改组名
groupdel:删除组
groupdel [选项] 组名
passwd:设置用户密码
passwd [选项...] <帐号名称>
-d:删除已命名帐号的密码
-l:锁定指名帐户的密码
-u:解锁指名账户的密码
-e:过期期限,日期
-i:非活动期限
-n:密码的最短使用期限
-x:密码的最长使用期限
-w:警告期限
--stdin:从标准输入读取密码
gpasswd:设置组密码
gpasswd [选项] 组
-a:向组中添加用户
-d:从组中移除用户
chage:更改用户密码过期信息
chage [选项] 登录名
-d:将最近一次密码设置时间设为“最近日期”
-m:将两次改变密码之间相距的最小天数设为“最小天数”
-M:将两次改变密码之间相距的最大天数设为“最大天数”
-W:将过期警告天数设为“警告天数”
chsh:改变登录shell
chsh [选项] [用户名]
-s:指定登录 shell
id:显示用户的有效ID
id [OPTION]... [USER]
-u: 显示有效的UID
-g: 显示用户的基本组ID
-G:显示用户所属的所有组的ID
su:切换用户
su [选项] [-] [USER [参数]...]
-,-l:登录式切换
who:显示当前已登录的用户信息
who [选项]... [ 文件 | 参数1 参数2 ]
-b:上次系统启动时间
-d:显示已死的进程
-q:列出所有已登录用户的登录名与用户数量
-r:显示当前的运行级别
w:显示登录用户和正在执行的程序
w [options]
whoami:显示与当前的有效用户ID 相关联的用户名
whoami [选项]...
二.文件权限管理
1).Linux文件类型
-:常规文件
d:目录文件
b:块设备文件,支持以“block”为单位进行随机访问
c:字符设备文件,支持以“character”为单位进行线性访问
l:符号链接文件
p:命名管道
s:套接字文件
2).Linux文件属性
例:ls -l(以长格式查看当前目录下的文件信息)出现下面内容
“drwxrwxrwx”
含义:
我们把以上的字段切割为4个部分
第一部分:第一个字符d,表示Linux文件类型,上面有说明
第二部分:第一组rwx三个字符,代表用户权限
第三部分:第二组rwx三个字符,代表用户所属组的权限
第四部分:第三组rwx三个字符,代表其它用户的权限
权限说明:
r:read 读取权限;w:write 写入权限 x:excutable 执行权限
在8进制中,r、w、x、分别代表:4、2、1;记住就行
针对文件:
r:可获取文件的数据
w: 可修改文件的数据
x:可将此文件运行为进程
针对目录:
r:可使用ls命令获取其下的所有文件列表
w: 可修改此目录下的文件列表;即创建或删除文件
x: 可cd至此目录中,且可使用ls -l来获取所有文件的详细属性信息
3).文件操作命令简述:
ls、mkdir、touch、rmdir、rm、mv、cd、cp、more、less、head、tail、 cat、tac ......
ls:列出文件或目录相关信息
ls [选项]... [文件]...
-a: 显示所有文件,包括隐藏文件
-A:显示除.和..之外的所有文件
-l: --long, 长格式列表,即显示文件的详细属性信息
-h, --human-readable:对文件大小单位换算;换算后结果可能会非精确值
-d:查看目录自身而非其内部的文件列表
-r: reverse, 逆序显示
-R: recursive,递归显示
mkdir:创建目录
mkdir [选项]... 目录...
-p: 自动按需创建父目录
-v:显示详细过程
-m:直接给定权限
touch:创建文件
touch [选项]... 文件...
-c: 指定的文件路径不存在时不予创建
-a: 修改access time
-m:修改modify time
rmdir:删除指定的空目录
rmdir [选项]... 目录...
-p:如果父目录为空,一并删除;
-v: 详细执行过程;
rm:删除文件或目录
rm [选项]... 文件...
-i:删除前提示
-f:强制删除
-r: 递归删除
-rf:请慎用
mv:移动
mv [源文件或目录] [ 目的目录]
-i:交互式
-f:强制
cd:切换目录
cd [ 目录]
cp:复制
cp [选项]...源...目标
-i:交互式复制,即覆盖之前提醒用户确认
-f:强制覆盖目标文件
-r, -R:递归复制目录
more:分页浏览文本文件
more 文件名
less:分页浏览文本文件
less 文件名
head:查看文本首部
head [选项] 文件名
-n:指定行数
tail:查看文本尾部
tail [选项] 文件名
-n:指定行数
cat:查看文本内容
cat [选项]... [文件名]...
-n:给显示的文本行编号
tac:查看文本内容倒序
tac [选项]... [文件名]...
-n:给显示的文本行编号
4).文件目录权限管理命令:
chmod、chown、chgrp
chmod:用于改变文件或目录的访问权限,用它控制文件或目录的访问权限
命令格式三个:
1.chmod [选项]...模块[,模块]...文件名...
2.chmod [选项]...八进制-模块 文件名...
3.chmod [选项]...--reference=参照文件名 目标文件名...
举例说明:
1.chmod [u、g、o、a] [=、+、-] [r、w、x] 文件名
u:属主、g:属组、o:其他用户、a:所有
2.chmod [777] 文件名
777=rwx:上面有说明
3.chmod --reference=源文件(想要参照的文件路径) 目标文件名
--reference :参考,引用
chown:用于改变用户属主、属组 1.chown [选项]... [属主][:[属组]] 文件名...
2.chown [选项]... --reference=参照文件名 目标文件名...
-R:递归修改
举例说明:
1.chown root:root 文件名
2.chown --reference= 源文件(想要参照的文件路径) 目标文件名
chgrp:修改文件用户组
chgrp [选项]... 属组 文件名...
chgrp [选项]...--reference=参照文件名 目标文件名...
以上是个人暂时总结出来的命令,如有遗漏请补充;谢谢。