Linux运维第9天:Linux下suid,sgid,acl,shell编程
2014-05-30 23:28
591 查看
特殊权限位
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
#
相关文章推荐
- linux suid,sgid,bit stick(粘贴位),acl权限的记录
- 关于UNIX和Linux系统下SUID、SGID的解析
- Linux/Unix中的SUID和SGID文件权限和在CVS项目管理中的应用
- [Linux]:Linux文件特殊权限 SUID/SGID/Sticky Bit
- linux中suid和sgid
- 深入理解linux的权限设置和SUID,SGID以及粘滞位
- 关于UNIX和Linux系统下SUID、SGID的解析
- 关于UNIX和Linux系统下SUID、SGID的解析
- Linux上文件的特殊权限SUID,SGID,SBIT详解
- 关于UNIX和Linux系统下SUID、SGID的解析
- Linux中的SUID/SGID
- 关于UNIX和Linux系统下SUID、SGID的解析
- Linux文件特殊权限 SUID/SGID/Sticky Bit
- 深入理解linux的权限设置和SUID,SGID
- linux file suid和sgid
- 关于UNIX和Linux系统下SUID、SGID的解析
- Linux文件特殊权限 SUID/SGID/Sticky Bit
- linux特殊文件权限 suid、sgid和sticky-bit的作用
- UNIX和Linux系统下SUID、SGID的解析
- Linux文件特殊权限 SUID/SGID/Sticky Bit