您的位置:首页 > 其它

权限管理、特殊权限、FACL

2013-07-28 00:04 260 查看
用户管理
useradd (默认是是最大的ID号向下加一)
-u UID 尚未制定大于等于500
-g GID (基本组)必须事先存在 也可以使用组名,useradd -g two one id one
-G GID 附加组 可以有多个
-c "COMMENT" 制定注释信息
-d 家目录 需要制定目录
-s shell 路径 最好是/etc/shells文件中的shell
/bin/sh
/bin/bash
/sbin/nologin
/bin/tcsh
/bin/csh
/bin/ksh
-m -k 创建家目录 强行复制 /etc/skel文件,其实默认创建用户就会自动复制skel文件
-M 不创建家目录,不代表不能登陆
-r 添加系统用户
/etc/skel 其实默认创建用户就会自动复制skel目录下的文件到用户家目录
/etc/login.defs 是/etc/shadow文件的默认配置文件,用于定义默认
环境变量:
PATH
HISTSIZE
SHELL 保存当前用户shell
id
-u 用户ID
-g 基本组ID
-G 附加组ID
-n 显示用户名配合其他三个选项

finger 查看用户账户属性信息
userdel 默认不会删除用户家目录 但一个用户被删除以后,此前属主为此用户的文件变为删除用户的UID
-r 同时删除家目录
修改用户账号属性
usermod
-u 修改用户ID
-g GID 必须存在 基本组
-a -G GID 不使用-a选项会覆盖之前的附加组,如果之前有附加组的话。
-c 制定注释信息
-d -m 为用户制定新的家目录 以前原家目录文件至新家目录中
-s 修改用户shell
-l 修改用户名字
-e 定义用户过期时间 YYYY-MM-DD
-f 密码过去还没禁用时间
-L 锁定账户
-U 解锁用户

chsh 修改用户shell
chfn 修改finger信息,修改注释信息

passwd 修改用户密码,普通用户自己修改自己的密码,管理员可以制定修改其他用户,禁止空密码登陆。
--stdin 标准输入读取密码,可以从其他文件带起键盘 echo "redhat | passwd --stdin user1
-l 锁定用户账户
-u 解锁用户账户
-d 删除用户密码
-n 密码最短使用期限
-x 最长使用期限
-w 警告时间
-i 非活动时间

chage 也可以修改用户密码时间,类似passwd
-d 最近一次的修改时间
-E 过期时间
-I 非活动时间
-m 最短使用期限
-M 最长使用期限
-W 警告时间
pwck 检查用户账号的完整性
组管理
groupadd 创建组
-g gid
-r 添加为系统组
groupamod 修改组名或者ID
-g gid
-n GRPNAME
groupdel 删除组
gpasswd 为组设置密码,一个用户创建文件的属主是这个用户自身,而属组则是这个用户账户的基本组
newgrp 切换组,如果用户本来就输入切换组的附加组,就不需要密码,切换完成之后此组成为用户的基本组。
newgrp为一个登陆属性,可以用exit推出。
练习题
1.创建一个用户mandriva,其ID号位2002,基本组为distro(组ID为3003),附加组为linux
groupadd linux
groupadd -g 3003 distro
useradd -u 2002 -g distro -G linux mandriva
2.创建一个用户fedora,其全名为Fedora Community,默认shell为tcsh
useradd -c "Fedora Community" -s /bin/tcsh fedora
3.修改mandriva的ID号为4004,基本组为linux,附加组为distro和fedora
usermod -u 4004 -g linux -G distro,fedora mandriva
4.给fedora加密码,并设置其密码最短使用期限为2天,最长为50天
passwd -n 2 -x 50 fedora
5.将mandriva的默认shell改为/bin/bash
usermod  -s /bin/bash mandriva
6.将添加系统用户hbase,且不运行其登陆
useradd -r -s /sbin/nologin hbase
权限管理
r
w
x
三类用户
o 属主
g 属组
o 其他用户
chown 改变文件属主(只有管理员可以用此命令)
chown username file
-R 修改目录以及目录中子目录和文件的属主
--reference=/path/to/somefile file 设定新文件跟参考文件一样的属主和属组
同时修改属主和属组
chown username:grpname file
chown username.grpname file
chown --reference=/tmp/abc test
--reference=/path/to/somefile file 设定新文件跟参考文件一样的属主和属组
chgrp 改变文件属组(用法和chown用法一样)
-R
--reference=/path/to/somefile file

chmod 修改文件的权限 操作范围越来越精细
修改三类用户的权限
chmod mode file
-R 递归
--reference=/path/to/somefile file
chomod 750 file
位数不够就从左往右识别
75 075
5 005
修改某类用户或某些类用户权限
u,g,o,a rxw
chmod 用户类别=rwx file
chmod go=rw file
chmod g=rx,o=r file
chmod g=rx,o= file 不写权限就是没有权限
修改某类用户某位或某些位权限
chmod u-x,g+x file
chmod a+x file 等于 chmod +x file
chmod u-wx file
umask 遮罩码
root缺省创建文件权限 644
缺省创建目录权限 755 0022
user缺省创建文件权限 664
缺省创建目录权限 775 0002
umask 023
文件 666-023=643 实际是644 默认不能有执行权限,有了就自动+1
目录 777-023=754
练习

