特殊权限及文件系统访问控制列表笔记及习题答案

特殊权限

passwd:s

SUID  : 运行某程序时,相应进程的属主是程序文件自身的属主,而不是启动者

chmod u+s FILE

chmod u-s FILE

如果FILE本身原有执行权限,则SUID显示为s;否则显示S

SGID  : 运行某程序时,相应进程的属组是程序文件自身的属主,而不是启动者所属的基本组

chmod g+s FILE

chmod g-s FILE

Sticky:  在一个公共目录,每个人都可以创建文件,删除自己的文件, 但不能删除别人的文件

chmod o+t DIR

chmod o-t DIR  通常是对目录而言

分别代表: SUID SGID Sticky

000   0  0        0

001         0     0        1

010         0     1        0

011

100

101

110

111

chmod 1755 /backup/test 代表 有sticky位

chmod 2755 /backup/test 代表 SUID  & Sticky

练习:

创建一个目录/tmp/project,保证 三个用户 hadoop, hive, richie 能同是编辑该目录上的所有文档,但是只能删除自己的文档

1. 创建公共组developteam

2. 创建用户,将用户的附加组加入developteam

3. 把/tmp/project目录的属组改成公共组developteam : chown -R /tmp/project /tmp/project

4. 把/tmp/project目录赋予sticky权限: chmod o+t /tmp/project

文件访问控制列表(facl)

FACL: Filesystem Access Control List

利用文件扩展属性保存额外的访问控制权限

setfacl

-m 设定       # -u: -g 则是为某目录创建默认的特殊文件访问控制列表

u:UID:perm

eg: setfacl -m:mygroup:rw FILENAME(GROUPNAME)

g:GID:perm

-x 取消

getfacl

练习:

每个五秒钟,就来查看hadoop用户是否已经登陆,如登陆,显示其已经登陆,并推出

sleep

几个命令:

w 比who的信息更详细

who

last: 显示/var/log/wtmp文件, 显示用户登陆历史及系统重启信息

-n # 显示最近#n的相关信息

lastb: 显示用户错误的登陆尝试,是 /var/log/btmp文件的信息

-n # 显示最近#n的相关信息

lastlog:  显示每一个用户最近一次的成功登陆信息

-u USERNAME 显示特定用户的最近一次成功登陆信息

basename

$0: 执行脚本时的脚本路径及名称

mail  收发邮件

eg: mail -s "how are you " root < etc/fstab

hostname 显示主机名

如果当前主机的主机名不是www.richie.com,就该其为www.richie.com

如果当前主机的主机名是localhost,就将其改为www.richie.com

如果当前主机的主机名为空, 或者为(none),或者为localhost,就将其改为www.richie.com

答案: [ -z `hostname` ]|| [ `hostname` == ‘(none)‘ -o `hostname` == ‘localhost‘ ] &&  hostname www.richie.com

生成随机数

RANDOM: 0-32768

随机数生成器: 熵池取值

/dev/random    熵池空后,会用户阻塞进程,等待用户输入更多随机数

/dev/urandom  熵池空后,会模拟生成随机数填满熵池

写一个脚本: 利用RANDOM生成10个随机数,并找出其中的最大值和最小值

#!/bin/bash

#

declare -i max=0

declare -i min=0

declare -i current=0

for I in {1..10};do

current=$RANDOM

if [ $I -lt 10 ];then

echo -n "$current,"

else

echo -n $current

fi

[ $I = 1 ] && min=$current

if [ $max -lt $current ];then

max=$current

fi

if [ $min -gt $current ];then

min=$current

fi

done

echo -e " \nMAX: $max"

echo "MIN: $min"

面向过程

控制结构

顺序结构

选择结构

循环结构

选择结构:

if: 单分支、双分支、多分支

if CONDITION;then

statement

fi

if CONDITION;then

statment

...

else

statement

...

fi

if CONDITION1;then

statment

...

elif CONDITION2

statement

...

else

case语句: 选择结构

case SWITCH(要引用变量的值) in

value1)

statement

...

;;

value2)

statement

...

;;

*)

statement

...

;;

esac

只接受参数start,stop,restart,status其中之一

写一个脚本, 可以接受选项及参数,而后能获取每一个选项,及选项的参数: 并能根据选项及参数做出特定的操作,比如:

adminusers.sh --add tom,jerry --del tom,biair -v|--verbose

#!/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 ‘[email protected],@ @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 ‘[email protected],@ @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,其用法格式为:

show

logged.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)

#!/bin/bash

#

declare -i SHOWNUM=0

declare -i SHOWUSERS=0

for I in `seq 1 $#`; do

if [ $# -gt 0 ]; then

case $1 in

-h|--help)

echo "Usage: `basename $0` -h|--help -c|--count -v|--verbose"

exit 0 ;;

-v|--verbose)

let SHOWUSERS=1

shift ;;

-c|--count)

let SHOWNUM=1

shift ;;

*)

echo "Usage: `basename $0` -h|--help -c|--count -v|--verbose"

exit 8 ;;

esac

fi

done

if [ $SHOWNUM -eq 1 ]; then

echo "Logged users: `who | wc -l`."

if [ $SHOWUSERS -eq 1 ]; then

echo "They are:"

who

fi

fi

Linux终端

终端类型:

console: 控制台

pty: 物理终端(VGA)

