10.1 基本权限
10.1.1 权限分类
权限分为r, w, x
1、对于文件来说:
r:可读,可以使用类似cat等命令查看文件内容;
w:可写,可以编辑或删除此文件;
x: 可执行,eXacutable,可以命令提示符下当作命令提交给内核运行;
2、对于目录来说:
r: 可以对此目录执行ls以列出内部的所有文件;
w: 可以在此目录创建文件;
x: 可以使用cd切换进此目录,也可以使用ls -l查看内部文件的详细信息;
3、rwx和数值对照关系
rwx:
r--:只读
r-x:读和执行
---:无权限
0 000 ---:无权限
1 001 --x: 执行
2 010 -w-: 写
3 011 -wx: 写和执行
4 100 r--: 只读
5 101 r-x: 读和执行
6 110 rw-: 读写
7 111 rwx: 读写执行
755:rwxr-xr-x
4、对应三类用户:
u: 属主 g: 属组 o: 其它用户
10.2 特殊权限(passwd中显示s的权限)
10.2.1 特殊权限分类
1、SUID:
运行某程序时,相应进程的属主是程序文件自身的属主,而不是启动者;
chmod u+s FILE
chmod u-s FILE
如果FILE本身原来就有执行权限,则SUID显示为s;否则显示S;
2、SGID:
运行某程序时,相应进程的属组是程序文件自身的属组,而不是启动者所属的基本组;
chmod g+s FILE
chmod g-s FILE
组develop team,用户 hadoop, hbase, hive
在/tmp/project/文件夹中给其分配SGID权限,则develop team里的所有用户都可以更改删除任何文件
develop
3、Sticky:
在一个公共目录,每个都可以创建文件,删除自己的文件,但不能删除别人的文件;
chmod o+t DIR
chmod o-t DIR
4、组合及对应数字
SUID SGID Sticky
000:
001:
...
110:
111:
chmod 5755 /backup/test(5表示特殊权限)
umask 0022
umask
10.3 chown:
改变文件属主(只有管理员可以使用此命令)
# chown USERNAME file,...将后面文件的属主改为指定用户
-R: 修改目录及其内部文件的属主
--reference=/path/to/somefile file,...将文件的属主属组更改为和reference对应文件一样
# chgrp GRPNAME file,...更改文件属组为指定的group
-R
--reference=/path/to/somefile file,…
[root@Daniel-R480 tmp]# chown apache hi
[root@Daniel-R480 tmp]# ll
total 12
-rw-r--r-- 1 apache root 0 Jun 4 18:30 hi
-rwx------ 1 root root 4733 Jan 29 2019 ks-script-5qnQJp
-rwx------ 1 root root 836 Jan 29 2019 ks-script-QveTmi
-rw------- 1 root root 0 Jan 29 2019 yum.log
[root@Daniel-R480 tmp]# chown --reference=./yum.log ./hi
[root@Daniel-R480 tmp]# ll
total 12
-rw-r--r-- 1 root root 0 Jun 4 18:30 hi
-rwx------ 1 root root 4733 Jan 29 2019 ks-script-5qnQJp
-rwx------ 1 root root 836 Jan 29 2019 ks-script-QveTmi
-rw------- 1 root root 0 Jan 29 2019 yum.log
[root@Daniel-R480 tmp]#
chown USERNAME:GRPNAME file,…
chown USERNAME.GRPNAME file,…
[root@Daniel-R480 tmp]# ll
total 12
-rw-r--r-- 1 root root 0 Jun 4 18:30 hi
-rwx------ 1 root root 4733 Jan 29 2019 ks-script-5qnQJp
-rwx------ 1 root root 836 Jan 29 2019 ks-script-QveTmi
-rw------- 1 root root 0 Jan 29 2019 yum.log
[root@Daniel-R480 tmp]#
[root@Daniel-R480 tmp]#
[root@Daniel-R480 tmp]# chown apache:apache ./hi
[root@Daniel-R480 tmp]# ll
total 12
-rw-r--r-- 1 apache apache 0 Jun 4 18:30 hi
-rwx------ 1 root root 4733 Jan 29 2019 ks-script-5qnQJp
-rwx------ 1 root root 836 Jan 29 2019 ks-script-QveTmi
-rw------- 1 root root 0 Jan 29 2019 yum.log
[root@Daniel-R480 tmp]# chown :root /tmp/hi
[root@Daniel-R480 tmp]# ll
total 12
-rw-r--r-- 1 apache root 0 Jun 4 18:30 hi
-rwx------ 1 root root 4733 Jan 29 2019 ks-script-5qnQJp
-rwx------ 1 root root 836 Jan 29 2019 ks-script-QveTmi
-rw------- 1 root root 0 Jan 29 2019 yum.log
[root@Daniel-R480 tmp]# chown --reference=/tmp/yum.log ./hi
[root@Daniel-R480 tmp]# ll
total 12
-rw-r--r-- 1 root root 0 Jun 4 18:30 hi
-rwx------ 1 root root 4733 Jan 29 2019 ks-script-5qnQJp
-rwx------ 1 root root 836 Jan 29 2019 ks-script-QveTmi
-rw------- 1 root root 0 Jan 29 2019 yum.log
[root@Daniel-R480 tmp]#
10.4 chmod:
修改文件的权限
1、修改三类用户的权限:
chmod MODE file,...
-R修改目录及其内部文件的权限
--reference=/path/to/somefile file,…
[root@Daniel-R480 tmp]# ll
total 12
-rw-r--r-- 1 root root 0 Jun 4 18:30 hi
-rwx------ 1 root root 4733 Jan 29 2019 ks-script-5qnQJp
-rwx------ 1 root root 836 Jan 29 2019 ks-script-QveTmi
-rw------- 1 root root 0 Jan 29 2019 yum.log
[root@Daniel-R480 tmp]# chmod 777 ./hi
[root@Daniel-R480 tmp]# ll
total 12
-rwxrwxrwx 1 root root 0 Jun 4 18:30 hi
-rwx------ 1 root root 4733 Jan 29 2019 ks-script-5qnQJp
-rwx------ 1 root root 836 Jan 29 2019 ks-script-QveTmi
-rw------- 1 root root 0 Jan 29 2019 yum.log
[root@Daniel-R480 tmp]#
2、修改某类用户或某些类用户权限:
u,g,o,a
u: 属主 g: 属组 o: 其它用户
chmod 用户类别=MODE file,...
3、修改某类用户的某位或某些位权限:
u,g,o,a
chmod 用户类别+|-MODE file,…
[root@Daniel-R480 ~]# chmod g-r inittab
[root@Daniel-R480 ~]# chmod 777 inittab
[root@Daniel-R480 ~]#
练习:
1、新建一个没有家目录的用户openstack;
# useradd -M openstack
2、复制/etc/skel为/home/openstack;
# cp -r /etc/skel /home/openstack
3、改变/home/openstack及其内部文件的属主属组均为openstack;
# chown -R openstack:openstack /home/openstack
4、/home/openstack及其内部的文件,属组和其它用户没有任何访问权限
# chmod -R go= /home/openstack
chmod -R 700 /home/openstack
[root@Daniel-R480 ~]# useradd -M openstack
[root@Daniel-R480 ~]# cp -r /etc/skel /home/openstack
[root@Daniel-R480 ~]# chown -R openstack:openstack /home/openstack
[root@Daniel-R480 ~]# chmod -R go= /home/openstack
[root@Daniel-R480 ~]# ll /home/openstack/
total 0
su - openstack(测试创建是否正常)
实验:手动添加用户hive, 基本组为hive (5000),附加组为mygroup
无密码无法登陆,但是可以用管理员账户su过去
opensll:创建密码的密文的命令
[root@Daniel-R480 ~]# groupadd -g 5000 hive
[root@Daniel-R480 ~]# groupadd mygroup
[root@Daniel-R480 ~]# useradd -g hive -G mygroup -M hive
[root@Daniel-R480 ~]# su - hive
su: warning: cannot change directory to /home/hive: No such file or directory
-bash-4.2$
10.5 umask
umask:遮罩码
666-umask:创建文件的默认权限
777-umask:创建文件夹的默认权限
[hive@Daniel-R480 ~]$ umask
0002
[hive@Daniel-R480 ~]$ umask 0022
[hive@Daniel-R480 ~]$ touch hellosa
[hive@Daniel-R480 ~]$ ll
total 0
-rw-rw-r-- 1 hive hive 0 Jun 7 09:50 hellosa
[hive@Daniel-R480 ~]$
文件默认不能具有执行权限,如果算得的结果中有执行权限,则将其权限加1;
例:umask: 023
文件权限:666-023=643 X
目录权限:777-023=754
[hive@Daniel-R480 ~]$
[hive@Daniel-R480 ~]$ umask 023
[hive@Daniel-R480 ~]$ touch hellosa
[hiv1e@Daniel-R480 ~]$ mkdir test
[hive@Daniel-R480 ~]$ ll
total 0
-rw-r--r-- 1 hive hive 0 Jun 7 09:52 hellosa
drwxr-xr-- 1 hive hive 4096 Jun 7 09:52 test
[hive@Daniel-R480 ~]$
用户重新登陆以后umask会重新配置,恢复默认
10.6 SHELL
站在用户登录的角度来说,SHELL的类型:
1、登录式shell:(完全切换)
正常通过某终端登录
su - USERNAME
su -l USERNAME
2、非登录式shell:(半切换)
su USERNAME
图形终端下打开命令窗口
自动执行的shell脚本
10.7 bash的配置文件:
1、全局配置文件
/etc/profile, /etc/profile.d/*.sh, /etc/bashrc
2、个人配置文件
~/.bash_profile, ~/.bashrc
用户登录时优先使用个人配置文件
3、profile类的文件:
设定环境变量
运行命令或脚本
4、bashrc类的文件:
设定本地变量
定义命令别名
5、shell如何读取配置文件?
登录式
/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc
非登录式
~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh
设置用户登录时显示hello
</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p> [root@Daniel-R480 ~]# vim ./.bash_profile</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p> [root@Daniel-R480 ~]# su - root</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p> Last login: Mon Jun 7 10:03:01 CST 2021 on tty1</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p> hello</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p> [root@Daniel-R480 ~]#</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p># .bash_profile</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p># Get the aliases and functions</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>if [ -f ~/.bashrc ]; then</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p> . ~/.bashrc</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>fi</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p># User specific environment and startup programs</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>PATH=$PATH:$HOME/bin</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>export PATH</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>echo hello</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>
bash: 脚本解释器
Comments Closed.