1、新建一个没有家目录的用户openstack
useradd -M openstack
2、复制/etc/skel为/home/openstack
cp -r /etc/skel /home/openstack
3、改变/home/openstack及其内部文件的属主均为openstack
cp -R   openstack
4、/home/openstack及其内部的文件,属组和其他用户没有任何访问权限
chmod   go= -R /home/openstack
su - openstack  手动建立用户,其他人没有权限访问openstack的家目录
linux 任何权限对root是无效的 所以可以修改密码保存此文件中
ls  -l  /etc/shadow
-r-------- 1 root root 1197 Jul 23 16:13 /etc/shadow
普通用户也可以修改自己的密码,如何实现的?
ls -l $(which passwd)
-rwsr-xr-x 1 root root 22960 Jul 17  2006 /usr/bin/passwd
5、手动添加用户hive,基本组为hive(5000),附加组为mygroup
vi /etc/group       hive:x:5000:    mygroup:x:504:user2,hive
vi /etc/passwd      hive:x:5000:5000:Hive:/home/hive:/bin/bash
vi /etc/shadow      hive:!!:15909:0:99999:7:::
cp  -r  /etc/skel   /home/hive
chown -R hive:hive  /home/live
chmod -R go=        /home/live
密码生成
whatis passwd 中查看由sslpasswd
man sslpasswd
-1  Use the MD5 based BSD password algorithm 1.
-salt string    (杂质)
Use the specified salt.  When reading a password from
the terminal, this implies -noverify.
openssl passwd -1 -salt '12345678'
Password:123
$1$12345678$tRy4cXc3kmcfRZVj4iFXr/      "/"也属于hash的元素
杂质默认8位,不代表必须输入8位,但不同杂质计算相同密码等到的hash一定不同。
openssl passwd -1 -salt '1234567'
Password:123
$1$1234567$Y8QuHrN2po5VtIYAWSZOn/


特殊权限 [hadoop@localhost testsgid]$ ls -l /usr/bin/passwd -rwsr-xr-x 1 root root 23420 Aug 3 2010 /usr/bin/passwd 启动进程之后进程的身份不是在是发起进程者,而是发起进程前文件本身的属主,者就叫做SUID SUID:运行某程序时,相应进程的属主是程序文件自身的属主,而不是启动者。 chmod u+s file 如果file本身原有执行权限显示为s,否则显示为S 不到万不得已,一定不要给它SUID SGID运行某程序时,相应进程的属主是程序文件自身的属组,而不是启动者所属的基本组 应用场景 developteam:hadoop,hive 之间可以相互编辑文件 chmod g+s file chmod g-s file mkdir /tmp/testsgid useradd hadoop useradd hive groupadd developteam usermod -a -G developteam hadoop 附加组 usermod -a -G developteam hive id hadoop 查看是否添加成功 chown -R :developteam /tmp/testsgid 虽然目录属组已为developtem,但没有w权限,用户依然无法创建文件 chmod -R g+w /tmp/testsgid hadoop,hive可以创建文件,但创建文件默认的属主和属组是自己,因此无法互相修改文件内容 chmod g+s /tmp/testsgid SGID成功,2个用户默认创建文件的属组为developteam,因此可以互相修改彼此文件 chmod o+t /tmp/testsgid 2用户此时不能删除对方文件,依然可以互相修改,那些属主属组都是自己的用户不再可以强行编辑和删除对方文件 Sticky 在一个公共目录,每个人都可以创建文件,删除自己的文件,但不能删除别人的文件。冒险位 chmod o+t DIR chmod o-t DIR 三位组合 suid sgid sticky 000 001 * 110 * * chmod 1755 /tmp/testdir sticky 2755 sgid 3755 sgid sticky 4755 suid 5755 suid sticky 6755 suid sgid 7755 suid sgid sticky umask 0002

FACL 适用场景 jerry访问tom文件时候需要相应权限,应该如何设置呢? 如果用户是把jerry设为tom的others是一种办法,但others范围太广,不只是jerry一个人。 如果把jerry属组改为tom也可以,但是普通用户没有权限使用chown命令改变自己的属组。 那该怎么办呢?FACL的作用就体现出来了。FACL:Filesystem Access Control List 利用文件扩展属性保存额外的访问权限注意:复制文件,归档文件,很可能丢失属性,除非使用相关命令的特殊选项。 普通文件权限生效过程:Owner-->Group-->Ohter如何知道文件是否有FACL? ls -l filename
-rw-rw-r--+ 右侧结尾带有+号则说明此文件有FACL扩展属性FACL命令 getfacl 查看
filename
setfacl 设置 -m设定 u:username:permfilesetfacl 用户 -m u:hadoop:rw inittab g:groupname:permfilesetfacl 组 -m g:developteam:rw inittab #目录下的文件继承该目录的FACL d:u:username:permfilesetfacl -m d:u:hadoop:rw inittab d:g:username:permfilesetfacl -m d:g:hadoop:rw inittab -x取消 u:username filesetfacl -x u:hadoop inittab g:groupname filesetfacl -x g:developteam inittab注意:文件权限(perm+FACL):Owner-->FACL,User-->Group-->FACL,Group-->Other

本文出自 “星矢” 博客,转载请与作者联系!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: