Linux的UGO模型
概念:
- 权限一般分为读、写、执行
- 权限辐射的范围由小及大:用户-->组-->Other
- 权限三个一组(rwx),对应UGO,分别设置每一个文件拥有一个所属用户和组,分别对应着U、G,对于既不属于该文件所属用户也不属于该用户组的用户的权限对应O权限
实例:
11.用户和组:|--通过用户来限制进程的权限,通过组来组织管理用户.
|--每个用户拥有一个uid,每个用户属于一个主组,属于一个或多个附属组.
|--每个组有一个gid.
|--每个用户拥有一个指定的shell.(默认是bash.)
|--文件都有一个隶属的用户和组,而用户和组存在权限,所以文件存在权限. {默认的“组和用户”与当前操作用户同名}
|--uid : 0 root
1-499 系统用户(专门为某些服务{例如打印机}或进程准备,它们不需要登陆.)
500-60000 普通用户
|-- id passwd
|-- /etc/passwd /etc/shadow /etc/group
用户 加密后的密码 组
|-- /etc/passwd 的用户结构(:隔开):用户名 密码 uid gid 描述信息(可无) 用户home目录 shell
!!表示空 /bin/nologin
x代表有密码 /bin/flase
表示没有shell.
|-- /ect/group 组名 组密码 gid 包括的用户
(现在不用)
|-- who whoami w
|--创建用户:useradd nash_su (系统自动生成的-G就是用户名,密码为空.)
|--参数: -u(这是uid) -g -G(附属组) -d(home目录) -s(这是shell)
|--passwd
|--修改用户:usermod 参数 newname oldname
|--参数:-l(用户名) -u -g -G -d -L(锁定用户) -U(给用户解锁)
|--删除用户:userdel nash_su (保留家目录)
userdel -r nash_su (不保留家目录)
|--创建组: (基于部门和功能)
groupadd linuxcast
|--修改组: groupmod -n newname oldname group -g newgid oldgid
|--删除组: groupdel linuxcast
(修改信息可以在 /etc/passwd /etc/shadow /etc/group 修改.但不建议这么做)
12.权限机制:|-- r w x (注意目录如果有r,w,必须有x)
|--文件的格式(权限基于UGO模型):drwx-wxr-x nash_su traning 1024 Oct 17:28 linuxcast.net
lr--rwxr-- nash_su traning 2048 Jan 13:14 hello
-rwx---rw- nash_su traning 3072 Oct 15:16 index.php
|--修改文件权限:
//|--先切换到当前文件或目录.
|--修改用户和组:|--chown 新用户或组 文件
|--chown new_username dirname (只修改目录权限)
|--chown -R new_username dirname (递归地修改了目录里面的全部文件)
|--chgrp new_grpname filename
|--chgrp -R new_grpname dirname
|--直接修改UGO: |--chmod 模式 文件
|-- chmod u+rw linuxcast.net chmod -R u+rw linuxcast.net
|-- chmod go-r hello.cpp
|-- chmod a-rx index.php
|-- chmod 777 linuxcast.net
|-- chmod 555 hello.cpp
|-- chmod 111 index.php
|--查看: ls -l linuxcast ls -ld linuxcast.net
|--实例:<见UGO.png>
groupadd traning
groupadd market
groupadd manage
useradd -G traning nashh_su
uaeradd -G tranig bob
useradd -G market alice
useradd -G market john
useradd -G manage steve
useradd -G manage david
cd / //放在根目录下,查询您方便
mkdir linuxcast.net //第一个要求
ls
mkdir traning //第二个要求
mkdir market 第...
mkdir manage //第二个要求
ls -l
chgrp traning traning/ //部门对应着组,要使各部门的文件夹对应各部门:即修改组。
chgrp market market/
chgrp mannage manage/
ll //查看所有文件详细信息
/*那么现在不同部门直接互相访问,就是以O的权限,咱们要禁止它互相访问,取消0即可*/
chmod o-rx traning/
chmod o-rx market/
chmod o-rx manage/ //完成第三个要求
ll
cd /traning/
mkdir nash_su
mkdir bob
ls -l
chown nash_su nash_su/
chown bob bob/
ls -l
cd /market/
mkdir alice
mkdir john
ls -l
chown alice alice/
chown john john/
ls -l
cd /manage/
mkdir steve
mkdir david
ls -l
chown steve steve/
chown david david/
ls -l
chgrp traning nash_su/
chgrp traning bob/
chgrp market alice/
chgrp market john/
chgrp manage steve/
chgrp manege david/
ls -l
/*在生产中,权限宁愿放小,不可給大,因为此处无特殊要求,所以O给他全部拿掉*/
chmod o-rx nash_su
bob
alice
john
steve
david
//完成了第四个要求,并且已经修改了他们对应的UG,以及UGO的权限
对于第五个要求,很显然,同组的不同用户,既然同组{G的权限默认就是r-x},那么互相查看本来就是可以的,
而O的权限以及撤销,所以不会修改。
//至此,完成第五个要求,当然还可以ls -l 和不同用户切换,看看权限生效了没有。
13.扩展机制:
|--默认权限:|--每个终端(分root 和 普通用户)存在umask: umask num(可修改) umask(不加任何参数)
|--dir :777-umask
file:666-umask
|--特殊权限:|--suid (passwd命令的设计:非root也能用.)
|--sgid (让目录下的所有文件和子目录继承该目录的附属组.)
|--sticky (对同一目录{隶属组X}有读写权限的不同用户{隶属同一个组X}间的文件,仅自己可删除)
|--chmod u+s linuxcast
|--chmod 4755 linuxcast
|--chmod g+s linuxcast
|--chmod 2755 linuxcast
|--chmod o+t linuxcast
|--chmod 1755 linuxcast
/*sticky的实例*/
groupadd testgroup
useradd -G testgroup user1
useradd -G testgroup user2
cd /
mkdir linuxcast.net
chgrp testgroup linuxcast.net
ls -ld linuxcast.net
chmod g+rwx linuxcast.net //把组的权限提升上来
ls -ld linuxcast.net
chmod o+t linuxcast.net //在centos上去掉这句,看看下面操作有什么不同。{对比出真知}
ls -ld linuxcast.net
su - user1 {写点东西}
cd /linuxcast.net
touch user1
exit
su - user2
cd /linuxcast.net
touch user2 {写点东西}
ls
cat user1 //查看没问题
rm -rf user1 //发现删除和修改不行
|--文件权限限制对于root没有作用,root的权限无穷大.