文件访问权
Linux文件的访问有三种权限: 读(用字母r表示)、写(用字母w表示)、执行(用字母x表示)
某个用户 对于一个 文件
:
有读权限,表示该用户可以读取文件的内容,
有写权限,表示该用户可以修改文件内容,
有执行权限, 表示该用户可以运行该文件(当然该文件应该是可执行文件)
而 这三种权限 对目录,含义又不一样。
某个用户 对于一个 目录
:
有读权限,表示该用户可以查看该目录里面的内容,
有写权限,表示该用户可以在该目录里面 创建 和删除 文件,
有执行权限, 表示该用户可以使用 cd命令,进入该目录
对 某个文件或者目录,Linux系统需要说明 三种类型的用户
,分别具有怎样的权限
这三种类型分别是:
-
文件的所有者,英文叫 owner , 也就是 该文件的 创建者
-
文件归属的用户组里面的用户 ,英文叫 grouper,
-
其他用户 (非owner和非grouper)
Linux系统需要为每个文件和目录,指定这个三种类型的用户,具有什么r、w、x里面的哪些权限
文件存取权限的显示 可以通过"ls -l"命令显示,如:
$ ls -l file1
显示如下:
$ ls -l mysql57-community.rpm
-rwxr-xr--. 1 root root 9224 Sep 12 2016 mysql57-community.rpm
其中:
-
第2-4字符"rwx"表示此文件所有者root 对此文件的操作权限是为"可读、可写、可执行”,
-
第5-7字符"r-x" 表示此文件所归属的root组内的用户对此文件的操作权限是"可读、不可写、可执行",
-
第8-10字符"r–" 表示其他用户对此文件的操作权限是"可读、不可写、不可执行"
修改文件访问权限
文件的所有者或者root用户可以修改文件的访问权限
用chmod命令修改文件的存取权限,chmod命令的格式如下:
chmod [who][op][permission] file...
who项表示用户类型,它的内容为以下一项或多项:
u 拥有者(user --- owner)
g 与拥有者同一组的用户(group)
o 其他人(other)
a 所有人(all)
op项表示动作:
+ 表示要加上permission指定的权利
- 表示要取消permission指定的权利
permission项为存取权限,它的内容为以下一项或多项:
r 表示可读
w 表示可写
x 表示可执行
比如:
chmod u+w file1
,该命令添加了 拥有者对file1文件的写权限
chmod u-x file1
,该命令去掉了 拥有者对file1文件的执行权限
chmod ug+rwx file1
,该命令添加了 拥有者和同组用户 对file1文件的 读、写、执行权限
chmod a+rwx file1
,该命令添加了 所有人 对file1文件的 读、写、执行权限
chmod o+rx /root
, 该命令添加了 其它组 对 目录 /root
的可读可执行权限。 对于目录来说 ,可执行权限意味着,用户可以 cd 进入
到这个目录。
chmod -R o+rx /root
, 参数 -R
表示递归的意思,该命令执行结果是:其它用户可以对 /root 目录以及所有它的子目录、子文件
都有 可读可执行权限 。
改变文件所有者及文件所在组
chown将指定文件的拥有者改为指定的用户或组。
该命令的参数中,用户可以是用户名或者用户ID;组可以是组名或者组ID。文件是以空格分开的要改变权限的文件列表,支持通配符。
系统管理员经常使用chown命令,在将文件拷贝到另一个用户的名录下之后,让用户拥有使用该文件的权限.
注意:必须是有root权限的用户才能改变文件所有者。
改变文件所有者的命令格式如下:
chown [选项]... [所有者][:[组]] 文件...
例如:
chown byhy test1
,就把文件test1的所有者变更为用户byhy
chown byhy:byhy test1
,就把文件test1的所有者变更为用户byhy,所属组变为byhy
chown -R byhy dir1
,就把目录dir1以及下面所有的子目录和文件的所有者变更为用户byhy
也可以用命令chgrp改变文件所有者组,格式如下:
chgrp [选项] [组] [文件]
注意:必须是有root权限的用户才能改变文件组别的归属
比如:
chgrp byhy test1
, 就把文件test1的用户组变更为组byhy
sudo:以root权限运行程序
有的程序需要做一些特权操作,比如前面讲的用户账号管理:adduser、deluser。
通常我们要执行这样的程序必须以root用户登录去执行。
但是,我们有时却希望给某几个信任的用户授予这样的权限,允许他们某次可以申请以以root权限执行该程序。
Windows里面的 以管理员权限
运行某个程序,就是这样。
Linux上也有这种方法,就是使用命令 sudo
比如
sudo adduser byhy3
就是申请以root权限运行 adduser byhy3
这个命令。
当然,很明白,不是你说申请运行就一定可以的,前提是你当前登录的账号 要在系统设置里面 允许这样做。
这个设置是 在 /etc/sudoers
里面配置的。 如下
root ALL=(ALL:ALL) ALL
%admin ALL=(ALL) ALL
%sudo ALL=(ALL:ALL) ALL
byhy2, byhy3 ALL = /sbin/shutdown, /sbin/reboot
通过配置这个文件,可以设置
哪些用户(或者哪些组里面的用户) ,在什么地方, 以 哪些账号的权限 , 运行哪些程序。
一般不建议直接修改这个文件, 防止语法写错,导入整个规则被破坏。
而是使用命令 visudo
命令修改, 这个命令可以对错误的修改做检查,防止意外。
通常,我们会给某个组设置规则, 然后只需要把某些用户加入组中即可。
比如,Ubuntu上可以把某个用户加入 sudo 这个组, 既可以拥有 任何地方、以任何账号的权限、运行任何程序 的能力。
把用户加入组的命令,就是使用 usermod, 上面已经讲过。
注意:通常修改组后,该账号需要重新登录一下,才有组的sudo 权限。