用户和组ID
信息控制
- 通过
/etc/passwd
和/etc/group
保存用户和组信息,通过/etc/shadow
保存密码口令及其变动信息,每行一条记录。用户和组分别用UID
和GID
表示,一个用户可以同时属于多个组,默认每个用户必属于一个与之UID
同值同名的GID
- 对于
/etc/passwd
, 每条记录字段分别为用户名: 口令
(在/etc/shadow
加密保存)UID:GID
(默认UID
): 描述注释: 主目录:登录shell
(第一个运行的程序) - 对于
/etc/group
, 每条记录字段分别为组名:口令
(一般不存在组口令):GID
:组成员用户列表(逗号分割的用户UID列表)
- 对于
/etc/shadow
,每条记录字段分别为:登录名
:加密口令
:最后一次修改时间
:最小时间间隔
:最大时间间隔
:警告时间
:不活动时间
:
文件权限控制信息
Linux
中的文件有如下类型:
- 普通文件,又包括文本文件和二进制文件,可用
touch
创建 - 套接字文件,用于网络通讯,一般由应用程序在执行中间接创建
- 管道文件是有名管道,而非无名管道,可用
mkfifo
创建 - 字符文件和块文件均为设备文件,可用
mknod
创建 - 链接文件是软链接文件,而非硬链接文件, 可用
ln
创建
访问权限控制组
分为三组进行控制:
user
包含对文件属主设定的权限group
包含对文件属组设定的权限others
包含对其他者设定的权限
下面给出常见(但非全部)的权限值,包括:
r
表示具有读权限w
表示具有写权限x
一般针对可执行文件/
目录,表示具有执行/
搜索权限。s
一般针对可执行文件/
目录,表示具有赋予文件属主权限的权限,只有user
和group
组可以设置该权限。t
一般针对目录,设置粘滞位后,有权限的用户只能写、删除自己的文件, 否则可写、删除目录所有文件
通过ls -l
可以查看到其文件类型及权限,通过chmod
修改权限:
- 第1个字符表示文件类型,其中普通文件(-)、目录文件(d)、套接字文件(s),管道文件(p),字符文件(c),块文件(b),链接文件(l)
- 第 2 个字符开始的
-rwxr-xr-x
部分表示文件的权限位,共有 9 位。
对于文件 /usr/bin/qemu-i386 , 这个权限控制的含义是:
- 第 2~4 位的
rwx
表示该文件可被它的owner(属主)
以r
或w
或x
的权限访问。 - 第 5~7 位的
r-x
表示该文件可被与该文件同一属组的用户以r
或x
的权限访问 - 第 8~10 位的
r-x
表示该文件可被其它未知用户以r
或x
的权限访问。
r,w,x
权限对每一权限控制组的权限用一位8进制来表示;例如:755
表示rwxr-xr-x
修改文件权限
参考man chmod文档的DESCRIPTION段落得知:
- u符号代表当前用户。
- g符号代表和当前用户在同一个组的用户,以下简称组用户。
- o符号代表其他用户。
- a符号代表所有用户。
- r符号代表读权限以及八进制数4。
- w符号代表写权限以及八进制数2。
- x符号代表执行权限以及八进制数1。
- X符号代表如果目标文件是可执行文件或目录,可给其设置可执行权限。
- s符号代表设置权限suid和sgid,使用权限组合u+s设定文件的用户的ID位,g+s设置组用户ID位。
- t符号代表只有目录或文件的所有者才可以删除目录下的文件。
- +符号代表添加目标用户相应的权限。
- -符号代表删除目标用户相应的权限。
- =符号代表添加目标用户相应的权限,删除未提到的权限。
# 添加组用户的写权限。
chmod g+w ./test.log
# 删除其他用户的所有权限。
chmod o= ./test.log
# 使得所有用户都没有写权限。
chmod a-w ./test.log
# 当前用户具有所有权限,组用户有读写权限,其他用户只有读权限。
chmod u=rwx, g=rw, o=r ./test.log
# 等价的八进制数表示:
chmod 754 ./test.log
# 将目录以及目录下的文件都设置为所有用户拥有读写权限。
# 注意,使用'-R'选项一定要保留当前用户的执行和读取权限,否则会报错!
chmod -R a=rw ./testdir/
# 根据其他文件的权限设置文件权限。
chmod --reference=./1.log ./test.log
修改文件所有者
必须要有管理员权限才可以使用
# 修改文件所有者
chown user filename
# 修改文件夹所有者
chown user -R dirname
# 修改文件所有者
chgrp user filename
# 修改文件夹所有者
chgrp user -R dirname