权限管理:

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会将创建的临时文件名直接返回,因此,可直接通过命令引用保存起来;