Linux雜記2

junwind發表於2021-02-25
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 225 11:28 /etc/shadow

    可以看到除了root外,一般使用者是沒有任何許可權的,但是使用者還是可以修改自己的密碼?
    一般使用者啟動的程式,屬主,屬組是改使用者,再看下passwd命令
    [root@localhost ~]# ll `which passwd`
    -rwsr-xr-x. 1 root root 27856 41 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 225 15:41 abc    可以看到檔案許可權是644
    [xqw@localhost ~]$ 
    [xqw@localhost ~]$ mkdir dir
    [xqw@localhost ~]$ ll -d dir
    drwxr-xr-- 2 xqw xqw 6 225 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 協議》,轉載必須註明作者和本文連結
六月的風