您的位置:首页 > 运维架构 > Linux

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

2011-07-19 23:54 1141 查看

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添加x,g和o删去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.命令行展开
~:对应用户的家目录。
{}:eg:mkdir –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、列出当前目录下以a、x或者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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息