Linux运维第9天:Linux下suid,sgid,acl,shell编程
来源:互联网 发布:私人摄像头直播软件 编辑:程序博客网 时间:2024/06/05 16:35
特殊权限位
SUID:运行某程序时,相应进程的属主就是文件本身属主,而不是发起者
chmod u+s filename
chmod u-s filename
原来有x权限会变为s
否则为S
SGID:同上,创建文件(夹)时属组会变为被设置该位的目录的属组
chmod g+s filename
Sticky:在一公共目录,每个人都能删除别人的文件,但不能删除别人的文件
chmod o+t DIR
chmod o-t DIR
3位重新组一个权限 4,2,1 5755,2555
文件系统访问列表
setfacl:
-m:设定
u:username:perm
g:groupname:perm
d:u:username:perm
d:g:groupname:perm
-x:取消
u:username
g:groupname
getfacl:
mask:最大权限
w
who
whoami
last /var/log/wtmp 用户登录历史及系统重启历史
-n
lastb /var/log/btmp 失败的登录尝试
lastlog 每个用户最近一次的登录记录
-u:username
basename
dirname
mail
hostname
可以修改主机名
$RANDOM
0-32768
随机数生成器:熵池
可能会取空
/dev/random
/dev/urandom
终端类型
console:控制台
pty:物理终端(VGA)
tty:虚拟控制台(VGA)
ttys:串行终端
pts/n:伪终端
case语句:选择结构
case SWITCH in
value1)
...
;;
value2)
...
;;
value3)
...
;;
*)
...
;;
esac
a-z
A-Z
0-9
[abc]
#!/bin/bash
#
DEBUG=0
ADD=0
DEL=0
for I in `seq 0 $#`; do
if [ $# -gt 0 ]; then
case $1 in
-v|--verbose)
DEBUG=1
shift ;;
-h|--help)
echo "Usage: `basename $0` --add USER_LIST --del USER_LIST -v|--verbose -h|--help"
exit 0
;;
--add)
ADD=1
ADDUSERS=$2
shift 2
;;
--del)
DEL=1
DELUSERS=$2
shift 2
;;
*)
echo "Usage: `basename $0` --add USER_LIST --del USER_LIST -v|--verbose -h|--help"
exit 7
;;
esac
fi
done
if [ $ADD -eq 1 ]; then
for USER in `echo $ADDUSERS | sed 's@,@ @g'`; do
if id $USER &> /dev/null; then
[ $DEBUG -eq 1 ] && echo "$USER exists."
else
useradd $USER
[ $DEBUG -eq 1 ] && echo "Add user $USER finished."
fi
done
fi
if [ $DEL -eq 1 ]; then
for USER in `echo $DELUSERS | sed 's@,@ @g'`; do
if id $USER &> /dev/null; then
userdel -r $USER
[ $DEBUG -eq 1 ] && echo "Delete $USER finished."
else
[ $DEBUG -eq 1 ] && echo "$USER not exist."
fi
done
fi
练习:写一个脚本showlogged.sh,其用法格式为:
showlogged.sh -v -c -h|--help
其中,-h选项只能单独使用,用于显示帮助信息;-c选项时,显示当前系统上登录的所有用户数;如果同时使用了-v选项,则既显示同时登录的用户数,又显示登录的用户的相关信息;如
Logged users: 4.
They are:
root tty2 Feb 18 02:41
root pts/1 Mar 8 08:36 (172.16.100.177)
root pts/5 Mar 8 07:56 (172.16.100.177)
hadoop pts/6 Mar 8 09:16 (172.16.100.177)
练习:写一个脚本
通过命令行传递一个文件路径参数给脚本:
如果参数多了或少了,报错;
如果参数指定的路径对应的是目录而不是文件,报错;
而后,检查路径指定的文件是否为空或不存在,如果是,则新建此文件,并在文件中生成如下内容
#!/bin/bash
#
而后,使用vim编辑器打开此文件,并让光标处于这个文件的最后一行;
写个脚本,按如下方式执行:
mkscript.sh -v|--version VERSION -a|--author AUTHOR -t|--time DATETIME -d|--description DESCRIPTION -f|--file /PATH/TO/FILE -h|--help
1.此脚本能创建或打开-f选项指向的文件/PATH/TO/FILE;如果其为空文件,能自动为其生成第一行;如果文件不空,且第一行不是#!/bin/bash,则中止此脚本,并报错“The file is not a bash script.";否则,则直接使用vim 打开此文件;
提示:/PATH/TO/FILE,要判断其目录是否存在;如果不存在,则报错;
2.如果为空文件,自动生成的第一行内容为:
#!/bin/bash
3.如果为空文件,且使用了-a选项,则在文件中添加“# Author: -a选项的参数”,比如:
# Author: Jerry
4.如果为空文件,且使用了-t选项,则在文件中添加“# Date: 脚本执行-t选项后指定的时间”,比如:
# Date: 2013-03-08 18:05
5.如果为空文件,且使用了-d选项,则在文件中添加“# Description: -d选项的内容”,比如:
# Description: Create a bash script file head.
6.如果为空文件,且使用了-v选项,则在文件添加“# Version: -v后跟的参数”,比如:
# Version: 0.1
6.-h选项只能单独使用,用于显示使用帮助;
7.其它选项,显示帮助信息;
说明:
这是一个用于创建脚本的脚本,它可以自动帮助创建一个bash脚本的文件头,这样,以后使用此脚本来创建其它脚本将变得比较高效。比如:
#!/bin/bash
# Author: Jerry(jerry@magedu.com)
# Date: 2013-03-08 18:05
# Description: Create a bash script file head.
# Version: 0.1
#
SUID:运行某程序时,相应进程的属主就是文件本身属主,而不是发起者
chmod u+s filename
chmod u-s filename
原来有x权限会变为s
否则为S
SGID:同上,创建文件(夹)时属组会变为被设置该位的目录的属组
chmod g+s filename
Sticky:在一公共目录,每个人都能删除别人的文件,但不能删除别人的文件
chmod o+t DIR
chmod o-t DIR
3位重新组一个权限 4,2,1 5755,2555
文件系统访问列表
setfacl:
-m:设定
u:username:perm
g:groupname:perm
d:u:username:perm
d:g:groupname:perm
-x:取消
u:username
g:groupname
getfacl:
mask:最大权限
w
who
whoami
last /var/log/wtmp 用户登录历史及系统重启历史
-n
lastb /var/log/btmp 失败的登录尝试
lastlog 每个用户最近一次的登录记录
-u:username
basename
dirname
hostname
可以修改主机名
$RANDOM
0-32768
随机数生成器:熵池
可能会取空
/dev/random
/dev/urandom
终端类型
console:控制台
pty:物理终端(VGA)
tty:虚拟控制台(VGA)
ttys:串行终端
pts/n:伪终端
case语句:选择结构
case SWITCH in
value1)
...
;;
value2)
...
;;
value3)
...
;;
*)
...
;;
esac
a-z
A-Z
0-9
[abc]
#!/bin/bash
#
DEBUG=0
ADD=0
DEL=0
for I in `seq 0 $#`; do
if [ $# -gt 0 ]; then
case $1 in
-v|--verbose)
DEBUG=1
shift ;;
-h|--help)
echo "Usage: `basename $0` --add USER_LIST --del USER_LIST -v|--verbose -h|--help"
exit 0
;;
--add)
ADD=1
ADDUSERS=$2
shift 2
;;
--del)
DEL=1
DELUSERS=$2
shift 2
;;
*)
echo "Usage: `basename $0` --add USER_LIST --del USER_LIST -v|--verbose -h|--help"
exit 7
;;
esac
fi
done
if [ $ADD -eq 1 ]; then
for USER in `echo $ADDUSERS | sed 's@,@ @g'`; do
if id $USER &> /dev/null; then
[ $DEBUG -eq 1 ] && echo "$USER exists."
else
useradd $USER
[ $DEBUG -eq 1 ] && echo "Add user $USER finished."
fi
done
fi
if [ $DEL -eq 1 ]; then
for USER in `echo $DELUSERS | sed 's@,@ @g'`; do
if id $USER &> /dev/null; then
userdel -r $USER
[ $DEBUG -eq 1 ] && echo "Delete $USER finished."
else
[ $DEBUG -eq 1 ] && echo "$USER not exist."
fi
done
fi
练习:写一个脚本showlogged.sh,其用法格式为:
showlogged.sh -v -c -h|--help
其中,-h选项只能单独使用,用于显示帮助信息;-c选项时,显示当前系统上登录的所有用户数;如果同时使用了-v选项,则既显示同时登录的用户数,又显示登录的用户的相关信息;如
Logged users: 4.
They are:
root tty2 Feb 18 02:41
root pts/1 Mar 8 08:36 (172.16.100.177)
root pts/5 Mar 8 07:56 (172.16.100.177)
hadoop pts/6 Mar 8 09:16 (172.16.100.177)
练习:写一个脚本
通过命令行传递一个文件路径参数给脚本:
如果参数多了或少了,报错;
如果参数指定的路径对应的是目录而不是文件,报错;
而后,检查路径指定的文件是否为空或不存在,如果是,则新建此文件,并在文件中生成如下内容
#!/bin/bash
#
而后,使用vim编辑器打开此文件,并让光标处于这个文件的最后一行;
写个脚本,按如下方式执行:
mkscript.sh -v|--version VERSION -a|--author AUTHOR -t|--time DATETIME -d|--description DESCRIPTION -f|--file /PATH/TO/FILE -h|--help
1.此脚本能创建或打开-f选项指向的文件/PATH/TO/FILE;如果其为空文件,能自动为其生成第一行;如果文件不空,且第一行不是#!/bin/bash,则中止此脚本,并报错“The file is not a bash script.";否则,则直接使用vim 打开此文件;
提示:/PATH/TO/FILE,要判断其目录是否存在;如果不存在,则报错;
2.如果为空文件,自动生成的第一行内容为:
#!/bin/bash
3.如果为空文件,且使用了-a选项,则在文件中添加“# Author: -a选项的参数”,比如:
# Author: Jerry
4.如果为空文件,且使用了-t选项,则在文件中添加“# Date: 脚本执行-t选项后指定的时间”,比如:
# Date: 2013-03-08 18:05
5.如果为空文件,且使用了-d选项,则在文件中添加“# Description: -d选项的内容”,比如:
# Description: Create a bash script file head.
6.如果为空文件,且使用了-v选项,则在文件添加“# Version: -v后跟的参数”,比如:
# Version: 0.1
6.-h选项只能单独使用,用于显示使用帮助;
7.其它选项,显示帮助信息;
说明:
这是一个用于创建脚本的脚本,它可以自动帮助创建一个bash脚本的文件头,这样,以后使用此脚本来创建其它脚本将变得比较高效。比如:
#!/bin/bash
# Author: Jerry(jerry@magedu.com)
# Date: 2013-03-08 18:05
# Description: Create a bash script file head.
# Version: 0.1
#
0 0
- Linux运维第9天:Linux下suid,sgid,acl,shell编程
- linux下:SUID、SGID详解
- linux --> shell --> passwd,SUID,SGID,SBIT
- Linux下SUID、SGID的解析
- Linux系统下SUID、SGID的解析
- Linux中的SUID/SGID
- Linux : SUID SGID
- Linux : SUID SGID
- linux:SUID、SGID详解
- linux:SUID、SGID详解
- Linux SUID SGID 详解
- linux:SUID、SGID详解
- linux:SUID、SGID详解
- linux:SUID、SGID详解
- linux:SUID、SGID详解
- linux:SUID、SGID详解
- linux:SUID、SGID详解
- linux:SUID、SGID详解
- JAVA 自定义注解及参数获取
- JavaWebFrame 中控制器的一些问题和测试用例
- IOS_加速计_碰撞检测_小球位置修复_dispatch_once单例
- 顺序表有关操作(查找、插入、删除)
- maven(1)
- Linux运维第9天:Linux下suid,sgid,acl,shell编程
- DLL开发
- cocos2dx 2.2.3 xcode5.0,新建mac项目报错
- Linux 内核模块开发基本知识
- CentOS 6.4 电信ADSL拨号上网网络配置
- .NET中反射机制的使用
- mave使用私有仓库
- Linux运维第9天:Linux下磁盘管理及使用挂载
- CISCO 4948进入ROMmon