tty: 虚拟终端(VGA)

ttyS: 串行终端

pts/#: 伪终端

时间: 2024-12-23 14:59:40

特殊权限及文件系统访问控制列表笔记及习题答案的相关文章

linux基础--特殊权限及文件系统访问控制列表

特殊权限 SUID:运行某程序时,相应进程的属主是程序文件自身的属主,而不是启动用户. SGID:运行某程序时,相应进程的属组是程序文件自身的属组,而不是启动用户所属的基本组. Sticky:在一个公共目录,每个用户都可以创建文件,能删除自己的文件,但不能删除别人的文件 修改文件的特殊权限 chmod u+s FILE:给文件添加SUID权限 chmod u-s FILE:给文件删除SUID权限 chmod g+s FILE:给文件添加SGID权限 chmod g-s FILE:给文件删除SGI

【linux_笔记】Linux_文件系统访问控制列表(facl)、用户及Linux终端

学习资源来自:www.magedu.com 学习记录过程中难免出现错误,如有发现,还望大神们指出. 示例操作部分有的与历史操作有关,如果先前的示例操作没有执行过的话,可能会有部分示例的操作无法执行.示例仅供参考(练习题在附录). 文件系统访问控制列表 文件系统访问控制列表(FACL):Filesystem Access Control List    利用文件扩展保存额外的访问控制权限  setfacl(设定facl)        -m: 设定            u:UID:perm  

linux 特殊权限chattr(文件系统级别的权限) Attr 权限和 ACL访问控制列表 ...

Attr 权限 和 ACL 访问控制列表 Attr 权限里的 "a" 权限和 "i" 权限 a :全名append only 只允许追加数据,不允许任何用户改动文件(超级用户也不行) 甚至不能正常的删除文件 只能读取文件内容,只能用 "echo" 追加内容 chattr +a xxx #增加 a 权限 chattr -a xxx #取消 a 权限 lsattr #查看权限 [[email protected] /test]# touch abc

分析Linux 文件系统访问控制列表

1.What is FACL? FACL,文件系统访问控制列表,即Filesystem Access Control List.根据以前对LINUX权限模型的了解,大概如下: 假设有这么一个场景: 用户TOM创建的文件file,希望用户LUCY可以访问和编辑. 分析: 第一,可否TOM用户临时改变file的owner为LUCY,这样就可以达到目的. 显然,这并不可行.因为普通用户根本就没有chown的权限. 第二,可否设置LUCY在file的属组并属组权限有rw或者file的other权限有rw

Linux文件系统访问控制列表(FACL)

FACL:Filesystem Acess Control List Linux(和其他Unix等POSIX兼容的操作系统)有一种被称为访问控制列表(ACL)的权限控制方法,它是一种权限分配之外的普遍范式.例 如,默认情况下你需要确认3个权限组:owner.group和other.而使用ACL,利用文件扩展属性保存额外的访问控制权限,你可以增加权限给其他用户或组别,而不单只是简单 的"other"或者是拥有者不存在的组别.可以允许指定的用户A.B.C拥有写权限而不再是让他们整个组拥有写

facl 文件系统访问列表 (笔记)

facl filesystem access control list 文件系统访问列表 该命令是用来额外的控制文件的属性,例,一个用户想让另一个用户访问自己的文件,用户只需要在一个公共的目录下创建文件,然后命令facl 指定某一个用户可以编辑和访问此文件即可实现,而不需要管理员权限. facl命令使用方法 setfacl -m 设定用户和访问权限 u:UID:perm g:GID:perm 例:用户user1的文件init想让user2可以编辑则可以(注意文件所在的目录必须两个用户都可访问)

快学scala 第十一章 操作符 读书笔记及习题答案代码

chapter 11 操作符 标签:快学scala 一.笔记 scala种可以在反引号中包含几乎任何字符序列, val 'val' = 42 所有的操作符都是左结合的,除了以冒号(:)结尾的操作符,和赋值操作符.用于构造列表的::操作符是又结合的.1::2::Ni1的意思是1::(2::Ni1),先创建出包含2的列表,这个列表又被作为尾巴拼接到以1作为头部的列表中. 2. 函数调用语法:f(arg1, arg2,...)扩展到可以应用于函数之外的值,如果f不是函数或方法,那么这个表达式等于f.a

c++ primer(第五版)学习笔记及习题答案代码版(第六章)函数

笔记较为零散,都是自己不熟悉的知识点. 习题答案至于一个.cc 中,编译需要包含Chapter6.h头文件. 需要演示某一题直接修改 #define NUM***, 如运行6.23题为#define NUM623: chapter 6 1. 形参初始化的机理与变量初始化一样. 当形参是引用类型时,它对应的实参被引用传递或者函数被传引用调用. 2. const和实参 void fcn(const int i){ /*fcn能够读取i,但是不能向i写值*/} void fcn(int i){ /*.

c++ primer(第五版)学习笔记及习题答案代码版(第十四章)重载运算与类型转换

笔记较为零散,都是自己不熟悉的知识点. 习题答案至于一个.h 和.cc 中,需要演示某一题直接修改 #define NUM****, 如运行14.30题为#define NUM1430: Alice Emma has long flowing red hair. Her Daddy says when the wind blows through her hair, it looks almost alive, like a fiery bird in flight. A beautiful f