rwx許可權再次分析
對檔案
r 可讀取檔案內容
w 可編輯檔案內容
x 可執行
對目錄
r 可ls目錄下檔案
w 可建立檔案,刪除檔案
x 可cd
chown [option...] owner:group file...
chown hadoop /tmp/abc
-R 遞迴修改
chwon -R hadoop /tmp/hi
chwon [option...] --reference=rfile file... 將file的屬主參考rfile的屬主來修改
chown --reference=/tmp/abc /tmp/test 使用reference,屬主,屬組都改了
chown [-R] 屬主:屬組 file...
chown [-R] :屬組 file...
chgrp [option...] group file...
chgrp [option...] --reference=rfile file...
-R 遞迴修改
chgrp mygroup /tmp/abc
chgrp -R mygroup /tmp/hi
chmod MODE file...
mode 644 755
-R 遞迴修改
--reference=/path/to/somefle file... 也可以加-R
chmod 750 b.hadoop
chmod 75 b.hadoop 實際是075
chmod --reference=/tmp/test /tmp/abc
u,g,o,a chmod ugoa=rwx
chmod u=rwx /tmp/abc
chmod g=rw /tmp/abc
chmod o=rx /tmp/abc
chmod g=r,o=r /tmp/abc
chmod go=rw /tmp/abc
chmod g=rx,o= /tmp/abc
chmod u-x /tmp/abc
chmod u+x,g-x /tmp/abc
chmod a+x /tmp/abc a還可省略
chmod -x /tmp/abc
chmod u-wx /tmp/abc
1. 新建一個沒有家目錄的使用者 openstack
useradd -M openstack
finger openstack
tail -1 /etc/passwd
ll /home
tail -1 /etc/group
id openstack
2. 複製 /etc/skel為/home/openstack
cp -r /etc/skel /home/openstack
ll /home
3. 改變/home/openstack及其內部檔案的屬主屬組均為openstack
chonw -R openstack:openstack /home/openstack
ll /home
4. /home/openstack及其內部檔案,屬組和其它使用者沒有任何訪問許可權
chmod -R go= /home/openstack
驗證:su - openstack 是否正常
注意:執行的每一步命令,都需要驗證
看一個問題:
[root@localhost ~]# ll /etc/shadow
---------- 1 root root 1163 2月 25 11:28 /etc/shadow
可以看到除了root外,一般使用者是沒有任何許可權的,但是使用者還是可以修改自己的密碼?
一般使用者啟動的程式,屬主,屬組是改使用者,再看下passwd命令
[root@localhost ~]# ll `which passwd`
-rwsr-xr-x. 1 root root 27856 4月 1 2020 /usr/bin/passwd
可以發現,有一個特殊許可權s在屬主上,表示啟動的程式,保持為該檔案的屬主
手動新增一個使用者 hive,基本組hive,id都為5000,附加組mygroup?
vi /etc/group
mygroup:x:501:hive
hive:x:5000
vi /etc/passwd
hive:x:5000:5000:Hive:/home/hive:/bin/bash
vi /etc/shadow
hive:!!:18683:0:99999:7:::
計算一下天數
date +%s
bc
scale=3 設定保留幾位小數點
quit 退出
1614235809/86400
cp -r /etc/skel /home/hive
chown -R hive:hive /home/hive/
chmod -R go= /home/hive/
su - hive
id
還需要生成密碼才能登入
openssl passwd
-1 md5加密
-salt 加鹽 一般為8位
openssl passwd -1 -salt '12345678'
問題:建立檔案時,我們並沒設定許可權,但系統給了預設許可權,這個許可權是依據什麼呢?
root --- 檔案是644, 目錄是755
一般使用者--- 檔案 664 , 目錄 775
注意:檔案一般是不給x許可權的
umask 0022 ---root
目錄 777-022 = 755
檔案 666-022 = 644
0002 --- 一般使用者
[xqw@localhost ~]$ umask
0002
[xqw@localhost ~]$ umask 022 設定umask
[xqw@localhost ~]$ umask
0022
問題:設定一個普通使用者的umask為023 ,建立檔案和目錄的許可權是?
檔案 666-023 = 643
目錄 777-023 = 754
[xqw@localhost ~]$ umask 023
[xqw@localhost ~]$ umask
0023
[xqw@localhost ~]$ touch abc
[xqw@localhost ~]$ ll abc
-rw-r--r-- 1 xqw xqw 0 2月 25 15:41 abc 可以看到檔案許可權是644
[xqw@localhost ~]$
[xqw@localhost ~]$ mkdir dir
[xqw@localhost ~]$ ll -d dir
drwxr-xr-- 2 xqw xqw 6 2月 25 15:41 dir 可以看到目錄許可權是754
[xqw@localhost ~]$
為什麼abc檔案的許可權是644,而不是643呢?
我們先看下643是什麼樣的 rw-r---wx 前面說了檔案的許可權不能給x,如果計算有x,則加1
如果不想讓其他使用者具有任何許可權,可以將umask改為027
注意計算為-1,其實是0
666-027 = 640
注意:命令列中直接umask修改,退出shell後即失效;要寫在檔案中才能永久保持配置
本作品採用《CC 協議》,轉載必須註明作者和本文連結