Unix/Linux特殊権限


  • Unix/Linuxシステム上の共有ディレクトリ設定と特殊権限設定
  • 特殊な権限のタイプ
    setuid
    setuid設定ファイル実行時に所有者に切り替える権限
    rootのみがアクセスできるファイルやコマンドには、機能的に一般ユーザーとしてアクセスする必要があります.
  • setuidの場合、root権限で実行されるため、セキュリティが悪いため、setuidが設定されているファイルを最小限に抑えることをお勧めします.
  • setgid
    setgid設定ファイル実行時にその所有者グループに切り替える権限
    通常のファイルグループのメンバーは、ファイル所有者のグループに関係なく、ディレクトリ内のすべてのファイルにアクセスする必要がある共有ディレクトリに便利です.
  • setgidはsetuidと同様に安全であるため、
  • の最低限のメンテナンスが必要である.
    sticky bit
    sticky bitを設定するディレクトリは777個のタスクを持つファイルを持つ人だけが削除でき、すべてのユーザーが実行読み取りを変更または作成することができます.
    コアは777個のスーパータスクを持つディレクトリですが、ファイルを作成した勘定科目とルート勘定科目しか削除できません.
    特殊な権限の確認
    Unixシステムは16 bitを使用してファイルの権限とファイルタイプを表し、その意味は以下の通りである.
    4 bit(ファイルタイプ)3 bit(特殊権限)3 bit(所有者アクセス)3 bit(グループ所有者アクセス)-3 bit(その他のユーザーアクセス)
    2番目の3 bitで特殊権限をチェックして付与できます
    statコマンドのアクセスエントリとls-alを表示することで、ファイルシステム権限を表示できます.
    setuidのチェック
    $ stat test
      File: test
      Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
    Device: fd01h/64769d	Inode: 3408051     Links: 1
    Access: (4755/-rwsr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2021-12-21 13:27:50.333437618 +0900
    Modify: 2021-12-21 13:27:50.333437618 +0900
    Change: 2021-12-21 13:28:34.306955587 +0900
     Birth: -
    
    $ ls -al test
    -rwsr-xr-x 1 root root 0 Dec 21 13:27 test
    setgidの確認
    $ stat test
      File: test
      Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
    Device: fd01h/64769d	Inode: 3408051     Links: 1
    Access: (2755/-rwxr-sr-x)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2021-12-21 13:27:50.333437618 +0900
    Modify: 2021-12-21 13:27:50.333437618 +0900
    Change: 2021-12-21 13:29:12.596275893 +0900
     Birth: -
     
    $ ls -al test
    -rwxr-sr-x 1 root root 0 Dec 21 13:27 test
    チェックsticky bit
    $ stat tmp
      File: tmp
      Size: 4096      	Blocks: 8          IO Block: 4096   directory
    Device: fd01h/64769d	Inode: 3670017     Links: 70
    Access: (1777/drwxrwxrwt)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2021-12-21 10:50:56.913827436 +0900
    Modify: 2021-12-21 13:25:19.664236075 +0900
    Change: 2021-12-21 13:25:19.664236075 +0900
     Birth: -
     
    $ ls -al test
    -rwxrwxrwt 1 root root 0 Dec 21 13:27 test
    特殊権限の検索
    find /bin /usr/bin /sbin -perm -4000 -o -perm -4000 |xargs ls -l
    find /bin /usr/bin /sbin -perm -2000 -o -perm -2000 |xargs ls -l
    find /bin /usr/bin /sbin -perm -1000 -o -perm -1000 |xargs ls -l
    特別な権限
    //setuid
    chmod 4755 setuid-prog
    //setgid
    chmod 2755 setgid-prog
    //sticky bit
    chmod -R 1777 /opt/mytmp
    所有者およびルート以外のユーザーがディレクトリにstickyビットを持つファイルを変更および削除しようとした場合、次の操作はできません.
    $ mv test test2
    mv: cannot move 'test' to 'test2': Operation not permitted
    特殊なアクセス権のリカバリ
    // setuid 회수
    $ chmod u-s filename 
    // setgid 회수
    $ chmod g-s filename
    // sticky bit 회수
    $ chmod o-t filename name
    参考資料
  • https://www.lesstif.com/lpt/linux-setuid-setgid-sticky-bit-93127311.html