04_02_权限及权限管理
权限管理:
r:对文件可使用cat more less等命令查看其内容。对于目录,可使用ls命令,单不能切换进此目录,也不能使用ls -l
w:对于文件,可编辑。对于目录可创建文件
x:对于文件,可执行。对于目录,可用使用cd,ls -l查看详细内容
三类用户:
u:属主
g:属组
o:其他用户
如何改变三类用户的相关权限
chown:改变属主(只有管理员可用使用此命令),对于目录一样生效
#chown USERNAME file,...
例:chown hadoop /tmp/abc
chown hadoop /tmp/hi (hi为目录)使用ls -ld /tmp/hi查看(因为是目录,要加d选项,否则看到的是目录中的文件)
-R:修改目录及其内部文件的属主
--reference=/path/to/somefile file,...:参考,将后面的文件属主属组(一起改)改为跟前面那个文件一样
chown USERNAME:GRPNAME file,...
chown USERNAME.GRPNAME file,... 两命令相同。同时更改属主属组,不加USERNAME可以只改变属组。
可使用reference,例:chown --reference
chgrp:改变属组(只有管理员可用使用此命令),用法和chown一样
chmod:修改文件权限
修改三类用户权限:
chmod MODE file,...(MODE为十进制数字,如644,75=075)
-R:
--reference=/path/to/somefile file,...:
例:chmod 750(rwxr-x---) /tmp/abc
修改某类用户或某些类用户权限:
u,g,o,a
chmod 用户类别=MODE file,...
例:chmod u=rwx /tmp/abc 属主改为读写执行(u=7这样写不行)
chmod o=rx /tmp/abc 其他用户改为读和执行
chmod o=rx,g=rx /tmp/abc 等同于chmod go=rx /tmp/abc
chmod g=rx,o= /tmp/abc
修改某类用户的某位或某些位权限:
u,g,o,a
chmod 用户类别=|-MODE file,...
例:chmod u+x,g-x /tmp/abc:增加属主执行权限,去掉属组执行权限
chmod a+wx /tmp/abc:三类用户同时改,a可以省略
练习:
1、新建一个没有家目录的用户openstack
#useradd -M openstack 验证:finger openstack,ls /home,id openstack
2、复制/etc/skel为/home/openstack
#cp -r /etc/skel /home/openstack 验证:ls -l /home,ls -l /home/openstack -a
3、改变/home/openstack及其内部文件的属主属组均为openstack
#chown -R openstack:openstack /home/openstack 验证:ls -la /home/openstack
4、/home/openstack及其内部文件,属组和其它用户没有任何访问权限
#chmod -R go= /home/openstack 验证:ls -ld /home/openstack,ls -la /home/openstack
注意:每做一步,及时验证(全部忘记加选项)最后验证:su - openstack
权限限制对管理员无用
ls -l /etc/passwd r--------为什么可以改密码
权限位s
手动添加一个用户hive,基本组为hive(id:5000),附加组mygroup:
tail /etc/group
nano /etc/group
添加一行:hive:x:5000
mygroup组后加hive:mygroup:x:504:user3,hive
tail /etc/passwd
nano /etc/passwd
添加一行:hive:x:5000:5000:Hive:/home/hive:/bin/bash
tail /etc/shadow
nano /etc/shadow
添加一行:hive:!!:15765:0:99999:7:::
15765:是上次修改密码时间,是当天,可用bc(计算器)计算
#date +%s(到今天为止的秒数)
#bc
#秒数/86400
#quit退出
复制家目录:
cp -r /etc/skel /home/hive
chown -R hive.hive /home/hive/
chown -R go= /home/hive
验证一下:ls -ld /home/hive
ls -la /home/hive
su - hive
id
无密码可以使用管理员su过去,但是不能登录。要想登录需要生成一个密码
可用passwd
纯手动:可使用openssl passwd输入密码后可生成一个密码串,但是没有加盐
whatis passwd
man sslpasswd
sslpasswd
-1:指定MD5算法
-salt:指定杂质
openssl passwd -1 -salt '12345678'
输入密码后生成字符串复制粘贴在/etc/shadow下两个叹号的位置
登录测试,用户创建完成
cd /tmp
touch hellosa
ls -l hellosa 默认权限644
mkdir testdir
ls -ld testdir 默认权限755
切换做一个普通用户(hive):
touch hellosa
ls -l hellosa 默认权限665
mkdir testdir
ls -ld testdir 默认权限775
umask:遮罩码,反向掩码
umask 查看,管理员下是022,普通用户下是002
创建文件时 666-umask
创建目录时 777-umask
#umask 显示当前umask
#umask 022 umask改为022
文件默认不能具有执行权限,如果算得的结果有执行权限,则将其权限加1
例子:umask 023
文件:666-023=643 验证为644.因为文件默认不能有执行权限,如果确有就加1
目录:777-023=754 验证为754
不想让其他用户有任何权限则可用将umask改为027.用户重新登录后,又变为002
站在用户的角度来说,SHELL的类型:
登录式shell
正常通过某终端登录
su - USERNAME 完全切换
su -l USERNAME
非登录式shell:
su USERNAME 半切换。不读取环境配置文件/etc/profile和~/.bash_profile
图形终端下打开命令窗口
自动执行的shell脚本
bash的配置文件:
全局配置:对所有用户生效。
/etc/profile,/etc/profile.d/*.sh,/etc/bashrc
个人配置:只对个人用户生效
~/.bash_profile,~/.bashrc
profile类的文件:
设定环境变量:改/etc/profile文件,或者在/etc/profile.d/写一个.sh文件。个人配置在~/.bash_profile文件中配置。如果全局与个人冲突,以个人配置为主
运行命令或脚本
bashrc类的文件:
设定本地变量
定义命令别名
登录式shell如何读取配置文件:
/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc
非登录式shell如何配置文件:
~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh
让命令别名在个人用户下一直生效:
nano .bashrc 编辑自己家目录下的.bashrc文件
增加一行alias cls='clear'重新登录生效
登录hive用户时打招呼报时间:
nano .bash_profile
增加一行:
echo “Hello,hive.Welcome to our system.It is 'date'."
logout重新登录生效
也可以在此文件中定义umask
bash:脚本解释器