유효한 사용자의 uid 및 gid를 사용하더라도 원격 cifs 공유는 루트로만 마운트할 수 있습니다.
이것했다수년간의 작업 후에도 fstab은 동일하게 유지됩니다. 저는 지속적으로 패치를 적용하고 있어서(openSUSE Leap 15.3) 뭔가 문제가 있거나 더 이상 사용되지 않는지 궁금합니다. 명확한 대답이 없다면 이 문제를 가장 잘 해결할 수 있는 방법은 무엇입니까?
# whoami
root
# uname -a
Linux my_user7 5.3.18-59.40-preempt #1 SMP PREEMPT Mon Jan 3 18:43:20 UTC 2022 (34edd9c) x86_64 x86_64 x86_64 GNU/Linux
# ls -lah /external/
total 0
drwxr-xr-x 1 root root 76 Apr 13 2021 .
drwxr-xr-x 1 root root 422 Sep 4 14:26 ..
drwxr-xr-x 1 my_user users 0 Jul 28 2018 Data1
drwxr-xr-x 1 my_user users 0 Nov 26 2019 Data2
drwxr-xr-x 1 my_user users 0 Jul 27 2018 Data3
drwxr-xr-x 1 my_user users 0 Jul 27 2018 Data4
drwxr-xr-x 1 my_user users 0 Jul 27 2018 Data5
drwxr-xr-x 1 my_user users 0 Apr 13 2021 Data6
# mount -v -t cifs -o username=my_user,password=my_pass,vers=1.0,uid=my_user,gid=users //192.168.1.1/Data5 /external/Data5
mount.cifs kernel mount options: ip=192.168.1.1,unc=\\192.168.1.1\Data5,vers=1.0,uid=1000,gid=100,user=my_user,pass=********
# ls -lah /external/
total 0
drwxr-xr-x 1 root root 76 Apr 13 2021 .
drwxr-xr-x 1 root root 422 Sep 4 14:26 ..
drwxr-xr-x 1 my_user users 0 Jul 28 2018 Data1
drwxr-xr-x 1 my_user users 0 Nov 26 2019 Data2
drwxr-xr-x 1 my_user users 0 Jul 27 2018 Data3
drwxr-xr-x 1 my_user users 0 Jul 27 2018 Data4
drwxrwxrwx 1 root root 0 Jul 27 14:14 Data5
drwxr-xr-x 1 my_user users 0 Apr 13 2021 Data6
# id my_user
uid=1000(my_user) gid=100(users) groups=491(cdrom),463(vboxusers),100(users)
내가 무엇을 놓치고 있나요?
미리 감사드립니다.
편집: 추가 정보...
mount cifs는 루트로만 실행할 수 있습니다.
# whoami
my_user
# mount -v -t cifs -o username=my_user,password=my_pass,vers=1.0,uid=my_user,gid=users //192.168.1.1/Data5 /external/Data5
This program is not installed setuid root - "user" CIFS mounts not supported.
sudo하면 잘 돌아가는데
# sudo mount -v -t cifs -o username=my_user,password=my_pass,vers=1.0,uid=my_user,gid=users //192.168.1.1/Data5 /external/Data5
mount.cifs kernel mount options: ip=192.168.1.1,unc=\\192.168.1.1\Data5,vers=1.0,uid=1000,gid=100,user=my_user,pass=********
그러나 최종 결과는 동일합니다. 루트로 마운트합니다.
# ls -lah /external/
total 0
drwxr-xr-x 1 root root 76 Apr 13 2021 .
drwxr-xr-x 1 root root 422 Sep 4 14:26 ..
drwxr-xr-x 1 my_user users 0 Jul 28 2018 Data1
drwxr-xr-x 1 my_user users 0 Nov 26 2019 Data2
drwxr-xr-x 1 my_user users 0 Jul 27 2018 Data3
drwxr-xr-x 1 my_user users 0 Jul 27 2018 Data4
drwxrwxrwx 1 root root 0 Jul 27 14:14 Data5
drwxr-xr-x 1 my_user users 0 Apr 13 2021 Data6
내 fstab은 다음과 같습니다
# cat /etc/fstab | grep Data5
//192.168.1.1/Data5 /external/Data5 cifs user,nofail,x-systemd.device-timeout=10,x-systemd.automount,x-systemd.idle-timeout=60,uid=my_user,gid=users,username=my_user,password=my_pass,vers=1.0 0 0
어느 것이 성공적으로 실행됩니까?
# sudo mount -a
하지만 여전히 루트로 설치되어 있습니다
# ls -lah /external/
total 16K
drwxr-xr-x 1 root root 76 Apr 13 2021 .
drwxr-xr-x 1 root root 422 Sep 4 14:26 ..
drwxr-xr-x 1 my_user users 12K Nov 4 14:14 Data1
drwxr-xr-x 8 my_user users 170 May 6 2021 Data2
drwxr-xr-x 2 my_user users 4.0K Oct 4 10:04 Data3
drwxr-xr-x 5 my_user users 110 Nov 19 12:02 Data4
drwxrwxrwx 1 root root 0 Jul 27 14:14 Data5
drwxr-xr-x 1 my_user users 0 Apr 13 2021 Data6
아직도 혼란스러워요!
편집 2...
부분적인 솔루션.
forceuid 및 forcegid 고정 소유권을 추가했지만 file_mode 및 dir_mode를 사용해도 모드를 설정할 수 없습니다.
# mount -v -t cifs -o username=my_user,password=my_pass,uid=my_user,gid=users,forceuid,forcegid,file_mode=0755,dir_mode=0755,vers=1.0 //192.168.1.1/Data5 /external/Data5
mount.cifs kernel mount options: ip=192.168.1.1,unc=\\192.168.1.1\Data5,forceuid,forcegid,file_mode=0755,dir_mode=0755,vers=1.0,uid=1000,gid=100,user=my_user,pass=********
# ls -lah /external/
total 0
drwxr-xr-x 1 root root 76 Jan 25 14:20 .
drwxr-xr-x 1 root root 422 Sep 4 14:26 ..
drwxr-xr-x 1 my_user users 0 Jul 28 2018 Data1
drwxr-xr-x 1 my_user users 0 Nov 26 2019 Data2
drwxr-xr-x 1 my_user users 0 Jul 27 2018 Data3
drwxr-xr-x 1 my_user users 0 Jul 27 2018 Data4
drwxrwxrwx 1 my_user users 0 Jul 27 14:14 Data5
drwxr-xr-x 1 my_user users 0 Apr 13 2021 Data6
이제 패턴만 파악하면 되는데...
답변1
(a) 공유에 액세스하는 유일한 사람이고 (b) 어쨌든 모드 변경이 CIFS 파일 시스템에 다시 기록되지 않기 때문에 모드가 777인지 755인지는 중요하지 않다는 생각이 들었습니다. 따라서 다음 방법으로 문제가 해결됩니다.
# mount -v -t cifs -o username=my_user,password=my_pass,uid=my_user,gid=users,forceuid,forcegid,vers=1.0 //192.168.1.1/Data5 /external/Data5
mount.cifs kernel mount options: ip=192.168.1.1,unc=\\192.168.1.1\Data5,forceuid,forcegid,file_mode=0755,dir_mode=0755,vers=1.0,uid=1000,gid=100,user=my_user,pass=********
# ls -lah /external/
total 0
drwxr-xr-x 1 root root 76 Jan 25 14:20 .
drwxr-xr-x 1 root root 422 Sep 4 14:26 ..
drwxr-xr-x 1 my_user users 0 Jul 28 2018 Data1
drwxr-xr-x 1 my_user users 0 Nov 26 2019 Data2
drwxr-xr-x 1 my_user users 0 Jul 27 2018 Data3
drwxr-xr-x 1 my_user users 0 Jul 27 2018 Data4
drwxrwxrwx 1 my_user users 0 Jul 27 14:14 Data5
drwxr-xr-x 1 my_user users 0 Apr 13 2021 Data6
그리고 fstab에 해당하는 내용은 다음과 같습니다.
# cat /etc/fstab | grep Data5
//192.168.1.1/Data5 /external/Data5 cifs user,nofail,x-systemd.device-timeout=10,x-systemd.automount,x-systemd.idle-timeout=60,uid=my_user,gid=users,credentials=/root/.data5cred,vers=1.0,forceuid,forcegid 0 0
이것이 누군가에게 도움이 되기를 바랍니다.
참고 1: 권리를 수정하는 솔루션을 아는 사람이 있으면 학습 관점에서 여전히 관심이 있습니다.
참고 2: 갑자기 forceuid 및 forcegid를 지정해야 하는 이유를 아는 사람이 있으면 그렇게 하겠습니다.매우듣고 싶으시다면!
모두들 건배하세요!
답변2
귀하의 의견에 따르면 mount.cifs
SUID가 아니므로 루트가 아닌 사용자로 설치를 수행할 수 없습니다. /bin/mount
그러나 에 나열된 경로만 사용할 수 있습니다 /etc/fstab
.
이것이 이전에 작동했다면 누군가가 SUID 비트를 설정했을 가능성이 높으며 /sbin/mount.cifs
이로 인해 사람들이 화를 낼 것입니다.
/etc/fstab
제한된 파일에 포함된 로그인 세부 정보와 함께 세부 정보를 입력하는 것이 좋습니다 . 자세한 내용은 에 나와 있지만 man mount.cifs
다음과 같습니다.
//192.168.1.1/Data5 /external/Data5 cifs username=my_user,credentials=<some file>,user 0 0
여기에는 some file
사용자 이름, 비밀번호 및 도메인이 포함되어야 합니다. 자세한 내용은 매뉴얼 페이지를 참조하세요.
답변3
내 개인 정보를 사용하여 연결하려면 모든 사람이 볼 수 있도록 공개 서버에서 내 개인 정보를 교환해야 합니다.
sudo touch cred.txt
echo "USER hangbroktim PASS CreepyPoniesInTheNight34767248932654678497632785468932458769823584" >> cred.txt
mount -v -t cifs -o passloader cred.txt