权限管理:
ls -l
rwxrwxrwx:
左三位:定义user(owner)的权限
中三位:定义group的权限;
右三位:定义other的权限
进程安全上下文:
进程对文件的访问权限应用模型:
进程的属主与文件的属主是否相同;如果相同,则应用属主权限;
否则,则检查进程的属主是否属于文件的属组;如果是,则应用属组权限;
否则,就只能应用other的权限;
权限:
r:readable, 读
w:writable, 写
x:excutable,执行
文件:
r:可获取文件的数据;
w: 可修改文件的数据;
x:可将此文件运行为进程;
目录:
r:可使用ls命令获取其下的所有文件列表;
w: 可修改此目录下的文件列表;即创建或删除文件;
若用户对/tmp/test/a.txt中的test目录有写权限,对a.txt没有,则他不能打开a.txt进行编辑,但可以删除a.txt(能否删除文件,只要对它所属的目录有写权限)
x: 可cd至此目录中,且可使用ls -l来获取所有文件的详细属性信息;
若对目录没有执行权限,则不能查看该目录的文件列表
mode:rwxrwxrwx
ownership:user, group
权限组合机制:
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
权限管理命令:
chmod命令:
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...
三类用户:
u:属主
g:属组
o:其它
a: 所有
(1) chmod [OPTION]... MODE[,MODE]... FILE...
MODE表示法:
赋权表示法:直接操作一类用户的所有权限位rwx;
u=
g=
o=
a=
例子:
[root@bogon go_dir]# ll test.txt
-rw-r--r--. 1 root root 0 Apr 25 02:05 test.txt
[root@bogon go_dir]# chmod g=rw test.txt
[root@bogon go_dir]# ll test.txt
-rw-rw-r--. 1 root root 0 Apr 25 02:05 test.txt
[root@bogon go_dir]# chmod gu=r test.txt
[root@bogon go_dir]# ll test.txt
-r--r--r--. 1 root root 0 Apr 25 02:05 test.txt
[root@bogon go_dir]# chmod u=rwx,g=rw,o= test.txt
[root@bogon go_dir]# ll test.txt
-rwxrw----. 1 root root 0 Apr 25 02:05 test.txt
授权表示法:直接操作一类用户的一个权限位r,w,x;
u+, u-
g+, g-
o+, o-
a+, a-
例子:
[root@bogon go_dir]# chmod u-x test.txt
[root@bogon go_dir]# ll test.txt
-rw-rw----. 1 root root 0 Apr 25 02:05 test.txt
[root@bogon go_dir]# chmod ug+x test.txt
[root@bogon go_dir]# ll test.txt
-rwxrwx---. 1 root root 0 Apr 25 02:05 test.txt
[root@bogon go_dir]# chmod ug-rwx test.txt
[root@bogon go_dir]# ll test.txt
----------. 1 root root 0 Apr 25 02:05 test.txt
[root@bogon go_dir]# chmod +x test.txt
[root@bogon go_dir]# ll test.txt
---x--x--x. 1 root root 0 Apr 25 02:05 test.txt
[root@bogon go_dir]# chmod +w test.txt (全局写是个很危险的操作,所以只属主有效)
[root@bogon go_dir]# ll test.txt
--wx--x--x. 1 root root 0 Apr 25 02:05 test.txt
[root@bogon go_dir]# chmod u=x,g+w,o-x test.txt
[root@bogon go_dir]# ll test.txt
---x-wx---. 1 root root 0 Apr 25 02:05 test.txt
(2) chmod [OPTION]... OCTAL-MODE FILE... (数字方式赋予权限)
例子:
[root@bogon go_dir]# ll test.txt
-rw-rw----. 1 root root 0 Apr 25 02:05 test.txt
(3) chmod [OPTION]... --reference=RFILE FILE... (复制文件的权限给其他文件)
例子:
[root@bogon go_dir]# ll /etc/shadow
----------. 1 root root 1170 Apr 25 00:56 /etc/shadow
[root@bogon go_dir]# chmod --reference=/etc/shadow test.txt
[root@bogon go_dir]# ll test.txt
----------. 1 root root 0 Apr 25 02:05 test.txt
选项:
-R, --recursive:递归修改(修改目录以及目录里的目录、文件)
(若chmod不加参数修改目录的权限,则只能对该目录起作用。如要对它所属的文件和目录起作用则要用上-R参数)
注意:用户仅能修改属主为自己的那些文件的权限;
从属关系管理命令:chown, chgrp
chown命令:
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
选项:
-R:递归修改
例子:
[root@bogon go_dir]# ls -dl etc_bak/
drwxr-xr-x. 2 root root 4096 Apr 25 07:28 etc_bak/
[root@bogon go_dir]# chown -R lzw.lzw etc_bak/
[root@bogon go_dir]# ls -dl etc_bak/
drwxr-xr-x. 2 lzw lzw 4096 Apr 25 07:28 etc_bak/
[root@bogon go_dir]# ll etc_bak/
total 14464
-rw-------. 1 lzw lzw 923248 Apr 25 07:28 yum_save_tx
-rw-------. 1 lzw lzw 922132 Apr 25 07:28 yum_save_tx
[root@bogon go_dir]# chown :root etc_bak/
[root@bogon go_dir]# ls -dl etc_bak/
drwxr-xr-x. 2 lzw root 4096 Apr 25 07:28 etc_bak/
(用.和:都可以)
chgrp命令:
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
注意:仅管理员可修改文件的属主和属组;
思考:用户对目录有写权限,但对目录下的文件没有写权限时,能否修改此文件内容?能否删除此文件?
模拟之;
umask:文件的权限反向掩码,遮罩码(为了避免用户创建的目录,自动是777。默认不会给多余权限);
文件:
666-umask
目录:
777-umask
注意:之所以文件用666去减,表示文件默认不能拥有执行权限;(对文件)如果减得的结果中有执行权限,则需要将其加1;
umask: 023
666-023=644
777-023=754
umask命令:
umask:查看当前umask(不带参数是查看)
umask MASK: 设置umask(仅对当前shell有效)
例子:
[root@bogon go_dir]# umask 027
[root@bogon go_dir]# touch test1
[root@bogon go_dir]# ll test1
-rw-r-----. 1 root root 0 Apr 25 07:49 test1
[root@bogon go_dir]# mkdir test1_dir
[root@bogon go_dir]# ll test1_dir/
total 0
[root@bogon go_dir]# ls -ld test1_dir/
drwxr-x---. 2 root root 6 Apr 25 07:49 test1_dir/
注意:此类设定仅对当前shell进程有效;
install命令:
install - copy files and set attributes
单源复制:
install [OPTION]... [-T] SOURCE DEST
多源复制:
install [OPTION]... SOURCE... DIRECTORY
install [OPTION]... -t DIRECTORY SOURCE...
创建目录:
install [OPTION]... -d DIRECTORY...
例子:
[root@bogon go_dir]# install /etc/inittab ./
[root@bogon go_dir]# ll inittab
-rwxr-xr-x. 1 root root 511 Apr 25 08:04 inittab
[root@bogon go_dir]# ll /etc/inittab
-rw-r--r--. 1 root root 511 Nov 5 2016 /etc/inittab
(install复制的文件会有执行权限)
常用选项:
-m, --mode=MODE:设定目标文件权限,默认为755;
-o, --owner=OWNER:设定目标文件属主;
-g, --group=GROUP:设定目标文件属组;
例子:
[root@bogon go_dir]# install -o root -g lzw -m 640 /etc/inittab /tmp/inittab
[root@bogon go_dir]# ll /tmp/inittab
-rw-r-----. 1 root lzw 511 Apr 25 08:17 /tmp/inittab
mktemp命令:
mktemp - create a temporary file or directory
mktemp [OPTION]... [TEMPLATE]
常用选项:
-d:创建临时目录
注意:mktemp会将创建的临时文件名直接返回,因此,可直接通过命令引用保存起来;