Linux关于文件和目录的访问权限

文件和目录的访问权限
文件和目录的访问权限对如下3类用户进行了分别定义:
文件拥有者(u),
*
文件拥有者所在用户组中的其它成员(g),和
所有其它用户(o)。

每个文件均拥有下列三种权限:
*
read (r): 查看文件内容
*
write (w): 修改文件
*
execute (x): 如同命令一样执行文件
每个目录均拥有下列三种权限:
*
read (r): 列出目录内容
*
write (w): 在目录中增删文件
*

execute (x): 访问目录中的文件

在此,对目录的execute权限,不仅意味着允许查看目录下文件的内容,还允许查看文件的其它信息如文件大小、修改时间。

ls可用来显示目录和文件的这些信息。参阅 ls(1)。使用ls的-l选项,就会按如下顺序显示下列信息:
*
文件类型(第1个字符)
o
-: 普通文件
o
d: 目录
o
l: 符号链接
o
c: 字符型设备节点
o
b: 块设备节点
o
p: 命名管道
o
s: 套接字
*

文件访问权限(接下来的9个字符,每3个一组依次代表user、group和other)。
*

文件的硬链接数
*

文件拥有user的用户名
*

文件所属group的用户组名
*

文件的字符数大小 (bytes)
*

文件的时间和日期 (mtime)
*

文件的名称

在root账号下可使用chown改变文件的拥有者。要改变文件的所属组,可以文件拥有者或root的身份运行chgrp。要改变目录的访问权限,可以文件拥有者或root的身份运行chmod。

# chown newowner foo
# chgrp newgroup foo
# chmod [ugoa][+-=][rwx][,...] foo

细节请参见 chown(1)、 chgrp(1) 和 chmod(1)。

例如,可以root帐号下创建一个目录树,并使其拥有者为foo,所属组为bar:

# cd /some/location/
# chown -R foo:bar .
# chmod -R ug+rwX,o=rX .

下面是3个更特殊的权限:

*

set user ID (s 或 S 代替 user's x),
*

set group ID (s 或 S 代替 group's x),
*

sticky bit (t 或 T 代替 other's x).

在此,如果隐藏在特殊权限后面的执行权限标位没有设置,则ls -l的输出中,这些标识位将使用大写字母。

为可执行文件设置set user ID位将允许用户以该文件拥有者的ID来执行该文件(例如以root身份)。同样,为可执行文件设置set group ID将允许用户以该文件所属组的ID来执行该文件(例如以root身份)。因为这些设置将引起安全风险,所以使用这些特性时要格外小心。

为目录设置set group ID,则该目录会使用BSD-like文件创建方案,即目录中所有新创建的文件均属于该目录所属的group。

为目录设置sticky bit可防止非文件拥有者移动目录中的文件。为确保全局可写目录如/tmp或组可写目录中的文件内容不被修改,不仅要关闭文件的写权限,还应设置目录的sticky bit,否则,任何对该目录有写权限的用户均可以将该文件移动到别处,然后在原地创建一个同名文件。

这儿有一些有关文件权限的有趣例子。

$ ls -l /etc/passwd /etc/shadow /dev/ppp /usr/sbin/pppd
crw-rw---- 1 root dip 108, 0 Jan 18 13:32 /dev/ppp
-rw-r--r-- 1 root root 1051 Jan 26 08:29 /etc/passwd
-rw-r----- 1 root shadow 746 Jan 26 08:29 /etc/shadow
-rwsr-xr-- 1 root dip 234504 Nov 24 03:58 /usr/sbin/pppd
$ ls -ld /tmp /var/tmp /usr/local /var/mail /usr/src
drwxrwxrwt 4 root root 4096 Feb 9 16:35 /tmp
drwxrwsr-x 10 root staff 4096 Jan 18 13:31 /usr/local
drwxrwsr-x 3 root src 4096 Jan 19 08:36 /usr/src
drwxrwsr-x 2 root mail 4096 Feb 2 22:19 /var/mail
drwxrwxrwt 3 root root 4096 Jan 25 02:48 /var/tmp

在 chmod(1) 命令里,有一种替代的数字模式来描述文件权限。这种数字模式使用 3 到 4 个八进制数字(以8为基)。 每个数字相应如下:

*

第一个可选数字: set user ID (=4)、 set group ID (=2) 和 sticky bit (=1)之和
*

第二个数字: user 的 read (=4)、write (=2) 和 execute (=1) 权限之和
*

第三个数字: 同上,用于 group
*

第四个数字: 同上,用于 other

这听起来复杂,但实际上相当简单。 从 ls -l 命令的输出中,看第(2-10)列,把它们作为二进制(以2为基)文件权限(“-”表示“0”,“rwx” 表示“1”)的表示方式来读,这种数字模式值将使你理解八进制(以8为基)的文件权限表示。 [33] 例如,尝试:

$ touch foo bar
$ chmod u=rw,go=r foo
$ chmod 644 bar
$ ls -l foo bar
-rw-r--r-- 1 penguin penguin 0 Nov 3 23:30 foo
-rw-r--r-- 1 penguin penguin 0 Nov 3 23:30 bar

默认的文件权限掩码使用 shell 内建命令 umask 设置。 参见 builtins(7)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值