Linux帮助信息获取用户文件权限管理(下)

 

Linux文件权限和属性的修改

文件权限的修改:

-rwxrwxrwx

 u   g  o

①其中r=4 w=2 x=1 可根据数值来修改权限

[root@server55 ~]#chmod 755 文件名  此时修改后的权限为 –rwxr-xr-x

②使用 = 来规定 u g o user group other)的权限

[root@server55 ~]#chmod o= --- 文件名  此时其他权限不变 o没有任何权限

③使用 + - 来添加和删减权限

[root@server55 ~]#chmod u+x,go-w 文件名  u添加xgo删去w,;注意其间用逗号连接

-R递归修改

--reference=文件a  文件b   b参照a的权限修改

 

文件属主和属组的修改:

[root@server55 ~]#chown 选项 属主:属组 文件名

-R 递归修改

--reference=文件a  文件b   b参照a的属住属组修改

[root@server55 ~]#chown –R redhat:redhat a a目录的属组属主全都更改为redhat

 

[root@server55 ~]#chgrp 选项 属组 文件名 

-R 递归修改

--reference=文件a  文件b   b参照a的属住属组修改

BASH功能的介绍

1.       命令行编辑

ctrl+a 光标跳到命令行的前端

ctrl+e 光标跳到命令行的尾部

ctrl+u 删除光标前内容

ctrl+k 删除光标后内容

2.       文件名通配

多与ls命令配合使用

*:为任意长度通配符;

?:为单字通配符;

[][]括号内内容单个匹配;eg:以abc任意一个字母开头的文件名:[abc]*

[:alpha:]指代任意字母

[:digit:]指代任意数字

[:lower:]指代小写字母

[:upper:]指代大写字母

[:space:]指代空字符

eg:以字母开头的紧接着是数字的文件

[[:alpha:]][[:digit:]]*

eg:显示/etc目录下的字母数字开头的文件

[root@server55 ~]# ls /etc/[[:alpha:]][[:digit:]]*

/etc/a2ps.cfg  /etc/a2ps-site.cfg

 

3.       命令行和路径补全功能

输入命令时补全键位TAB键,若无法补全 连续按两次TAB,显示与当前字符匹配的所有命令。

输入文件路径时按TAB会补全与之先匹配的路径。

4.命令行展开

~:对应用户的家目录。

{}egmkdir –pv {x,y}_{1,2,3} 则在当前目录下生成x1,x2,x3,y1,y2,y3六个文件。

5.命令行扩展

$() ` `反引号

[root@server55 ~]# touch a-`date +"%y-%m-%d-%H-%M-%S"`

[root@server55 ~]# ls

a  a-11-07-19-10-54-45  Desktop  install.log  install.log.syslog

其中 ` ` 为命令替换符,起作用是将 ` …` 中的指令执行,并返回结果

 

脚本的简单介绍

脚本script:就是命令的堆砌。

变量引用:

[root@server55 ~]#ab=myfile  定义一个变量

[root@server55 ~]#touch “$sb” $变量 返回变量的值

生成文件名为myfile的文件

 

$变量:返回变量的值

'  ' :强引用,单引号内不会发生变量替换;

"  ":弱引用,双引号内会发生变量替换。

 

简单脚本的编写:

脚本开头固定格式#!/bin/bash

 

实例:

写一个脚本:

复制/etc/skel目录至/home,并且重命名为centos

设定此目录及其内部文件或子目录的属主属组为redhat用户,redhat

设定此目录及其内部文件或子目录的权限为属组和其它用户没有任何权限

修改redhat用户的家目录为/home/centos

切换至redhat用户,验正其家目录是否正常可用

 

脚本实现:

#!/bin/bash

#

cp -R /etc/skel /home/centos

ls -ldh /home/centos

chown redhat:redhat /home/centos -R

ls -ldh /home/centos

chmod 700 -R /home/centos

ls -lh /home/centos

usermod -d /home/centos redhat

finger redhat

su - redhat

 

运行脚本:

[root@server55 ~]# nano myscript.sh

[root@server55 ~]# ./myscript.sh

drwx------ 4 redhat redhat 4.0K Jul 19 13:58 /home/centos

drwx------ 4 redhat redhat 4.0K Jul 19 13:58 /home/centos

total 8.0K

drwx------ 3 redhat redhat 4.0K Jul 19 13:58 skel

Login: redhat                        Name: (null)

Directory: /home/centos                   Shell: /bin/bash

Never logged in.

No mail.

No Plan.

[redhat@server55 ~]$ pwd

/home/centos

 

写一个脚本:

1、创建目录/tmp/scripts

2、切换工作目录至此目录中

3、复制/etc/pam.d目录至当前目录,并重命令为test

4、将当前目录中的test及其里面的文件和子目录的属主改为redhat

5、将test及其子目录中的文件的其它用户的权限改为没有任何权限

脚本内容:

#!/bin/bash

mkdir -p /tmp/scripts

ls -ldh /tmp/scripts

cd /tmp/scripts

pwd

cp -R /etc/pam.d test

ls -l test

chown redhat:redhat test -R

ls -l test

chmod -R o=--- test

ls -l test

执行脚本:

[root@server55 ~]# ./testscript1.sh

执行结果:

total 552

-rw-r----- 1 redhat redhat 390 Jul 19 14:20 atd

-rw-r----- 1 redhat redhat  97 Jul 19 14:20 authconfig

-rw-r----- 1 redhat redhat  97 Jul 19 14:20 authconfig-gtk

-rw-r----- 1 redhat redhat  97 Jul 19 14:20 authconfig-tui

-rw-r----- 1 redhat redhat 192 Jul 19 14:20 chfn

-rw-r----- 1 redhat redhat 192 Jul 19 14:20 chsh

-rw-r----- 1 redhat redhat 232 Jul 19 14:20 config-util

……

 

写一个脚本:

1、显示当前系统日期和时间,而后创建目录/tmp/lstest

2、切换工作目录至/tmp/lstest

3、创建目录a1d, b56e, 6test

4、创建空文件xy, x2y, 732

5、列出当前目录下以ax或者6开头的文件或目录;

6、列出当前目录下以字母开头,后跟一个任意数字,而后跟任意长度字符的文件或目录;

 

脚本内容:

#!/bin/bash

date

mkdir /tmp/lstest

cd /tmp/lstest

mkdir a1d b56e 6test

touch xy x2y 732

ls -ldh

ls -ldh [ax6]*

ls -ldh [[:alpha:]][[:digit:]]*

执行脚本:

[root@server55 ~]# ./testscript2.sh

执行结果:

Tue Jul 19 14:49:02 CST 2011

drwxr-xr-x 5 root root 4.0K Jul 19 14:49 .

drwxr-xr-x 2 root root 4.0K Jul 19 14:49 6test

drwxr-xr-x 2 root root 4.0K Jul 19 14:49 a1d

-rw-r--r-- 1 root root    0 Jul 19 14:49 x2y

-rw-r--r-- 1 root root    0 Jul 19 14:49 xy

drwxr-xr-x 2 root root 4.0K Jul 19 14:49 a1d

drwxr-xr-x 2 root root 4.0K Jul 19 14:49 b56e

-rw-r--r-- 1 root root    0 Jul 19 14:49 x2y

 

注意:ls –d 显示目录自身的属性,而不是目录中的文件。

eg

①:不加-d

[root@server55 ~]# ls -l /tmp/lstest/[[:alpha:]][[:digit:]]*

-rw-r--r-- 1 root root    0 Jul 19 14:34 /tmp/lstest/x2y

 

/tmp/lstest/a1d:

total 0

 

/tmp/lstest/b56e:

total 0

②:加-d之后

[root@server55 ~]# ls -ld /tmp/lstest/[[:alpha:]][[:digit:]]*

drwxr-xr-x 2 root root 4096 Jul 19 14:34 /tmp/lstest/a1d

drwxr-xr-x 2 root root 4096 Jul 19 14:34 /tmp/lstest/b56e

-rw-r--r-- 1 root root    0 Jul 19 14:34 /tmp/lstest/x2y

两者本质如下:

[root@server55 ~]# ls -ld /tmp/lstest/ a1d

[root@server55 ~]# ls -l /tmp/lstest/ a1d

的区别,由于a1d是目录文件所以不加-d就查看其目录下的内容了。

          

                                                July 19th 23:55 2011

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章